@ ProgramNode (location: (0...444))
├── locals: []
└── statements:
    @ StatementsNode (location: (0...444))
    └── body: (length: 20)
        ├── @ CallNode (location: (0...18))
        │   ├── receiver: ∅
        │   ├── call_operator_loc: ∅
        │   ├── message_loc: (0...1) = "a"
        │   ├── opening_loc: ∅
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (2...11))
        │   │   └── arguments: (length: 2)
        │   │       ├── @ CallNode (location: (2...8))
        │   │       │   ├── receiver: ∅
        │   │       │   ├── call_operator_loc: ∅
        │   │       │   ├── message_loc: (2...3) = "b"
        │   │       │   ├── opening_loc: (3...4) = "("
        │   │       │   ├── arguments:
        │   │       │   │   @ ArgumentsNode (location: (4...7))
        │   │       │   │   └── arguments: (length: 1)
        │   │       │   │       └── @ CallNode (location: (4...7))
        │   │       │   │           ├── receiver: ∅
        │   │       │   │           ├── call_operator_loc: ∅
        │   │       │   │           ├── message_loc: (4...5) = "c"
        │   │       │   │           ├── opening_loc: ∅
        │   │       │   │           ├── arguments:
        │   │       │   │           │   @ ArgumentsNode (location: (6...7))
        │   │       │   │           │   └── arguments: (length: 1)
        │   │       │   │           │       └── @ CallNode (location: (6...7))
        │   │       │   │           │           ├── receiver: ∅
        │   │       │   │           │           ├── call_operator_loc: ∅
        │   │       │   │           │           ├── message_loc: (6...7) = "d"
        │   │       │   │           │           ├── opening_loc: ∅
        │   │       │   │           │           ├── arguments: ∅
        │   │       │   │           │           ├── closing_loc: ∅
        │   │       │   │           │           ├── block: ∅
        │   │       │   │           │           ├── flags: variable_call
        │   │       │   │           │           └── name: "d"
        │   │       │   │           ├── closing_loc: ∅
        │   │       │   │           ├── block: ∅
        │   │       │   │           ├── flags: ∅
        │   │       │   │           └── name: "c"
        │   │       │   ├── closing_loc: (7...8) = ")"
        │   │       │   ├── block: ∅
        │   │       │   ├── flags: ∅
        │   │       │   └── name: "b"
        │   │       └── @ IntegerNode (location: (10...11))
        │   │           └── flags: decimal
        │   ├── closing_loc: ∅
        │   ├── block:
        │   │   @ BlockNode (location: (12...18))
        │   │   ├── locals: []
        │   │   ├── parameters: ∅
        │   │   ├── body: ∅
        │   │   ├── opening_loc: (12...14) = "do"
        │   │   └── closing_loc: (15...18) = "end"
        │   ├── flags: ∅
        │   └── name: "a"
        ├── @ CallNode (location: (20...40))
        │   ├── receiver: ∅
        │   ├── call_operator_loc: ∅
        │   ├── message_loc: (20...21) = "a"
        │   ├── opening_loc: ∅
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (22...33))
        │   │   └── arguments: (length: 2)
        │   │       ├── @ CallNode (location: (22...28))
        │   │       │   ├── receiver: ∅
        │   │       │   ├── call_operator_loc: ∅
        │   │       │   ├── message_loc: (22...23) = "b"
        │   │       │   ├── opening_loc: (23...24) = "("
        │   │       │   ├── arguments:
        │   │       │   │   @ ArgumentsNode (location: (24...27))
        │   │       │   │   └── arguments: (length: 1)
        │   │       │   │       └── @ CallNode (location: (24...27))
        │   │       │   │           ├── receiver: ∅
        │   │       │   │           ├── call_operator_loc: ∅
        │   │       │   │           ├── message_loc: (24...25) = "c"
        │   │       │   │           ├── opening_loc: ∅
        │   │       │   │           ├── arguments:
        │   │       │   │           │   @ ArgumentsNode (location: (26...27))
        │   │       │   │           │   └── arguments: (length: 1)
        │   │       │   │           │       └── @ CallNode (location: (26...27))
        │   │       │   │           │           ├── receiver: ∅
        │   │       │   │           │           ├── call_operator_loc: ∅
        │   │       │   │           │           ├── message_loc: (26...27) = "d"
        │   │       │   │           │           ├── opening_loc: ∅
        │   │       │   │           │           ├── arguments: ∅
        │   │       │   │           │           ├── closing_loc: ∅
        │   │       │   │           │           ├── block: ∅
        │   │       │   │           │           ├── flags: variable_call
        │   │       │   │           │           └── name: "d"
        │   │       │   │           ├── closing_loc: ∅
        │   │       │   │           ├── block: ∅
        │   │       │   │           ├── flags: ∅
        │   │       │   │           └── name: "c"
        │   │       │   ├── closing_loc: (27...28) = ")"
        │   │       │   ├── block: ∅
        │   │       │   ├── flags: ∅
        │   │       │   └── name: "b"
        │   │       └── @ FloatNode (location: (30...33))
        │   ├── closing_loc: ∅
        │   ├── block:
        │   │   @ BlockNode (location: (34...40))
        │   │   ├── locals: []
        │   │   ├── parameters: ∅
        │   │   ├── body: ∅
        │   │   ├── opening_loc: (34...36) = "do"
        │   │   └── closing_loc: (37...40) = "end"
        │   ├── flags: ∅
        │   └── name: "a"
        ├── @ CallNode (location: (42...63))
        │   ├── receiver: ∅
        │   ├── call_operator_loc: ∅
        │   ├── message_loc: (42...43) = "a"
        │   ├── opening_loc: ∅
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (44...56))
        │   │   └── arguments: (length: 2)
        │   │       ├── @ CallNode (location: (44...50))
        │   │       │   ├── receiver: ∅
        │   │       │   ├── call_operator_loc: ∅
        │   │       │   ├── message_loc: (44...45) = "b"
        │   │       │   ├── opening_loc: (45...46) = "("
        │   │       │   ├── arguments:
        │   │       │   │   @ ArgumentsNode (location: (46...49))
        │   │       │   │   └── arguments: (length: 1)
        │   │       │   │       └── @ CallNode (location: (46...49))
        │   │       │   │           ├── receiver: ∅
        │   │       │   │           ├── call_operator_loc: ∅
        │   │       │   │           ├── message_loc: (46...47) = "c"
        │   │       │   │           ├── opening_loc: ∅
        │   │       │   │           ├── arguments:
        │   │       │   │           │   @ ArgumentsNode (location: (48...49))
        │   │       │   │           │   └── arguments: (length: 1)
        │   │       │   │           │       └── @ CallNode (location: (48...49))
        │   │       │   │           │           ├── receiver: ∅
        │   │       │   │           │           ├── call_operator_loc: ∅
        │   │       │   │           │           ├── message_loc: (48...49) = "d"
        │   │       │   │           │           ├── opening_loc: ∅
        │   │       │   │           │           ├── arguments: ∅
        │   │       │   │           │           ├── closing_loc: ∅
        │   │       │   │           │           ├── block: ∅
        │   │       │   │           │           ├── flags: variable_call
        │   │       │   │           │           └── name: "d"
        │   │       │   │           ├── closing_loc: ∅
        │   │       │   │           ├── block: ∅
        │   │       │   │           ├── flags: ∅
        │   │       │   │           └── name: "c"
        │   │       │   ├── closing_loc: (49...50) = ")"
        │   │       │   ├── block: ∅
        │   │       │   ├── flags: ∅
        │   │       │   └── name: "b"
        │   │       └── @ ImaginaryNode (location: (52...56))
        │   │           └── numeric:
        │   │               @ FloatNode (location: (52...55))
        │   ├── closing_loc: ∅
        │   ├── block:
        │   │   @ BlockNode (location: (57...63))
        │   │   ├── locals: []
        │   │   ├── parameters: ∅
        │   │   ├── body: ∅
        │   │   ├── opening_loc: (57...59) = "do"
        │   │   └── closing_loc: (60...63) = "end"
        │   ├── flags: ∅
        │   └── name: "a"
        ├── @ CallNode (location: (65...86))
        │   ├── receiver: ∅
        │   ├── call_operator_loc: ∅
        │   ├── message_loc: (65...66) = "a"
        │   ├── opening_loc: ∅
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (67...79))
        │   │   └── arguments: (length: 2)
        │   │       ├── @ CallNode (location: (67...73))
        │   │       │   ├── receiver: ∅
        │   │       │   ├── call_operator_loc: ∅
        │   │       │   ├── message_loc: (67...68) = "b"
        │   │       │   ├── opening_loc: (68...69) = "("
        │   │       │   ├── arguments:
        │   │       │   │   @ ArgumentsNode (location: (69...72))
        │   │       │   │   └── arguments: (length: 1)
        │   │       │   │       └── @ CallNode (location: (69...72))
        │   │       │   │           ├── receiver: ∅
        │   │       │   │           ├── call_operator_loc: ∅
        │   │       │   │           ├── message_loc: (69...70) = "c"
        │   │       │   │           ├── opening_loc: ∅
        │   │       │   │           ├── arguments:
        │   │       │   │           │   @ ArgumentsNode (location: (71...72))
        │   │       │   │           │   └── arguments: (length: 1)
        │   │       │   │           │       └── @ CallNode (location: (71...72))
        │   │       │   │           │           ├── receiver: ∅
        │   │       │   │           │           ├── call_operator_loc: ∅
        │   │       │   │           │           ├── message_loc: (71...72) = "d"
        │   │       │   │           │           ├── opening_loc: ∅
        │   │       │   │           │           ├── arguments: ∅
        │   │       │   │           │           ├── closing_loc: ∅
        │   │       │   │           │           ├── block: ∅
        │   │       │   │           │           ├── flags: variable_call
        │   │       │   │           │           └── name: "d"
        │   │       │   │           ├── closing_loc: ∅
        │   │       │   │           ├── block: ∅
        │   │       │   │           ├── flags: ∅
        │   │       │   │           └── name: "c"
        │   │       │   ├── closing_loc: (72...73) = ")"
        │   │       │   ├── block: ∅
        │   │       │   ├── flags: ∅
        │   │       │   └── name: "b"
        │   │       └── @ RationalNode (location: (75...79))
        │   │           └── numeric:
        │   │               @ FloatNode (location: (75...78))
        │   ├── closing_loc: ∅
        │   ├── block:
        │   │   @ BlockNode (location: (80...86))
        │   │   ├── locals: []
        │   │   ├── parameters: ∅
        │   │   ├── body: ∅
        │   │   ├── opening_loc: (80...82) = "do"
        │   │   └── closing_loc: (83...86) = "end"
        │   ├── flags: ∅
        │   └── name: "a"
        ├── @ CallNode (location: (88...107))
        │   ├── receiver: ∅
        │   ├── call_operator_loc: ∅
        │   ├── message_loc: (88...89) = "a"
        │   ├── opening_loc: ∅
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (90...100))
        │   │   └── arguments: (length: 2)
        │   │       ├── @ CallNode (location: (90...96))
        │   │       │   ├── receiver: ∅
        │   │       │   ├── call_operator_loc: ∅
        │   │       │   ├── message_loc: (90...91) = "b"
        │   │       │   ├── opening_loc: (91...92) = "("
        │   │       │   ├── arguments:
        │   │       │   │   @ ArgumentsNode (location: (92...95))
        │   │       │   │   └── arguments: (length: 1)
        │   │       │   │       └── @ CallNode (location: (92...95))
        │   │       │   │           ├── receiver: ∅
        │   │       │   │           ├── call_operator_loc: ∅
        │   │       │   │           ├── message_loc: (92...93) = "c"
        │   │       │   │           ├── opening_loc: ∅
        │   │       │   │           ├── arguments:
        │   │       │   │           │   @ ArgumentsNode (location: (94...95))
        │   │       │   │           │   └── arguments: (length: 1)
        │   │       │   │           │       └── @ CallNode (location: (94...95))
        │   │       │   │           │           ├── receiver: ∅
        │   │       │   │           │           ├── call_operator_loc: ∅
        │   │       │   │           │           ├── message_loc: (94...95) = "d"
        │   │       │   │           │           ├── opening_loc: ∅
        │   │       │   │           │           ├── arguments: ∅
        │   │       │   │           │           ├── closing_loc: ∅
        │   │       │   │           │           ├── block: ∅
        │   │       │   │           │           ├── flags: variable_call
        │   │       │   │           │           └── name: "d"
        │   │       │   │           ├── closing_loc: ∅
        │   │       │   │           ├── block: ∅
        │   │       │   │           ├── flags: ∅
        │   │       │   │           └── name: "c"
        │   │       │   ├── closing_loc: (95...96) = ")"
        │   │       │   ├── block: ∅
        │   │       │   ├── flags: ∅
        │   │       │   └── name: "b"
        │   │       └── @ SymbolNode (location: (98...100))
        │   │           ├── opening_loc: (98...99) = ":"
        │   │           ├── value_loc: (99...100) = "e"
        │   │           ├── closing_loc: ∅
        │   │           └── unescaped: "e"
        │   ├── closing_loc: ∅
        │   ├── block:
        │   │   @ BlockNode (location: (101...107))
        │   │   ├── locals: []
        │   │   ├── parameters: ∅
        │   │   ├── body: ∅
        │   │   ├── opening_loc: (101...103) = "do"
        │   │   └── closing_loc: (104...107) = "end"
        │   ├── flags: ∅
        │   └── name: "a"
        ├── @ CallNode (location: (109...128))
        │   ├── receiver: ∅
        │   ├── call_operator_loc: ∅
        │   ├── message_loc: (109...110) = "a"
        │   ├── opening_loc: ∅
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (111...121))
        │   │   └── arguments: (length: 2)
        │   │       ├── @ CallNode (location: (111...118))
        │   │       │   ├── receiver: ∅
        │   │       │   ├── call_operator_loc: ∅
        │   │       │   ├── message_loc: (111...112) = "b"
        │   │       │   ├── opening_loc: (112...113) = "("
        │   │       │   ├── arguments:
        │   │       │   │   @ ArgumentsNode (location: (113...117))
        │   │       │   │   └── arguments: (length: 1)
        │   │       │   │       └── @ CallNode (location: (113...117))
        │   │       │   │           ├── receiver: ∅
        │   │       │   │           ├── call_operator_loc: ∅
        │   │       │   │           ├── message_loc: (113...114) = "c"
        │   │       │   │           ├── opening_loc: (114...115) = "("
        │   │       │   │           ├── arguments:
        │   │       │   │           │   @ ArgumentsNode (location: (115...116))
        │   │       │   │           │   └── arguments: (length: 1)
        │   │       │   │           │       └── @ CallNode (location: (115...116))
        │   │       │   │           │           ├── receiver: ∅
        │   │       │   │           │           ├── call_operator_loc: ∅
        │   │       │   │           │           ├── message_loc: (115...116) = "d"
        │   │       │   │           │           ├── opening_loc: ∅
        │   │       │   │           │           ├── arguments: ∅
        │   │       │   │           │           ├── closing_loc: ∅
        │   │       │   │           │           ├── block: ∅
        │   │       │   │           │           ├── flags: variable_call
        │   │       │   │           │           └── name: "d"
        │   │       │   │           ├── closing_loc: (116...117) = ")"
        │   │       │   │           ├── block: ∅
        │   │       │   │           ├── flags: ∅
        │   │       │   │           └── name: "c"
        │   │       │   ├── closing_loc: (117...118) = ")"
        │   │       │   ├── block: ∅
        │   │       │   ├── flags: ∅
        │   │       │   └── name: "b"
        │   │       └── @ IntegerNode (location: (120...121))
        │   │           └── flags: decimal
        │   ├── closing_loc: ∅
        │   ├── block:
        │   │   @ BlockNode (location: (122...128))
        │   │   ├── locals: []
        │   │   ├── parameters: ∅
        │   │   ├── body: ∅
        │   │   ├── opening_loc: (122...124) = "do"
        │   │   └── closing_loc: (125...128) = "end"
        │   ├── flags: ∅
        │   └── name: "a"
        ├── @ CallNode (location: (130...151))
        │   ├── receiver: ∅
        │   ├── call_operator_loc: ∅
        │   ├── message_loc: (130...131) = "a"
        │   ├── opening_loc: ∅
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (132...144))
        │   │   └── arguments: (length: 2)
        │   │       ├── @ CallNode (location: (132...139))
        │   │       │   ├── receiver: ∅
        │   │       │   ├── call_operator_loc: ∅
        │   │       │   ├── message_loc: (132...133) = "b"
        │   │       │   ├── opening_loc: (133...134) = "("
        │   │       │   ├── arguments:
        │   │       │   │   @ ArgumentsNode (location: (134...138))
        │   │       │   │   └── arguments: (length: 1)
        │   │       │   │       └── @ CallNode (location: (134...138))
        │   │       │   │           ├── receiver: ∅
        │   │       │   │           ├── call_operator_loc: ∅
        │   │       │   │           ├── message_loc: (134...135) = "c"
        │   │       │   │           ├── opening_loc: (135...136) = "("
        │   │       │   │           ├── arguments:
        │   │       │   │           │   @ ArgumentsNode (location: (136...137))
        │   │       │   │           │   └── arguments: (length: 1)
        │   │       │   │           │       └── @ CallNode (location: (136...137))
        │   │       │   │           │           ├── receiver: ∅
        │   │       │   │           │           ├── call_operator_loc: ∅
        │   │       │   │           │           ├── message_loc: (136...137) = "d"
        │   │       │   │           │           ├── opening_loc: ∅
        │   │       │   │           │           ├── arguments: ∅
        │   │       │   │           │           ├── closing_loc: ∅
        │   │       │   │           │           ├── block: ∅
        │   │       │   │           │           ├── flags: variable_call
        │   │       │   │           │           └── name: "d"
        │   │       │   │           ├── closing_loc: (137...138) = ")"
        │   │       │   │           ├── block: ∅
        │   │       │   │           ├── flags: ∅
        │   │       │   │           └── name: "c"
        │   │       │   ├── closing_loc: (138...139) = ")"
        │   │       │   ├── block: ∅
        │   │       │   ├── flags: ∅
        │   │       │   └── name: "b"
        │   │       └── @ FloatNode (location: (141...144))
        │   ├── closing_loc: ∅
        │   ├── block:
        │   │   @ BlockNode (location: (145...151))
        │   │   ├── locals: []
        │   │   ├── parameters: ∅
        │   │   ├── body: ∅
        │   │   ├── opening_loc: (145...147) = "do"
        │   │   └── closing_loc: (148...151) = "end"
        │   ├── flags: ∅
        │   └── name: "a"
        ├── @ CallNode (location: (153...175))
        │   ├── receiver: ∅
        │   ├── call_operator_loc: ∅
        │   ├── message_loc: (153...154) = "a"
        │   ├── opening_loc: ∅
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (155...168))
        │   │   └── arguments: (length: 2)
        │   │       ├── @ CallNode (location: (155...162))
        │   │       │   ├── receiver: ∅
        │   │       │   ├── call_operator_loc: ∅
        │   │       │   ├── message_loc: (155...156) = "b"
        │   │       │   ├── opening_loc: (156...157) = "("
        │   │       │   ├── arguments:
        │   │       │   │   @ ArgumentsNode (location: (157...161))
        │   │       │   │   └── arguments: (length: 1)
        │   │       │   │       └── @ CallNode (location: (157...161))
        │   │       │   │           ├── receiver: ∅
        │   │       │   │           ├── call_operator_loc: ∅
        │   │       │   │           ├── message_loc: (157...158) = "c"
        │   │       │   │           ├── opening_loc: (158...159) = "("
        │   │       │   │           ├── arguments:
        │   │       │   │           │   @ ArgumentsNode (location: (159...160))
        │   │       │   │           │   └── arguments: (length: 1)
        │   │       │   │           │       └── @ CallNode (location: (159...160))
        │   │       │   │           │           ├── receiver: ∅
        │   │       │   │           │           ├── call_operator_loc: ∅
        │   │       │   │           │           ├── message_loc: (159...160) = "d"
        │   │       │   │           │           ├── opening_loc: ∅
        │   │       │   │           │           ├── arguments: ∅
        │   │       │   │           │           ├── closing_loc: ∅
        │   │       │   │           │           ├── block: ∅
        │   │       │   │           │           ├── flags: variable_call
        │   │       │   │           │           └── name: "d"
        │   │       │   │           ├── closing_loc: (160...161) = ")"
        │   │       │   │           ├── block: ∅
        │   │       │   │           ├── flags: ∅
        │   │       │   │           └── name: "c"
        │   │       │   ├── closing_loc: (161...162) = ")"
        │   │       │   ├── block: ∅
        │   │       │   ├── flags: ∅
        │   │       │   └── name: "b"
        │   │       └── @ ImaginaryNode (location: (164...168))
        │   │           └── numeric:
        │   │               @ FloatNode (location: (164...167))
        │   ├── closing_loc: ∅
        │   ├── block:
        │   │   @ BlockNode (location: (169...175))
        │   │   ├── locals: []
        │   │   ├── parameters: ∅
        │   │   ├── body: ∅
        │   │   ├── opening_loc: (169...171) = "do"
        │   │   └── closing_loc: (172...175) = "end"
        │   ├── flags: ∅
        │   └── name: "a"
        ├── @ CallNode (location: (177...199))
        │   ├── receiver: ∅
        │   ├── call_operator_loc: ∅
        │   ├── message_loc: (177...178) = "a"
        │   ├── opening_loc: ∅
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (179...192))
        │   │   └── arguments: (length: 2)
        │   │       ├── @ CallNode (location: (179...186))
        │   │       │   ├── receiver: ∅
        │   │       │   ├── call_operator_loc: ∅
        │   │       │   ├── message_loc: (179...180) = "b"
        │   │       │   ├── opening_loc: (180...181) = "("
        │   │       │   ├── arguments:
        │   │       │   │   @ ArgumentsNode (location: (181...185))
        │   │       │   │   └── arguments: (length: 1)
        │   │       │   │       └── @ CallNode (location: (181...185))
        │   │       │   │           ├── receiver: ∅
        │   │       │   │           ├── call_operator_loc: ∅
        │   │       │   │           ├── message_loc: (181...182) = "c"
        │   │       │   │           ├── opening_loc: (182...183) = "("
        │   │       │   │           ├── arguments:
        │   │       │   │           │   @ ArgumentsNode (location: (183...184))
        │   │       │   │           │   └── arguments: (length: 1)
        │   │       │   │           │       └── @ CallNode (location: (183...184))
        │   │       │   │           │           ├── receiver: ∅
        │   │       │   │           │           ├── call_operator_loc: ∅
        │   │       │   │           │           ├── message_loc: (183...184) = "d"
        │   │       │   │           │           ├── opening_loc: ∅
        │   │       │   │           │           ├── arguments: ∅
        │   │       │   │           │           ├── closing_loc: ∅
        │   │       │   │           │           ├── block: ∅
        │   │       │   │           │           ├── flags: variable_call
        │   │       │   │           │           └── name: "d"
        │   │       │   │           ├── closing_loc: (184...185) = ")"
        │   │       │   │           ├── block: ∅
        │   │       │   │           ├── flags: ∅
        │   │       │   │           └── name: "c"
        │   │       │   ├── closing_loc: (185...186) = ")"
        │   │       │   ├── block: ∅
        │   │       │   ├── flags: ∅
        │   │       │   └── name: "b"
        │   │       └── @ RationalNode (location: (188...192))
        │   │           └── numeric:
        │   │               @ FloatNode (location: (188...191))
        │   ├── closing_loc: ∅
        │   ├── block:
        │   │   @ BlockNode (location: (193...199))
        │   │   ├── locals: []
        │   │   ├── parameters: ∅
        │   │   ├── body: ∅
        │   │   ├── opening_loc: (193...195) = "do"
        │   │   └── closing_loc: (196...199) = "end"
        │   ├── flags: ∅
        │   └── name: "a"
        ├── @ CallNode (location: (201...221))
        │   ├── receiver: ∅
        │   ├── call_operator_loc: ∅
        │   ├── message_loc: (201...202) = "a"
        │   ├── opening_loc: ∅
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (203...214))
        │   │   └── arguments: (length: 2)
        │   │       ├── @ CallNode (location: (203...210))
        │   │       │   ├── receiver: ∅
        │   │       │   ├── call_operator_loc: ∅
        │   │       │   ├── message_loc: (203...204) = "b"
        │   │       │   ├── opening_loc: (204...205) = "("
        │   │       │   ├── arguments:
        │   │       │   │   @ ArgumentsNode (location: (205...209))
        │   │       │   │   └── arguments: (length: 1)
        │   │       │   │       └── @ CallNode (location: (205...209))
        │   │       │   │           ├── receiver: ∅
        │   │       │   │           ├── call_operator_loc: ∅
        │   │       │   │           ├── message_loc: (205...206) = "c"
        │   │       │   │           ├── opening_loc: (206...207) = "("
        │   │       │   │           ├── arguments:
        │   │       │   │           │   @ ArgumentsNode (location: (207...208))
        │   │       │   │           │   └── arguments: (length: 1)
        │   │       │   │           │       └── @ CallNode (location: (207...208))
        │   │       │   │           │           ├── receiver: ∅
        │   │       │   │           │           ├── call_operator_loc: ∅
        │   │       │   │           │           ├── message_loc: (207...208) = "d"
        │   │       │   │           │           ├── opening_loc: ∅
        │   │       │   │           │           ├── arguments: ∅
        │   │       │   │           │           ├── closing_loc: ∅
        │   │       │   │           │           ├── block: ∅
        │   │       │   │           │           ├── flags: variable_call
        │   │       │   │           │           └── name: "d"
        │   │       │   │           ├── closing_loc: (208...209) = ")"
        │   │       │   │           ├── block: ∅
        │   │       │   │           ├── flags: ∅
        │   │       │   │           └── name: "c"
        │   │       │   ├── closing_loc: (209...210) = ")"
        │   │       │   ├── block: ∅
        │   │       │   ├── flags: ∅
        │   │       │   └── name: "b"
        │   │       └── @ SymbolNode (location: (212...214))
        │   │           ├── opening_loc: (212...213) = ":"
        │   │           ├── value_loc: (213...214) = "e"
        │   │           ├── closing_loc: ∅
        │   │           └── unescaped: "e"
        │   ├── closing_loc: ∅
        │   ├── block:
        │   │   @ BlockNode (location: (215...221))
        │   │   ├── locals: []
        │   │   ├── parameters: ∅
        │   │   ├── body: ∅
        │   │   ├── opening_loc: (215...217) = "do"
        │   │   └── closing_loc: (218...221) = "end"
        │   ├── flags: ∅
        │   └── name: "a"
        ├── @ CallNode (location: (223...241))
        │   ├── receiver: ∅
        │   ├── call_operator_loc: ∅
        │   ├── message_loc: (223...224) = "a"
        │   ├── opening_loc: ∅
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (225...234))
        │   │   └── arguments: (length: 2)
        │   │       ├── @ CallNode (location: (225...231))
        │   │       │   ├── receiver: ∅
        │   │       │   ├── call_operator_loc: ∅
        │   │       │   ├── message_loc: (225...226) = "b"
        │   │       │   ├── opening_loc: ∅
        │   │       │   ├── arguments: ∅
        │   │       │   ├── closing_loc: ∅
        │   │       │   ├── block:
        │   │       │   │   @ BlockNode (location: (226...231))
        │   │       │   │   ├── locals: []
        │   │       │   │   ├── parameters: ∅
        │   │       │   │   ├── body:
        │   │       │   │   │   @ StatementsNode (location: (227...230))
        │   │       │   │   │   └── body: (length: 1)
        │   │       │   │   │       └── @ CallNode (location: (227...230))
        │   │       │   │   │           ├── receiver: ∅
        │   │       │   │   │           ├── call_operator_loc: ∅
        │   │       │   │   │           ├── message_loc: (227...228) = "c"
        │   │       │   │   │           ├── opening_loc: ∅
        │   │       │   │   │           ├── arguments:
        │   │       │   │   │           │   @ ArgumentsNode (location: (229...230))
        │   │       │   │   │           │   └── arguments: (length: 1)
        │   │       │   │   │           │       └── @ CallNode (location: (229...230))
        │   │       │   │   │           │           ├── receiver: ∅
        │   │       │   │   │           │           ├── call_operator_loc: ∅
        │   │       │   │   │           │           ├── message_loc: (229...230) = "d"
        │   │       │   │   │           │           ├── opening_loc: ∅
        │   │       │   │   │           │           ├── arguments: ∅
        │   │       │   │   │           │           ├── closing_loc: ∅
        │   │       │   │   │           │           ├── block: ∅
        │   │       │   │   │           │           ├── flags: variable_call
        │   │       │   │   │           │           └── name: "d"
        │   │       │   │   │           ├── closing_loc: ∅
        │   │       │   │   │           ├── block: ∅
        │   │       │   │   │           ├── flags: ∅
        │   │       │   │   │           └── name: "c"
        │   │       │   │   ├── opening_loc: (226...227) = "{"
        │   │       │   │   └── closing_loc: (230...231) = "}"
        │   │       │   ├── flags: ∅
        │   │       │   └── name: "b"
        │   │       └── @ IntegerNode (location: (233...234))
        │   │           └── flags: decimal
        │   ├── closing_loc: ∅
        │   ├── block:
        │   │   @ BlockNode (location: (235...241))
        │   │   ├── locals: []
        │   │   ├── parameters: ∅
        │   │   ├── body: ∅
        │   │   ├── opening_loc: (235...237) = "do"
        │   │   └── closing_loc: (238...241) = "end"
        │   ├── flags: ∅
        │   └── name: "a"
        ├── @ CallNode (location: (243...263))
        │   ├── receiver: ∅
        │   ├── call_operator_loc: ∅
        │   ├── message_loc: (243...244) = "a"
        │   ├── opening_loc: ∅
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (245...256))
        │   │   └── arguments: (length: 2)
        │   │       ├── @ CallNode (location: (245...251))
        │   │       │   ├── receiver: ∅
        │   │       │   ├── call_operator_loc: ∅
        │   │       │   ├── message_loc: (245...246) = "b"
        │   │       │   ├── opening_loc: ∅
        │   │       │   ├── arguments: ∅
        │   │       │   ├── closing_loc: ∅
        │   │       │   ├── block:
        │   │       │   │   @ BlockNode (location: (246...251))
        │   │       │   │   ├── locals: []
        │   │       │   │   ├── parameters: ∅
        │   │       │   │   ├── body:
        │   │       │   │   │   @ StatementsNode (location: (247...250))
        │   │       │   │   │   └── body: (length: 1)
        │   │       │   │   │       └── @ CallNode (location: (247...250))
        │   │       │   │   │           ├── receiver: ∅
        │   │       │   │   │           ├── call_operator_loc: ∅
        │   │       │   │   │           ├── message_loc: (247...248) = "c"
        │   │       │   │   │           ├── opening_loc: ∅
        │   │       │   │   │           ├── arguments:
        │   │       │   │   │           │   @ ArgumentsNode (location: (249...250))
        │   │       │   │   │           │   └── arguments: (length: 1)
        │   │       │   │   │           │       └── @ CallNode (location: (249...250))
        │   │       │   │   │           │           ├── receiver: ∅
        │   │       │   │   │           │           ├── call_operator_loc: ∅
        │   │       │   │   │           │           ├── message_loc: (249...250) = "d"
        │   │       │   │   │           │           ├── opening_loc: ∅
        │   │       │   │   │           │           ├── arguments: ∅
        │   │       │   │   │           │           ├── closing_loc: ∅
        │   │       │   │   │           │           ├── block: ∅
        │   │       │   │   │           │           ├── flags: variable_call
        │   │       │   │   │           │           └── name: "d"
        │   │       │   │   │           ├── closing_loc: ∅
        │   │       │   │   │           ├── block: ∅
        │   │       │   │   │           ├── flags: ∅
        │   │       │   │   │           └── name: "c"
        │   │       │   │   ├── opening_loc: (246...247) = "{"
        │   │       │   │   └── closing_loc: (250...251) = "}"
        │   │       │   ├── flags: ∅
        │   │       │   └── name: "b"
        │   │       └── @ FloatNode (location: (253...256))
        │   ├── closing_loc: ∅
        │   ├── block:
        │   │   @ BlockNode (location: (257...263))
        │   │   ├── locals: []
        │   │   ├── parameters: ∅
        │   │   ├── body: ∅
        │   │   ├── opening_loc: (257...259) = "do"
        │   │   └── closing_loc: (260...263) = "end"
        │   ├── flags: ∅
        │   └── name: "a"
        ├── @ CallNode (location: (265...286))
        │   ├── receiver: ∅
        │   ├── call_operator_loc: ∅
        │   ├── message_loc: (265...266) = "a"
        │   ├── opening_loc: ∅
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (267...279))
        │   │   └── arguments: (length: 2)
        │   │       ├── @ CallNode (location: (267...273))
        │   │       │   ├── receiver: ∅
        │   │       │   ├── call_operator_loc: ∅
        │   │       │   ├── message_loc: (267...268) = "b"
        │   │       │   ├── opening_loc: ∅
        │   │       │   ├── arguments: ∅
        │   │       │   ├── closing_loc: ∅
        │   │       │   ├── block:
        │   │       │   │   @ BlockNode (location: (268...273))
        │   │       │   │   ├── locals: []
        │   │       │   │   ├── parameters: ∅
        │   │       │   │   ├── body:
        │   │       │   │   │   @ StatementsNode (location: (269...272))
        │   │       │   │   │   └── body: (length: 1)
        │   │       │   │   │       └── @ CallNode (location: (269...272))
        │   │       │   │   │           ├── receiver: ∅
        │   │       │   │   │           ├── call_operator_loc: ∅
        │   │       │   │   │           ├── message_loc: (269...270) = "c"
        │   │       │   │   │           ├── opening_loc: ∅
        │   │       │   │   │           ├── arguments:
        │   │       │   │   │           │   @ ArgumentsNode (location: (271...272))
        │   │       │   │   │           │   └── arguments: (length: 1)
        │   │       │   │   │           │       └── @ CallNode (location: (271...272))
        │   │       │   │   │           │           ├── receiver: ∅
        │   │       │   │   │           │           ├── call_operator_loc: ∅
        │   │       │   │   │           │           ├── message_loc: (271...272) = "d"
        │   │       │   │   │           │           ├── opening_loc: ∅
        │   │       │   │   │           │           ├── arguments: ∅
        │   │       │   │   │           │           ├── closing_loc: ∅
        │   │       │   │   │           │           ├── block: ∅
        │   │       │   │   │           │           ├── flags: variable_call
        │   │       │   │   │           │           └── name: "d"
        │   │       │   │   │           ├── closing_loc: ∅
        │   │       │   │   │           ├── block: ∅
        │   │       │   │   │           ├── flags: ∅
        │   │       │   │   │           └── name: "c"
        │   │       │   │   ├── opening_loc: (268...269) = "{"
        │   │       │   │   └── closing_loc: (272...273) = "}"
        │   │       │   ├── flags: ∅
        │   │       │   └── name: "b"
        │   │       └── @ ImaginaryNode (location: (275...279))
        │   │           └── numeric:
        │   │               @ FloatNode (location: (275...278))
        │   ├── closing_loc: ∅
        │   ├── block:
        │   │   @ BlockNode (location: (280...286))
        │   │   ├── locals: []
        │   │   ├── parameters: ∅
        │   │   ├── body: ∅
        │   │   ├── opening_loc: (280...282) = "do"
        │   │   └── closing_loc: (283...286) = "end"
        │   ├── flags: ∅
        │   └── name: "a"
        ├── @ CallNode (location: (288...309))
        │   ├── receiver: ∅
        │   ├── call_operator_loc: ∅
        │   ├── message_loc: (288...289) = "a"
        │   ├── opening_loc: ∅
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (290...302))
        │   │   └── arguments: (length: 2)
        │   │       ├── @ CallNode (location: (290...296))
        │   │       │   ├── receiver: ∅
        │   │       │   ├── call_operator_loc: ∅
        │   │       │   ├── message_loc: (290...291) = "b"
        │   │       │   ├── opening_loc: ∅
        │   │       │   ├── arguments: ∅
        │   │       │   ├── closing_loc: ∅
        │   │       │   ├── block:
        │   │       │   │   @ BlockNode (location: (291...296))
        │   │       │   │   ├── locals: []
        │   │       │   │   ├── parameters: ∅
        │   │       │   │   ├── body:
        │   │       │   │   │   @ StatementsNode (location: (292...295))
        │   │       │   │   │   └── body: (length: 1)
        │   │       │   │   │       └── @ CallNode (location: (292...295))
        │   │       │   │   │           ├── receiver: ∅
        │   │       │   │   │           ├── call_operator_loc: ∅
        │   │       │   │   │           ├── message_loc: (292...293) = "c"
        │   │       │   │   │           ├── opening_loc: ∅
        │   │       │   │   │           ├── arguments:
        │   │       │   │   │           │   @ ArgumentsNode (location: (294...295))
        │   │       │   │   │           │   └── arguments: (length: 1)
        │   │       │   │   │           │       └── @ CallNode (location: (294...295))
        │   │       │   │   │           │           ├── receiver: ∅
        │   │       │   │   │           │           ├── call_operator_loc: ∅
        │   │       │   │   │           │           ├── message_loc: (294...295) = "d"
        │   │       │   │   │           │           ├── opening_loc: ∅
        │   │       │   │   │           │           ├── arguments: ∅
        │   │       │   │   │           │           ├── closing_loc: ∅
        │   │       │   │   │           │           ├── block: ∅
        │   │       │   │   │           │           ├── flags: variable_call
        │   │       │   │   │           │           └── name: "d"
        │   │       │   │   │           ├── closing_loc: ∅
        │   │       │   │   │           ├── block: ∅
        │   │       │   │   │           ├── flags: ∅
        │   │       │   │   │           └── name: "c"
        │   │       │   │   ├── opening_loc: (291...292) = "{"
        │   │       │   │   └── closing_loc: (295...296) = "}"
        │   │       │   ├── flags: ∅
        │   │       │   └── name: "b"
        │   │       └── @ RationalNode (location: (298...302))
        │   │           └── numeric:
        │   │               @ FloatNode (location: (298...301))
        │   ├── closing_loc: ∅
        │   ├── block:
        │   │   @ BlockNode (location: (303...309))
        │   │   ├── locals: []
        │   │   ├── parameters: ∅
        │   │   ├── body: ∅
        │   │   ├── opening_loc: (303...305) = "do"
        │   │   └── closing_loc: (306...309) = "end"
        │   ├── flags: ∅
        │   └── name: "a"
        ├── @ CallNode (location: (311...330))
        │   ├── receiver: ∅
        │   ├── call_operator_loc: ∅
        │   ├── message_loc: (311...312) = "a"
        │   ├── opening_loc: ∅
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (313...323))
        │   │   └── arguments: (length: 2)
        │   │       ├── @ CallNode (location: (313...319))
        │   │       │   ├── receiver: ∅
        │   │       │   ├── call_operator_loc: ∅
        │   │       │   ├── message_loc: (313...314) = "b"
        │   │       │   ├── opening_loc: ∅
        │   │       │   ├── arguments: ∅
        │   │       │   ├── closing_loc: ∅
        │   │       │   ├── block:
        │   │       │   │   @ BlockNode (location: (314...319))
        │   │       │   │   ├── locals: []
        │   │       │   │   ├── parameters: ∅
        │   │       │   │   ├── body:
        │   │       │   │   │   @ StatementsNode (location: (315...318))
        │   │       │   │   │   └── body: (length: 1)
        │   │       │   │   │       └── @ CallNode (location: (315...318))
        │   │       │   │   │           ├── receiver: ∅
        │   │       │   │   │           ├── call_operator_loc: ∅
        │   │       │   │   │           ├── message_loc: (315...316) = "c"
        │   │       │   │   │           ├── opening_loc: ∅
        │   │       │   │   │           ├── arguments:
        │   │       │   │   │           │   @ ArgumentsNode (location: (317...318))
        │   │       │   │   │           │   └── arguments: (length: 1)
        │   │       │   │   │           │       └── @ CallNode (location: (317...318))
        │   │       │   │   │           │           ├── receiver: ∅
        │   │       │   │   │           │           ├── call_operator_loc: ∅
        │   │       │   │   │           │           ├── message_loc: (317...318) = "d"
        │   │       │   │   │           │           ├── opening_loc: ∅
        │   │       │   │   │           │           ├── arguments: ∅
        │   │       │   │   │           │           ├── closing_loc: ∅
        │   │       │   │   │           │           ├── block: ∅
        │   │       │   │   │           │           ├── flags: variable_call
        │   │       │   │   │           │           └── name: "d"
        │   │       │   │   │           ├── closing_loc: ∅
        │   │       │   │   │           ├── block: ∅
        │   │       │   │   │           ├── flags: ∅
        │   │       │   │   │           └── name: "c"
        │   │       │   │   ├── opening_loc: (314...315) = "{"
        │   │       │   │   └── closing_loc: (318...319) = "}"
        │   │       │   ├── flags: ∅
        │   │       │   └── name: "b"
        │   │       └── @ SymbolNode (location: (321...323))
        │   │           ├── opening_loc: (321...322) = ":"
        │   │           ├── value_loc: (322...323) = "e"
        │   │           ├── closing_loc: ∅
        │   │           └── unescaped: "e"
        │   ├── closing_loc: ∅
        │   ├── block:
        │   │   @ BlockNode (location: (324...330))
        │   │   ├── locals: []
        │   │   ├── parameters: ∅
        │   │   ├── body: ∅
        │   │   ├── opening_loc: (324...326) = "do"
        │   │   └── closing_loc: (327...330) = "end"
        │   ├── flags: ∅
        │   └── name: "a"
        ├── @ CallNode (location: (332...351))
        │   ├── receiver: ∅
        │   ├── call_operator_loc: ∅
        │   ├── message_loc: (332...333) = "a"
        │   ├── opening_loc: ∅
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (334...344))
        │   │   └── arguments: (length: 2)
        │   │       ├── @ CallNode (location: (334...341))
        │   │       │   ├── receiver: ∅
        │   │       │   ├── call_operator_loc: ∅
        │   │       │   ├── message_loc: (334...335) = "b"
        │   │       │   ├── opening_loc: ∅
        │   │       │   ├── arguments: ∅
        │   │       │   ├── closing_loc: ∅
        │   │       │   ├── block:
        │   │       │   │   @ BlockNode (location: (335...341))
        │   │       │   │   ├── locals: []
        │   │       │   │   ├── parameters: ∅
        │   │       │   │   ├── body:
        │   │       │   │   │   @ StatementsNode (location: (336...340))
        │   │       │   │   │   └── body: (length: 1)
        │   │       │   │   │       └── @ CallNode (location: (336...340))
        │   │       │   │   │           ├── receiver: ∅
        │   │       │   │   │           ├── call_operator_loc: ∅
        │   │       │   │   │           ├── message_loc: (336...337) = "c"
        │   │       │   │   │           ├── opening_loc: (337...338) = "("
        │   │       │   │   │           ├── arguments:
        │   │       │   │   │           │   @ ArgumentsNode (location: (338...339))
        │   │       │   │   │           │   └── arguments: (length: 1)
        │   │       │   │   │           │       └── @ CallNode (location: (338...339))
        │   │       │   │   │           │           ├── receiver: ∅
        │   │       │   │   │           │           ├── call_operator_loc: ∅
        │   │       │   │   │           │           ├── message_loc: (338...339) = "d"
        │   │       │   │   │           │           ├── opening_loc: ∅
        │   │       │   │   │           │           ├── arguments: ∅
        │   │       │   │   │           │           ├── closing_loc: ∅
        │   │       │   │   │           │           ├── block: ∅
        │   │       │   │   │           │           ├── flags: variable_call
        │   │       │   │   │           │           └── name: "d"
        │   │       │   │   │           ├── closing_loc: (339...340) = ")"
        │   │       │   │   │           ├── block: ∅
        │   │       │   │   │           ├── flags: ∅
        │   │       │   │   │           └── name: "c"
        │   │       │   │   ├── opening_loc: (335...336) = "{"
        │   │       │   │   └── closing_loc: (340...341) = "}"
        │   │       │   ├── flags: ∅
        │   │       │   └── name: "b"
        │   │       └── @ IntegerNode (location: (343...344))
        │   │           └── flags: decimal
        │   ├── closing_loc: ∅
        │   ├── block:
        │   │   @ BlockNode (location: (345...351))
        │   │   ├── locals: []
        │   │   ├── parameters: ∅
        │   │   ├── body: ∅
        │   │   ├── opening_loc: (345...347) = "do"
        │   │   └── closing_loc: (348...351) = "end"
        │   ├── flags: ∅
        │   └── name: "a"
        ├── @ CallNode (location: (353...374))
        │   ├── receiver: ∅
        │   ├── call_operator_loc: ∅
        │   ├── message_loc: (353...354) = "a"
        │   ├── opening_loc: ∅
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (355...367))
        │   │   └── arguments: (length: 2)
        │   │       ├── @ CallNode (location: (355...362))
        │   │       │   ├── receiver: ∅
        │   │       │   ├── call_operator_loc: ∅
        │   │       │   ├── message_loc: (355...356) = "b"
        │   │       │   ├── opening_loc: ∅
        │   │       │   ├── arguments: ∅
        │   │       │   ├── closing_loc: ∅
        │   │       │   ├── block:
        │   │       │   │   @ BlockNode (location: (356...362))
        │   │       │   │   ├── locals: []
        │   │       │   │   ├── parameters: ∅
        │   │       │   │   ├── body:
        │   │       │   │   │   @ StatementsNode (location: (357...361))
        │   │       │   │   │   └── body: (length: 1)
        │   │       │   │   │       └── @ CallNode (location: (357...361))
        │   │       │   │   │           ├── receiver: ∅
        │   │       │   │   │           ├── call_operator_loc: ∅
        │   │       │   │   │           ├── message_loc: (357...358) = "c"
        │   │       │   │   │           ├── opening_loc: (358...359) = "("
        │   │       │   │   │           ├── arguments:
        │   │       │   │   │           │   @ ArgumentsNode (location: (359...360))
        │   │       │   │   │           │   └── arguments: (length: 1)
        │   │       │   │   │           │       └── @ CallNode (location: (359...360))
        │   │       │   │   │           │           ├── receiver: ∅
        │   │       │   │   │           │           ├── call_operator_loc: ∅
        │   │       │   │   │           │           ├── message_loc: (359...360) = "d"
        │   │       │   │   │           │           ├── opening_loc: ∅
        │   │       │   │   │           │           ├── arguments: ∅
        │   │       │   │   │           │           ├── closing_loc: ∅
        │   │       │   │   │           │           ├── block: ∅
        │   │       │   │   │           │           ├── flags: variable_call
        │   │       │   │   │           │           └── name: "d"
        │   │       │   │   │           ├── closing_loc: (360...361) = ")"
        │   │       │   │   │           ├── block: ∅
        │   │       │   │   │           ├── flags: ∅
        │   │       │   │   │           └── name: "c"
        │   │       │   │   ├── opening_loc: (356...357) = "{"
        │   │       │   │   └── closing_loc: (361...362) = "}"
        │   │       │   ├── flags: ∅
        │   │       │   └── name: "b"
        │   │       └── @ FloatNode (location: (364...367))
        │   ├── closing_loc: ∅
        │   ├── block:
        │   │   @ BlockNode (location: (368...374))
        │   │   ├── locals: []
        │   │   ├── parameters: ∅
        │   │   ├── body: ∅
        │   │   ├── opening_loc: (368...370) = "do"
        │   │   └── closing_loc: (371...374) = "end"
        │   ├── flags: ∅
        │   └── name: "a"
        ├── @ CallNode (location: (376...398))
        │   ├── receiver: ∅
        │   ├── call_operator_loc: ∅
        │   ├── message_loc: (376...377) = "a"
        │   ├── opening_loc: ∅
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (378...391))
        │   │   └── arguments: (length: 2)
        │   │       ├── @ CallNode (location: (378...385))
        │   │       │   ├── receiver: ∅
        │   │       │   ├── call_operator_loc: ∅
        │   │       │   ├── message_loc: (378...379) = "b"
        │   │       │   ├── opening_loc: ∅
        │   │       │   ├── arguments: ∅
        │   │       │   ├── closing_loc: ∅
        │   │       │   ├── block:
        │   │       │   │   @ BlockNode (location: (379...385))
        │   │       │   │   ├── locals: []
        │   │       │   │   ├── parameters: ∅
        │   │       │   │   ├── body:
        │   │       │   │   │   @ StatementsNode (location: (380...384))
        │   │       │   │   │   └── body: (length: 1)
        │   │       │   │   │       └── @ CallNode (location: (380...384))
        │   │       │   │   │           ├── receiver: ∅
        │   │       │   │   │           ├── call_operator_loc: ∅
        │   │       │   │   │           ├── message_loc: (380...381) = "c"
        │   │       │   │   │           ├── opening_loc: (381...382) = "("
        │   │       │   │   │           ├── arguments:
        │   │       │   │   │           │   @ ArgumentsNode (location: (382...383))
        │   │       │   │   │           │   └── arguments: (length: 1)
        │   │       │   │   │           │       └── @ CallNode (location: (382...383))
        │   │       │   │   │           │           ├── receiver: ∅
        │   │       │   │   │           │           ├── call_operator_loc: ∅
        │   │       │   │   │           │           ├── message_loc: (382...383) = "d"
        │   │       │   │   │           │           ├── opening_loc: ∅
        │   │       │   │   │           │           ├── arguments: ∅
        │   │       │   │   │           │           ├── closing_loc: ∅
        │   │       │   │   │           │           ├── block: ∅
        │   │       │   │   │           │           ├── flags: variable_call
        │   │       │   │   │           │           └── name: "d"
        │   │       │   │   │           ├── closing_loc: (383...384) = ")"
        │   │       │   │   │           ├── block: ∅
        │   │       │   │   │           ├── flags: ∅
        │   │       │   │   │           └── name: "c"
        │   │       │   │   ├── opening_loc: (379...380) = "{"
        │   │       │   │   └── closing_loc: (384...385) = "}"
        │   │       │   ├── flags: ∅
        │   │       │   └── name: "b"
        │   │       └── @ ImaginaryNode (location: (387...391))
        │   │           └── numeric:
        │   │               @ FloatNode (location: (387...390))
        │   ├── closing_loc: ∅
        │   ├── block:
        │   │   @ BlockNode (location: (392...398))
        │   │   ├── locals: []
        │   │   ├── parameters: ∅
        │   │   ├── body: ∅
        │   │   ├── opening_loc: (392...394) = "do"
        │   │   └── closing_loc: (395...398) = "end"
        │   ├── flags: ∅
        │   └── name: "a"
        ├── @ CallNode (location: (400...422))
        │   ├── receiver: ∅
        │   ├── call_operator_loc: ∅
        │   ├── message_loc: (400...401) = "a"
        │   ├── opening_loc: ∅
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (402...415))
        │   │   └── arguments: (length: 2)
        │   │       ├── @ CallNode (location: (402...409))
        │   │       │   ├── receiver: ∅
        │   │       │   ├── call_operator_loc: ∅
        │   │       │   ├── message_loc: (402...403) = "b"
        │   │       │   ├── opening_loc: ∅
        │   │       │   ├── arguments: ∅
        │   │       │   ├── closing_loc: ∅
        │   │       │   ├── block:
        │   │       │   │   @ BlockNode (location: (403...409))
        │   │       │   │   ├── locals: []
        │   │       │   │   ├── parameters: ∅
        │   │       │   │   ├── body:
        │   │       │   │   │   @ StatementsNode (location: (404...408))
        │   │       │   │   │   └── body: (length: 1)
        │   │       │   │   │       └── @ CallNode (location: (404...408))
        │   │       │   │   │           ├── receiver: ∅
        │   │       │   │   │           ├── call_operator_loc: ∅
        │   │       │   │   │           ├── message_loc: (404...405) = "c"
        │   │       │   │   │           ├── opening_loc: (405...406) = "("
        │   │       │   │   │           ├── arguments:
        │   │       │   │   │           │   @ ArgumentsNode (location: (406...407))
        │   │       │   │   │           │   └── arguments: (length: 1)
        │   │       │   │   │           │       └── @ CallNode (location: (406...407))
        │   │       │   │   │           │           ├── receiver: ∅
        │   │       │   │   │           │           ├── call_operator_loc: ∅
        │   │       │   │   │           │           ├── message_loc: (406...407) = "d"
        │   │       │   │   │           │           ├── opening_loc: ∅
        │   │       │   │   │           │           ├── arguments: ∅
        │   │       │   │   │           │           ├── closing_loc: ∅
        │   │       │   │   │           │           ├── block: ∅
        │   │       │   │   │           │           ├── flags: variable_call
        │   │       │   │   │           │           └── name: "d"
        │   │       │   │   │           ├── closing_loc: (407...408) = ")"
        │   │       │   │   │           ├── block: ∅
        │   │       │   │   │           ├── flags: ∅
        │   │       │   │   │           └── name: "c"
        │   │       │   │   ├── opening_loc: (403...404) = "{"
        │   │       │   │   └── closing_loc: (408...409) = "}"
        │   │       │   ├── flags: ∅
        │   │       │   └── name: "b"
        │   │       └── @ RationalNode (location: (411...415))
        │   │           └── numeric:
        │   │               @ FloatNode (location: (411...414))
        │   ├── closing_loc: ∅
        │   ├── block:
        │   │   @ BlockNode (location: (416...422))
        │   │   ├── locals: []
        │   │   ├── parameters: ∅
        │   │   ├── body: ∅
        │   │   ├── opening_loc: (416...418) = "do"
        │   │   └── closing_loc: (419...422) = "end"
        │   ├── flags: ∅
        │   └── name: "a"
        └── @ CallNode (location: (424...444))
            ├── receiver: ∅
            ├── call_operator_loc: ∅
            ├── message_loc: (424...425) = "a"
            ├── opening_loc: ∅
            ├── arguments:
            │   @ ArgumentsNode (location: (426...437))
            │   └── arguments: (length: 2)
            │       ├── @ CallNode (location: (426...433))
            │       │   ├── receiver: ∅
            │       │   ├── call_operator_loc: ∅
            │       │   ├── message_loc: (426...427) = "b"
            │       │   ├── opening_loc: ∅
            │       │   ├── arguments: ∅
            │       │   ├── closing_loc: ∅
            │       │   ├── block:
            │       │   │   @ BlockNode (location: (427...433))
            │       │   │   ├── locals: []
            │       │   │   ├── parameters: ∅
            │       │   │   ├── body:
            │       │   │   │   @ StatementsNode (location: (428...432))
            │       │   │   │   └── body: (length: 1)
            │       │   │   │       └── @ CallNode (location: (428...432))
            │       │   │   │           ├── receiver: ∅
            │       │   │   │           ├── call_operator_loc: ∅
            │       │   │   │           ├── message_loc: (428...429) = "c"
            │       │   │   │           ├── opening_loc: (429...430) = "("
            │       │   │   │           ├── arguments:
            │       │   │   │           │   @ ArgumentsNode (location: (430...431))
            │       │   │   │           │   └── arguments: (length: 1)
            │       │   │   │           │       └── @ CallNode (location: (430...431))
            │       │   │   │           │           ├── receiver: ∅
            │       │   │   │           │           ├── call_operator_loc: ∅
            │       │   │   │           │           ├── message_loc: (430...431) = "d"
            │       │   │   │           │           ├── opening_loc: ∅
            │       │   │   │           │           ├── arguments: ∅
            │       │   │   │           │           ├── closing_loc: ∅
            │       │   │   │           │           ├── block: ∅
            │       │   │   │           │           ├── flags: variable_call
            │       │   │   │           │           └── name: "d"
            │       │   │   │           ├── closing_loc: (431...432) = ")"
            │       │   │   │           ├── block: ∅
            │       │   │   │           ├── flags: ∅
            │       │   │   │           └── name: "c"
            │       │   │   ├── opening_loc: (427...428) = "{"
            │       │   │   └── closing_loc: (432...433) = "}"
            │       │   ├── flags: ∅
            │       │   └── name: "b"
            │       └── @ SymbolNode (location: (435...437))
            │           ├── opening_loc: (435...436) = ":"
            │           ├── value_loc: (436...437) = "e"
            │           ├── closing_loc: ∅
            │           └── unescaped: "e"
            ├── closing_loc: ∅
            ├── block:
            │   @ BlockNode (location: (438...444))
            │   ├── locals: []
            │   ├── parameters: ∅
            │   ├── body: ∅
            │   ├── opening_loc: (438...440) = "do"
            │   └── closing_loc: (441...444) = "end"
            ├── flags: ∅
            └── name: "a"
