@ ProgramNode (location: (0...211))
├── locals: []
└── statements:
    @ StatementsNode (location: (0...211))
    └── body: (length: 5)
        ├── @ BeginNode (location: (0...20))
        │   ├── begin_keyword_loc: (0...5) = "begin"
        │   ├── statements:
        │   │   @ StatementsNode (location: (6...7))
        │   │   └── body: (length: 1)
        │   │       └── @ CallNode (location: (6...7))
        │   │           ├── receiver: ∅
        │   │           ├── call_operator_loc: ∅
        │   │           ├── message_loc: (6...7) = "a"
        │   │           ├── opening_loc: ∅
        │   │           ├── arguments: ∅
        │   │           ├── closing_loc: ∅
        │   │           ├── block: ∅
        │   │           ├── flags: variable_call
        │   │           └── name: "a"
        │   ├── rescue_clause: ∅
        │   ├── else_clause: ∅
        │   ├── ensure_clause:
        │   │   @ EnsureNode (location: (8...20))
        │   │   ├── ensure_keyword_loc: (8...14) = "ensure"
        │   │   ├── statements:
        │   │   │   @ StatementsNode (location: (15...16))
        │   │   │   └── body: (length: 1)
        │   │   │       └── @ CallNode (location: (15...16))
        │   │   │           ├── receiver: ∅
        │   │   │           ├── call_operator_loc: ∅
        │   │   │           ├── message_loc: (15...16) = "b"
        │   │   │           ├── opening_loc: ∅
        │   │   │           ├── arguments: ∅
        │   │   │           ├── closing_loc: ∅
        │   │   │           ├── block: ∅
        │   │   │           ├── flags: variable_call
        │   │   │           └── name: "b"
        │   │   └── end_keyword_loc: (17...20) = "end"
        │   └── end_keyword_loc: (17...20) = "end"
        ├── @ BeginNode (location: (22...46))
        │   ├── begin_keyword_loc: (22...27) = "begin"
        │   ├── statements:
        │   │   @ StatementsNode (location: (29...30))
        │   │   └── body: (length: 1)
        │   │       └── @ CallNode (location: (29...30))
        │   │           ├── receiver: ∅
        │   │           ├── call_operator_loc: ∅
        │   │           ├── message_loc: (29...30) = "a"
        │   │           ├── opening_loc: ∅
        │   │           ├── arguments: ∅
        │   │           ├── closing_loc: ∅
        │   │           ├── block: ∅
        │   │           ├── flags: variable_call
        │   │           └── name: "a"
        │   ├── rescue_clause: ∅
        │   ├── else_clause: ∅
        │   ├── ensure_clause:
        │   │   @ EnsureNode (location: (32...46))
        │   │   ├── ensure_keyword_loc: (32...38) = "ensure"
        │   │   ├── statements:
        │   │   │   @ StatementsNode (location: (40...41))
        │   │   │   └── body: (length: 1)
        │   │   │       └── @ CallNode (location: (40...41))
        │   │   │           ├── receiver: ∅
        │   │   │           ├── call_operator_loc: ∅
        │   │   │           ├── message_loc: (40...41) = "b"
        │   │   │           ├── opening_loc: ∅
        │   │   │           ├── arguments: ∅
        │   │   │           ├── closing_loc: ∅
        │   │   │           ├── block: ∅
        │   │   │           ├── flags: variable_call
        │   │   │           └── name: "b"
        │   │   └── end_keyword_loc: (43...46) = "end"
        │   └── end_keyword_loc: (43...46) = "end"
        ├── @ BeginNode (location: (48...70))
        │   ├── begin_keyword_loc: (48...53) = "begin"
        │   ├── statements:
        │   │   @ StatementsNode (location: (54...55))
        │   │   └── body: (length: 1)
        │   │       └── @ CallNode (location: (54...55))
        │   │           ├── receiver: ∅
        │   │           ├── call_operator_loc: ∅
        │   │           ├── message_loc: (54...55) = "a"
        │   │           ├── opening_loc: ∅
        │   │           ├── arguments: ∅
        │   │           ├── closing_loc: ∅
        │   │           ├── block: ∅
        │   │           ├── flags: variable_call
        │   │           └── name: "a"
        │   ├── rescue_clause: ∅
        │   ├── else_clause: ∅
        │   ├── ensure_clause:
        │   │   @ EnsureNode (location: (57...70))
        │   │   ├── ensure_keyword_loc: (57...63) = "ensure"
        │   │   ├── statements:
        │   │   │   @ StatementsNode (location: (64...65))
        │   │   │   └── body: (length: 1)
        │   │   │       └── @ CallNode (location: (64...65))
        │   │   │           ├── receiver: ∅
        │   │   │           ├── call_operator_loc: ∅
        │   │   │           ├── message_loc: (64...65) = "b"
        │   │   │           ├── opening_loc: ∅
        │   │   │           ├── arguments: ∅
        │   │   │           ├── closing_loc: ∅
        │   │   │           ├── block: ∅
        │   │   │           ├── flags: variable_call
        │   │   │           └── name: "b"
        │   │   └── end_keyword_loc: (67...70) = "end"
        │   └── end_keyword_loc: (67...70) = "end"
        ├── @ BeginNode (location: (72...94))
        │   ├── begin_keyword_loc: (72...77) = "begin"
        │   ├── statements:
        │   │   @ StatementsNode (location: (78...79))
        │   │   └── body: (length: 1)
        │   │       └── @ CallNode (location: (78...79))
        │   │           ├── receiver: ∅
        │   │           ├── call_operator_loc: ∅
        │   │           ├── message_loc: (78...79) = "a"
        │   │           ├── opening_loc: ∅
        │   │           ├── arguments: ∅
        │   │           ├── closing_loc: ∅
        │   │           ├── block: ∅
        │   │           ├── flags: variable_call
        │   │           └── name: "a"
        │   ├── rescue_clause: ∅
        │   ├── else_clause: ∅
        │   ├── ensure_clause:
        │   │   @ EnsureNode (location: (81...94))
        │   │   ├── ensure_keyword_loc: (81...87) = "ensure"
        │   │   ├── statements:
        │   │   │   @ StatementsNode (location: (88...89))
        │   │   │   └── body: (length: 1)
        │   │   │       └── @ CallNode (location: (88...89))
        │   │   │           ├── receiver: ∅
        │   │   │           ├── call_operator_loc: ∅
        │   │   │           ├── message_loc: (88...89) = "b"
        │   │   │           ├── opening_loc: ∅
        │   │   │           ├── arguments: ∅
        │   │   │           ├── closing_loc: ∅
        │   │   │           ├── block: ∅
        │   │   │           ├── flags: variable_call
        │   │   │           └── name: "b"
        │   │   └── end_keyword_loc: (91...94) = "end"
        │   └── end_keyword_loc: (91...94) = "end"
        └── @ BeginNode (location: (96...211))
            ├── begin_keyword_loc: (96...101) = "begin"
            ├── statements:
            │   @ StatementsNode (location: (102...207))
            │   └── body: (length: 1)
            │       └── @ BeginNode (location: (102...207))
            │           ├── begin_keyword_loc: (102...107) = "begin"
            │           ├── statements:
            │           │   @ StatementsNode (location: (107...203))
            │           │   └── body: (length: 1)
            │           │       └── @ CallNode (location: (107...203))
            │           │           ├── receiver:
            │           │           │   @ SymbolNode (location: (107...109))
            │           │           │   ├── opening_loc: (107...108) = ":"
            │           │           │   ├── value_loc: (108...109) = "s"
            │           │           │   ├── closing_loc: ∅
            │           │           │   └── unescaped: "s"
            │           │           ├── call_operator_loc: (109...110) = "."
            │           │           ├── message_loc: (110...111) = "l"
            │           │           ├── opening_loc: ∅
            │           │           ├── arguments:
            │           │           │   @ ArgumentsNode (location: (112...203))
            │           │           │   └── arguments: (length: 1)
            │           │           │       └── @ BeginNode (location: (112...203))
            │           │           │           ├── begin_keyword_loc: (112...117) = "begin"
            │           │           │           ├── statements: ∅
            │           │           │           ├── rescue_clause: ∅
            │           │           │           ├── else_clause: ∅
            │           │           │           ├── ensure_clause:
            │           │           │           │   @ EnsureNode (location: (118...203))
            │           │           │           │   ├── ensure_keyword_loc: (118...124) = "ensure"
            │           │           │           │   ├── statements:
            │           │           │           │   │   @ StatementsNode (location: (125...199))
            │           │           │           │   │   └── body: (length: 1)
            │           │           │           │   │       └── @ CallNode (location: (125...199))
            │           │           │           │   │           ├── receiver:
            │           │           │           │   │           │   @ ConstantReadNode (location: (125...131))
            │           │           │           │   │           │   └── name: :Module
            │           │           │           │   │           ├── call_operator_loc: (131...132) = "."
            │           │           │           │   │           ├── message_loc: (132...135) = "new"
            │           │           │           │   │           ├── opening_loc: ∅
            │           │           │           │   │           ├── arguments: ∅
            │           │           │           │   │           ├── closing_loc: ∅
            │           │           │           │   │           ├── block:
            │           │           │           │   │           │   @ BlockNode (location: (136...199))
            │           │           │           │   │           │   ├── locals: []
            │           │           │           │   │           │   ├── parameters: ∅
            │           │           │           │   │           │   ├── body:
            │           │           │           │   │           │   │   @ StatementsNode (location: (141...195))
            │           │           │           │   │           │   │   └── body: (length: 1)
            │           │           │           │   │           │   │       └── @ BeginNode (location: (141...195))
            │           │           │           │   │           │   │           ├── begin_keyword_loc: (141...146) = "begin"
            │           │           │           │   │           │   │           ├── statements:
            │           │           │           │   │           │   │           │   @ StatementsNode (location: (151...156))
            │           │           │           │   │           │   │           │   └── body: (length: 1)
            │           │           │           │   │           │   │           │       └── @ BreakNode (location: (151...156))
            │           │           │           │   │           │   │           │           ├── arguments: ∅
            │           │           │           │   │           │   │           │           └── keyword_loc: (151...156) = "break"
            │           │           │           │   │           │   │           ├── rescue_clause: ∅
            │           │           │           │   │           │   │           ├── else_clause: ∅
            │           │           │           │   │           │   │           ├── ensure_clause:
            │           │           │           │   │           │   │           │   @ EnsureNode (location: (161...195))
            │           │           │           │   │           │   │           │   ├── ensure_keyword_loc: (161...167) = "ensure"
            │           │           │           │   │           │   │           │   ├── statements:
            │           │           │           │   │           │   │           │   │   @ StatementsNode (location: (168...189))
            │           │           │           │   │           │   │           │   │   └── body: (length: 1)
            │           │           │           │   │           │   │           │   │       └── @ CallNode (location: (168...189))
            │           │           │           │   │           │   │           │   │           ├── receiver:
            │           │           │           │   │           │   │           │   │           │   @ ConstantReadNode (location: (168...174))
            │           │           │           │   │           │   │           │   │           │   └── name: :Module
            │           │           │           │   │           │   │           │   │           ├── call_operator_loc: (174...175) = "."
            │           │           │           │   │           │   │           │   │           ├── message_loc: (175...178) = "new"
            │           │           │           │   │           │   │           │   │           ├── opening_loc: ∅
            │           │           │           │   │           │   │           │   │           ├── arguments: ∅
            │           │           │           │   │           │   │           │   │           ├── closing_loc: ∅
            │           │           │           │   │           │   │           │   │           ├── block:
            │           │           │           │   │           │   │           │   │           │   @ BlockNode (location: (179...189))
            │           │           │           │   │           │   │           │   │           │   ├── locals: []
            │           │           │           │   │           │   │           │   │           │   ├── parameters: ∅
            │           │           │           │   │           │   │           │   │           │   ├── body: ∅
            │           │           │           │   │           │   │           │   │           │   ├── opening_loc: (179...181) = "do"
            │           │           │           │   │           │   │           │   │           │   └── closing_loc: (186...189) = "end"
            │           │           │           │   │           │   │           │   │           ├── flags: ∅
            │           │           │           │   │           │   │           │   │           └── name: "new"
            │           │           │           │   │           │   │           │   └── end_keyword_loc: (192...195) = "end"
            │           │           │           │   │           │   │           └── end_keyword_loc: (192...195) = "end"
            │           │           │           │   │           │   ├── opening_loc: (136...138) = "do"
            │           │           │           │   │           │   └── closing_loc: (196...199) = "end"
            │           │           │           │   │           ├── flags: ∅
            │           │           │           │   │           └── name: "new"
            │           │           │           │   └── end_keyword_loc: (200...203) = "end"
            │           │           │           └── end_keyword_loc: (200...203) = "end"
            │           │           ├── closing_loc: ∅
            │           │           ├── block: ∅
            │           │           ├── flags: ∅
            │           │           └── name: "l"
            │           ├── rescue_clause: ∅
            │           ├── else_clause: ∅
            │           ├── ensure_clause: ∅
            │           └── end_keyword_loc: (204...207) = "end"
            ├── rescue_clause: ∅
            ├── else_clause: ∅
            ├── ensure_clause: ∅
            └── end_keyword_loc: (208...211) = "end"
