@ ProgramNode (location: (0...173))
├── locals: []
└── statements:
    @ StatementsNode (location: (0...173))
    └── body: (length: 7)
        ├── @ CallNode (location: (0...21))
        │   ├── receiver:
        │   │   @ CallNode (location: (0...13))
        │   │   ├── receiver: ∅
        │   │   ├── call_operator_loc: ∅
        │   │   ├── message_loc: (0...4) = "meth"
        │   │   ├── opening_loc: ∅
        │   │   ├── arguments:
        │   │   │   @ ArgumentsNode (location: (5...6))
        │   │   │   └── arguments: (length: 1)
        │   │   │       └── @ IntegerNode (location: (5...6))
        │   │   │           └── flags: decimal
        │   │   ├── closing_loc: ∅
        │   │   ├── block:
        │   │   │   @ BlockNode (location: (7...13))
        │   │   │   ├── locals: []
        │   │   │   ├── parameters: ∅
        │   │   │   ├── body: ∅
        │   │   │   ├── opening_loc: (7...9) = "do"
        │   │   │   └── closing_loc: (10...13) = "end"
        │   │   ├── flags: ∅
        │   │   └── name: "meth"
        │   ├── call_operator_loc: (13...14) = "."
        │   ├── message_loc: (14...17) = "fun"
        │   ├── opening_loc: ∅
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (18...21))
        │   │   └── arguments: (length: 1)
        │   │       └── @ CallNode (location: (18...21))
        │   │           ├── receiver: ∅
        │   │           ├── call_operator_loc: ∅
        │   │           ├── message_loc: (18...21) = "bar"
        │   │           ├── opening_loc: ∅
        │   │           ├── arguments: ∅
        │   │           ├── closing_loc: ∅
        │   │           ├── block: ∅
        │   │           ├── flags: variable_call
        │   │           └── name: "bar"
        │   ├── closing_loc: ∅
        │   ├── block: ∅
        │   ├── flags: ∅
        │   └── name: "fun"
        ├── @ CallNode (location: (23...51))
        │   ├── receiver:
        │   │   @ CallNode (location: (23...36))
        │   │   ├── receiver: ∅
        │   │   ├── call_operator_loc: ∅
        │   │   ├── message_loc: (23...27) = "meth"
        │   │   ├── opening_loc: ∅
        │   │   ├── arguments:
        │   │   │   @ ArgumentsNode (location: (28...29))
        │   │   │   └── arguments: (length: 1)
        │   │   │       └── @ IntegerNode (location: (28...29))
        │   │   │           └── flags: decimal
        │   │   ├── closing_loc: ∅
        │   │   ├── block:
        │   │   │   @ BlockNode (location: (30...36))
        │   │   │   ├── locals: []
        │   │   │   ├── parameters: ∅
        │   │   │   ├── body: ∅
        │   │   │   ├── opening_loc: (30...32) = "do"
        │   │   │   └── closing_loc: (33...36) = "end"
        │   │   ├── flags: ∅
        │   │   └── name: "meth"
        │   ├── call_operator_loc: (36...37) = "."
        │   ├── message_loc: (37...40) = "fun"
        │   ├── opening_loc: ∅
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (41...44))
        │   │   └── arguments: (length: 1)
        │   │       └── @ CallNode (location: (41...44))
        │   │           ├── receiver: ∅
        │   │           ├── call_operator_loc: ∅
        │   │           ├── message_loc: (41...44) = "bar"
        │   │           ├── opening_loc: ∅
        │   │           ├── arguments: ∅
        │   │           ├── closing_loc: ∅
        │   │           ├── block: ∅
        │   │           ├── flags: variable_call
        │   │           └── name: "bar"
        │   ├── closing_loc: ∅
        │   ├── block:
        │   │   @ BlockNode (location: (45...51))
        │   │   ├── locals: []
        │   │   ├── parameters: ∅
        │   │   ├── body: ∅
        │   │   ├── opening_loc: (45...47) = "do"
        │   │   └── closing_loc: (48...51) = "end"
        │   ├── flags: ∅
        │   └── name: "fun"
        ├── @ CallNode (location: (53...73))
        │   ├── receiver:
        │   │   @ CallNode (location: (53...66))
        │   │   ├── receiver: ∅
        │   │   ├── call_operator_loc: ∅
        │   │   ├── message_loc: (53...57) = "meth"
        │   │   ├── opening_loc: ∅
        │   │   ├── arguments:
        │   │   │   @ ArgumentsNode (location: (58...59))
        │   │   │   └── arguments: (length: 1)
        │   │   │       └── @ IntegerNode (location: (58...59))
        │   │   │           └── flags: decimal
        │   │   ├── closing_loc: ∅
        │   │   ├── block:
        │   │   │   @ BlockNode (location: (60...66))
        │   │   │   ├── locals: []
        │   │   │   ├── parameters: ∅
        │   │   │   ├── body: ∅
        │   │   │   ├── opening_loc: (60...62) = "do"
        │   │   │   └── closing_loc: (63...66) = "end"
        │   │   ├── flags: ∅
        │   │   └── name: "meth"
        │   ├── call_operator_loc: (66...67) = "."
        │   ├── message_loc: (67...70) = "fun"
        │   ├── opening_loc: ∅
        │   ├── arguments: ∅
        │   ├── closing_loc: ∅
        │   ├── block:
        │   │   @ BlockNode (location: (71...73))
        │   │   ├── locals: []
        │   │   ├── parameters: ∅
        │   │   ├── body: ∅
        │   │   ├── opening_loc: (71...72) = "{"
        │   │   └── closing_loc: (72...73) = "}"
        │   ├── flags: ∅
        │   └── name: "fun"
        ├── @ CallNode (location: (75...97))
        │   ├── receiver:
        │   │   @ CallNode (location: (75...88))
        │   │   ├── receiver: ∅
        │   │   ├── call_operator_loc: ∅
        │   │   ├── message_loc: (75...79) = "meth"
        │   │   ├── opening_loc: ∅
        │   │   ├── arguments:
        │   │   │   @ ArgumentsNode (location: (80...81))
        │   │   │   └── arguments: (length: 1)
        │   │   │       └── @ IntegerNode (location: (80...81))
        │   │   │           └── flags: decimal
        │   │   ├── closing_loc: ∅
        │   │   ├── block:
        │   │   │   @ BlockNode (location: (82...88))
        │   │   │   ├── locals: []
        │   │   │   ├── parameters: ∅
        │   │   │   ├── body: ∅
        │   │   │   ├── opening_loc: (82...84) = "do"
        │   │   │   └── closing_loc: (85...88) = "end"
        │   │   ├── flags: ∅
        │   │   └── name: "meth"
        │   ├── call_operator_loc: (88...89) = "."
        │   ├── message_loc: (89...92) = "fun"
        │   ├── opening_loc: (92...93) = "("
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (93...96))
        │   │   └── arguments: (length: 1)
        │   │       └── @ CallNode (location: (93...96))
        │   │           ├── receiver: ∅
        │   │           ├── call_operator_loc: ∅
        │   │           ├── message_loc: (93...96) = "bar"
        │   │           ├── opening_loc: ∅
        │   │           ├── arguments: ∅
        │   │           ├── closing_loc: ∅
        │   │           ├── block: ∅
        │   │           ├── flags: variable_call
        │   │           └── name: "bar"
        │   ├── closing_loc: (96...97) = ")"
        │   ├── block: ∅
        │   ├── flags: ∅
        │   └── name: "fun"
        ├── @ CallNode (location: (99...124))
        │   ├── receiver:
        │   │   @ CallNode (location: (99...112))
        │   │   ├── receiver: ∅
        │   │   ├── call_operator_loc: ∅
        │   │   ├── message_loc: (99...103) = "meth"
        │   │   ├── opening_loc: ∅
        │   │   ├── arguments:
        │   │   │   @ ArgumentsNode (location: (104...105))
        │   │   │   └── arguments: (length: 1)
        │   │   │       └── @ IntegerNode (location: (104...105))
        │   │   │           └── flags: decimal
        │   │   ├── closing_loc: ∅
        │   │   ├── block:
        │   │   │   @ BlockNode (location: (106...112))
        │   │   │   ├── locals: []
        │   │   │   ├── parameters: ∅
        │   │   │   ├── body: ∅
        │   │   │   ├── opening_loc: (106...108) = "do"
        │   │   │   └── closing_loc: (109...112) = "end"
        │   │   ├── flags: ∅
        │   │   └── name: "meth"
        │   ├── call_operator_loc: (112...113) = "."
        │   ├── message_loc: (113...116) = "fun"
        │   ├── opening_loc: (116...117) = "("
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (117...120))
        │   │   └── arguments: (length: 1)
        │   │       └── @ CallNode (location: (117...120))
        │   │           ├── receiver: ∅
        │   │           ├── call_operator_loc: ∅
        │   │           ├── message_loc: (117...120) = "bar"
        │   │           ├── opening_loc: ∅
        │   │           ├── arguments: ∅
        │   │           ├── closing_loc: ∅
        │   │           ├── block: ∅
        │   │           ├── flags: variable_call
        │   │           └── name: "bar"
        │   ├── closing_loc: (120...121) = ")"
        │   ├── block:
        │   │   @ BlockNode (location: (122...124))
        │   │   ├── locals: []
        │   │   ├── parameters: ∅
        │   │   ├── body: ∅
        │   │   ├── opening_loc: (122...123) = "{"
        │   │   └── closing_loc: (123...124) = "}"
        │   ├── flags: ∅
        │   └── name: "fun"
        ├── @ CallNode (location: (126...148))
        │   ├── receiver:
        │   │   @ CallNode (location: (126...139))
        │   │   ├── receiver: ∅
        │   │   ├── call_operator_loc: ∅
        │   │   ├── message_loc: (126...130) = "meth"
        │   │   ├── opening_loc: ∅
        │   │   ├── arguments:
        │   │   │   @ ArgumentsNode (location: (131...132))
        │   │   │   └── arguments: (length: 1)
        │   │   │       └── @ IntegerNode (location: (131...132))
        │   │   │           └── flags: decimal
        │   │   ├── closing_loc: ∅
        │   │   ├── block:
        │   │   │   @ BlockNode (location: (133...139))
        │   │   │   ├── locals: []
        │   │   │   ├── parameters: ∅
        │   │   │   ├── body: ∅
        │   │   │   ├── opening_loc: (133...135) = "do"
        │   │   │   └── closing_loc: (136...139) = "end"
        │   │   ├── flags: ∅
        │   │   └── name: "meth"
        │   ├── call_operator_loc: (139...141) = "::"
        │   ├── message_loc: (141...144) = "fun"
        │   ├── opening_loc: ∅
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (145...148))
        │   │   └── arguments: (length: 1)
        │   │       └── @ CallNode (location: (145...148))
        │   │           ├── receiver: ∅
        │   │           ├── call_operator_loc: ∅
        │   │           ├── message_loc: (145...148) = "bar"
        │   │           ├── opening_loc: ∅
        │   │           ├── arguments: ∅
        │   │           ├── closing_loc: ∅
        │   │           ├── block: ∅
        │   │           ├── flags: variable_call
        │   │           └── name: "bar"
        │   ├── closing_loc: ∅
        │   ├── block: ∅
        │   ├── flags: ∅
        │   └── name: "fun"
        └── @ CallNode (location: (150...173))
            ├── receiver:
            │   @ CallNode (location: (150...163))
            │   ├── receiver: ∅
            │   ├── call_operator_loc: ∅
            │   ├── message_loc: (150...154) = "meth"
            │   ├── opening_loc: ∅
            │   ├── arguments:
            │   │   @ ArgumentsNode (location: (155...156))
            │   │   └── arguments: (length: 1)
            │   │       └── @ IntegerNode (location: (155...156))
            │   │           └── flags: decimal
            │   ├── closing_loc: ∅
            │   ├── block:
            │   │   @ BlockNode (location: (157...163))
            │   │   ├── locals: []
            │   │   ├── parameters: ∅
            │   │   ├── body: ∅
            │   │   ├── opening_loc: (157...159) = "do"
            │   │   └── closing_loc: (160...163) = "end"
            │   ├── flags: ∅
            │   └── name: "meth"
            ├── call_operator_loc: (163...165) = "::"
            ├── message_loc: (165...168) = "fun"
            ├── opening_loc: (168...169) = "("
            ├── arguments:
            │   @ ArgumentsNode (location: (169...172))
            │   └── arguments: (length: 1)
            │       └── @ CallNode (location: (169...172))
            │           ├── receiver: ∅
            │           ├── call_operator_loc: ∅
            │           ├── message_loc: (169...172) = "bar"
            │           ├── opening_loc: ∅
            │           ├── arguments: ∅
            │           ├── closing_loc: ∅
            │           ├── block: ∅
            │           ├── flags: variable_call
            │           └── name: "bar"
            ├── closing_loc: (172...173) = ")"
            ├── block: ∅
            ├── flags: ∅
            └── name: "fun"
