@ ProgramNode (location: (0...185))
├── locals: []
└── statements:
    @ StatementsNode (location: (0...185))
    └── body: (length: 10)
        ├── @ DefNode (location: (0...11))
        │   ├── name: :def
        │   ├── name_loc: (4...7) = "def"
        │   ├── receiver: ∅
        │   ├── parameters: ∅
        │   ├── body: ∅
        │   ├── locals: []
        │   ├── def_keyword_loc: (0...3) = "def"
        │   ├── operator_loc: ∅
        │   ├── lparen_loc: ∅
        │   ├── rparen_loc: ∅
        │   ├── equal_loc: ∅
        │   └── end_keyword_loc: (8...11) = "end"
        ├── @ DefNode (location: (13...32))
        │   ├── name: :ensure
        │   ├── name_loc: (22...28) = "ensure"
        │   ├── receiver:
        │   │   @ SelfNode (location: (17...21))
        │   ├── parameters: ∅
        │   ├── body: ∅
        │   ├── locals: []
        │   ├── def_keyword_loc: (13...16) = "def"
        │   ├── operator_loc: (21...22) = "."
        │   ├── lparen_loc: ∅
        │   ├── rparen_loc: ∅
        │   ├── equal_loc: ∅
        │   └── end_keyword_loc: (29...32) = "end"
        ├── @ CallNode (location: (34...68))
        │   ├── receiver: ∅
        │   ├── call_operator_loc: ∅
        │   ├── message_loc: (34...41) = "private"
        │   ├── opening_loc: ∅
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (42...68))
        │   │   └── arguments: (length: 1)
        │   │       └── @ DefNode (location: (42...68))
        │   │           ├── name: :foo
        │   │           ├── name_loc: (46...49) = "foo"
        │   │           ├── receiver: ∅
        │   │           ├── parameters: ∅
        │   │           ├── body:
        │   │           │   @ StatementsNode (location: (52...64))
        │   │           │   └── body: (length: 1)
        │   │           │       └── @ CallNode (location: (52...64))
        │   │           │           ├── receiver: ∅
        │   │           │           ├── call_operator_loc: ∅
        │   │           │           ├── message_loc: (52...55) = "bar"
        │   │           │           ├── opening_loc: ∅
        │   │           │           ├── arguments: ∅
        │   │           │           ├── closing_loc: ∅
        │   │           │           ├── block:
        │   │           │           │   @ BlockNode (location: (56...64))
        │   │           │           │   ├── locals: []
        │   │           │           │   ├── parameters: ∅
        │   │           │           │   ├── body: ∅
        │   │           │           │   ├── opening_loc: (56...58) = "do"
        │   │           │           │   └── closing_loc: (61...64) = "end"
        │   │           │           ├── flags: ∅
        │   │           │           └── name: "bar"
        │   │           ├── locals: []
        │   │           ├── def_keyword_loc: (42...45) = "def"
        │   │           ├── operator_loc: ∅
        │   │           ├── lparen_loc: ∅
        │   │           ├── rparen_loc: ∅
        │   │           ├── equal_loc: ∅
        │   │           └── end_keyword_loc: (65...68) = "end"
        │   ├── closing_loc: ∅
        │   ├── block: ∅
        │   ├── flags: ∅
        │   └── name: "private"
        ├── @ DefNode (location: (70...89))
        │   ├── name: :m
        │   ├── name_loc: (74...75) = "m"
        │   ├── receiver: ∅
        │   ├── parameters:
        │   │   @ ParametersNode (location: (76...84))
        │   │   ├── requireds: (length: 1)
        │   │   │   └── @ RequiredParameterNode (location: (76...77))
        │   │   │       └── name: :a
        │   │   ├── optionals: (length: 0)
        │   │   ├── rest: ∅
        │   │   ├── posts: (length: 0)
        │   │   ├── keywords: (length: 0)
        │   │   ├── keyword_rest:
        │   │   │   @ NoKeywordsParameterNode (location: (79...84))
        │   │   │   ├── operator_loc: (79...81) = "**"
        │   │   │   └── keyword_loc: (81...84) = "nil"
        │   │   └── block: ∅
        │   ├── body: ∅
        │   ├── locals: [:a]
        │   ├── def_keyword_loc: (70...73) = "def"
        │   ├── operator_loc: ∅
        │   ├── lparen_loc: (75...76) = "("
        │   ├── rparen_loc: (84...85) = ")"
        │   ├── equal_loc: ∅
        │   └── end_keyword_loc: (86...89) = "end"
        ├── @ DefNode (location: (91...113))
        │   ├── name: :a
        │   ├── name_loc: (108...109) = "a"
        │   ├── receiver:
        │   │   @ SourceEncodingNode (location: (95...107))
        │   ├── parameters: ∅
        │   ├── body: ∅
        │   ├── locals: []
        │   ├── def_keyword_loc: (91...94) = "def"
        │   ├── operator_loc: (107...108) = "."
        │   ├── lparen_loc: ∅
        │   ├── rparen_loc: ∅
        │   ├── equal_loc: ∅
        │   └── end_keyword_loc: (110...113) = "end"
        ├── @ StringNode (location: (115...121))
        │   ├── opening_loc: (115...117) = "%{"
        │   ├── content_loc: (117...120) = "abc"
        │   ├── closing_loc: (120...121) = "}"
        │   └── unescaped: "abc"
        ├── @ StringNode (location: (123...129))
        │   ├── opening_loc: (123...125) = "%\""
        │   ├── content_loc: (125...128) = "abc"
        │   ├── closing_loc: (128...129) = "\""
        │   └── unescaped: "abc"
        ├── @ DefNode (location: (131...149))
        │   ├── name: :a
        │   ├── name_loc: (144...145) = "a"
        │   ├── receiver:
        │   │   @ SourceFileNode (location: (135...143))
        │   │   └── filepath: "keyword_method_names.txt"
        │   ├── parameters: ∅
        │   ├── body: ∅
        │   ├── locals: []
        │   ├── def_keyword_loc: (131...134) = "def"
        │   ├── operator_loc: (143...144) = "."
        │   ├── lparen_loc: ∅
        │   ├── rparen_loc: ∅
        │   ├── equal_loc: ∅
        │   └── end_keyword_loc: (146...149) = "end"
        ├── @ DefNode (location: (151...169))
        │   ├── name: :a
        │   ├── name_loc: (164...165) = "a"
        │   ├── receiver:
        │   │   @ SourceLineNode (location: (155...163))
        │   ├── parameters: ∅
        │   ├── body: ∅
        │   ├── locals: []
        │   ├── def_keyword_loc: (151...154) = "def"
        │   ├── operator_loc: (163...164) = "."
        │   ├── lparen_loc: ∅
        │   ├── rparen_loc: ∅
        │   ├── equal_loc: ∅
        │   └── end_keyword_loc: (166...169) = "end"
        └── @ DefNode (location: (171...185))
            ├── name: :a
            ├── name_loc: (180...181) = "a"
            ├── receiver:
            │   @ NilNode (location: (175...178))
            ├── parameters: ∅
            ├── body: ∅
            ├── locals: []
            ├── def_keyword_loc: (171...174) = "def"
            ├── operator_loc: (178...180) = "::"
            ├── lparen_loc: ∅
            ├── rparen_loc: ∅
            ├── equal_loc: ∅
            └── end_keyword_loc: (182...185) = "end"
