@ ProgramNode (location: (1,0)-(13,23)) ├── locals: [] └── statements: @ StatementsNode (location: (1,0)-(13,23)) └── body: (length: 7) ├── @ CallNode (location: (1,0)-(1,21)) │ ├── flags: ∅ │ ├── receiver: │ │ @ CallNode (location: (1,0)-(1,13)) │ │ ├── flags: ignore_visibility │ │ ├── receiver: ∅ │ │ ├── call_operator_loc: ∅ │ │ ├── name: :meth │ │ ├── message_loc: (1,0)-(1,4) = "meth" │ │ ├── opening_loc: ∅ │ │ ├── arguments: │ │ │ @ ArgumentsNode (location: (1,5)-(1,6)) │ │ │ ├── flags: ∅ │ │ │ └── arguments: (length: 1) │ │ │ └── @ IntegerNode (location: (1,5)-(1,6)) │ │ │ ├── flags: decimal │ │ │ └── value: 1 │ │ ├── closing_loc: ∅ │ │ └── block: │ │ @ BlockNode (location: (1,7)-(1,13)) │ │ ├── locals: [] │ │ ├── parameters: ∅ │ │ ├── body: ∅ │ │ ├── opening_loc: (1,7)-(1,9) = "do" │ │ └── closing_loc: (1,10)-(1,13) = "end" │ ├── call_operator_loc: (1,13)-(1,14) = "." │ ├── name: :fun │ ├── message_loc: (1,14)-(1,17) = "fun" │ ├── opening_loc: ∅ │ ├── arguments: │ │ @ ArgumentsNode (location: (1,18)-(1,21)) │ │ ├── flags: ∅ │ │ └── arguments: (length: 1) │ │ └── @ CallNode (location: (1,18)-(1,21)) │ │ ├── flags: variable_call, ignore_visibility │ │ ├── receiver: ∅ │ │ ├── call_operator_loc: ∅ │ │ ├── name: :bar │ │ ├── message_loc: (1,18)-(1,21) = "bar" │ │ ├── opening_loc: ∅ │ │ ├── arguments: ∅ │ │ ├── closing_loc: ∅ │ │ └── block: ∅ │ ├── closing_loc: ∅ │ └── block: ∅ ├── @ CallNode (location: (3,0)-(3,28)) │ ├── flags: ∅ │ ├── receiver: │ │ @ CallNode (location: (3,0)-(3,13)) │ │ ├── flags: ignore_visibility │ │ ├── receiver: ∅ │ │ ├── call_operator_loc: ∅ │ │ ├── name: :meth │ │ ├── message_loc: (3,0)-(3,4) = "meth" │ │ ├── opening_loc: ∅ │ │ ├── arguments: │ │ │ @ ArgumentsNode (location: (3,5)-(3,6)) │ │ │ ├── flags: ∅ │ │ │ └── arguments: (length: 1) │ │ │ └── @ IntegerNode (location: (3,5)-(3,6)) │ │ │ ├── flags: decimal │ │ │ └── value: 1 │ │ ├── closing_loc: ∅ │ │ └── block: │ │ @ BlockNode (location: (3,7)-(3,13)) │ │ ├── locals: [] │ │ ├── parameters: ∅ │ │ ├── body: ∅ │ │ ├── opening_loc: (3,7)-(3,9) = "do" │ │ └── closing_loc: (3,10)-(3,13) = "end" │ ├── call_operator_loc: (3,13)-(3,14) = "." │ ├── name: :fun │ ├── message_loc: (3,14)-(3,17) = "fun" │ ├── opening_loc: ∅ │ ├── arguments: │ │ @ ArgumentsNode (location: (3,18)-(3,21)) │ │ ├── flags: ∅ │ │ └── arguments: (length: 1) │ │ └── @ CallNode (location: (3,18)-(3,21)) │ │ ├── flags: variable_call, ignore_visibility │ │ ├── receiver: ∅ │ │ ├── call_operator_loc: ∅ │ │ ├── name: :bar │ │ ├── message_loc: (3,18)-(3,21) = "bar" │ │ ├── opening_loc: ∅ │ │ ├── arguments: ∅ │ │ ├── closing_loc: ∅ │ │ └── block: ∅ │ ├── closing_loc: ∅ │ └── block: │ @ BlockNode (location: (3,22)-(3,28)) │ ├── locals: [] │ ├── parameters: ∅ │ ├── body: ∅ │ ├── opening_loc: (3,22)-(3,24) = "do" │ └── closing_loc: (3,25)-(3,28) = "end" ├── @ CallNode (location: (5,0)-(5,20)) │ ├── flags: ∅ │ ├── receiver: │ │ @ CallNode (location: (5,0)-(5,13)) │ │ ├── flags: ignore_visibility │ │ ├── receiver: ∅ │ │ ├── call_operator_loc: ∅ │ │ ├── name: :meth │ │ ├── message_loc: (5,0)-(5,4) = "meth" │ │ ├── opening_loc: ∅ │ │ ├── arguments: │ │ │ @ ArgumentsNode (location: (5,5)-(5,6)) │ │ │ ├── flags: ∅ │ │ │ └── arguments: (length: 1) │ │ │ └── @ IntegerNode (location: (5,5)-(5,6)) │ │ │ ├── flags: decimal │ │ │ └── value: 1 │ │ ├── closing_loc: ∅ │ │ └── block: │ │ @ BlockNode (location: (5,7)-(5,13)) │ │ ├── locals: [] │ │ ├── parameters: ∅ │ │ ├── body: ∅ │ │ ├── opening_loc: (5,7)-(5,9) = "do" │ │ └── closing_loc: (5,10)-(5,13) = "end" │ ├── call_operator_loc: (5,13)-(5,14) = "." │ ├── name: :fun │ ├── message_loc: (5,14)-(5,17) = "fun" │ ├── opening_loc: ∅ │ ├── arguments: ∅ │ ├── closing_loc: ∅ │ └── block: │ @ BlockNode (location: (5,18)-(5,20)) │ ├── locals: [] │ ├── parameters: ∅ │ ├── body: ∅ │ ├── opening_loc: (5,18)-(5,19) = "{" │ └── closing_loc: (5,19)-(5,20) = "}" ├── @ CallNode (location: (7,0)-(7,22)) │ ├── flags: ∅ │ ├── receiver: │ │ @ CallNode (location: (7,0)-(7,13)) │ │ ├── flags: ignore_visibility │ │ ├── receiver: ∅ │ │ ├── call_operator_loc: ∅ │ │ ├── name: :meth │ │ ├── message_loc: (7,0)-(7,4) = "meth" │ │ ├── opening_loc: ∅ │ │ ├── arguments: │ │ │ @ ArgumentsNode (location: (7,5)-(7,6)) │ │ │ ├── flags: ∅ │ │ │ └── arguments: (length: 1) │ │ │ └── @ IntegerNode (location: (7,5)-(7,6)) │ │ │ ├── flags: decimal │ │ │ └── value: 1 │ │ ├── closing_loc: ∅ │ │ └── block: │ │ @ BlockNode (location: (7,7)-(7,13)) │ │ ├── locals: [] │ │ ├── parameters: ∅ │ │ ├── body: ∅ │ │ ├── opening_loc: (7,7)-(7,9) = "do" │ │ └── closing_loc: (7,10)-(7,13) = "end" │ ├── call_operator_loc: (7,13)-(7,14) = "." │ ├── name: :fun │ ├── message_loc: (7,14)-(7,17) = "fun" │ ├── opening_loc: (7,17)-(7,18) = "(" │ ├── arguments: │ │ @ ArgumentsNode (location: (7,18)-(7,21)) │ │ ├── flags: ∅ │ │ └── arguments: (length: 1) │ │ └── @ CallNode (location: (7,18)-(7,21)) │ │ ├── flags: variable_call, ignore_visibility │ │ ├── receiver: ∅ │ │ ├── call_operator_loc: ∅ │ │ ├── name: :bar │ │ ├── message_loc: (7,18)-(7,21) = "bar" │ │ ├── opening_loc: ∅ │ │ ├── arguments: ∅ │ │ ├── closing_loc: ∅ │ │ └── block: ∅ │ ├── closing_loc: (7,21)-(7,22) = ")" │ └── block: ∅ ├── @ CallNode (location: (9,0)-(9,25)) │ ├── flags: ∅ │ ├── receiver: │ │ @ CallNode (location: (9,0)-(9,13)) │ │ ├── flags: ignore_visibility │ │ ├── receiver: ∅ │ │ ├── call_operator_loc: ∅ │ │ ├── name: :meth │ │ ├── message_loc: (9,0)-(9,4) = "meth" │ │ ├── opening_loc: ∅ │ │ ├── arguments: │ │ │ @ ArgumentsNode (location: (9,5)-(9,6)) │ │ │ ├── flags: ∅ │ │ │ └── arguments: (length: 1) │ │ │ └── @ IntegerNode (location: (9,5)-(9,6)) │ │ │ ├── flags: decimal │ │ │ └── value: 1 │ │ ├── closing_loc: ∅ │ │ └── block: │ │ @ BlockNode (location: (9,7)-(9,13)) │ │ ├── locals: [] │ │ ├── parameters: ∅ │ │ ├── body: ∅ │ │ ├── opening_loc: (9,7)-(9,9) = "do" │ │ └── closing_loc: (9,10)-(9,13) = "end" │ ├── call_operator_loc: (9,13)-(9,14) = "." │ ├── name: :fun │ ├── message_loc: (9,14)-(9,17) = "fun" │ ├── opening_loc: (9,17)-(9,18) = "(" │ ├── arguments: │ │ @ ArgumentsNode (location: (9,18)-(9,21)) │ │ ├── flags: ∅ │ │ └── arguments: (length: 1) │ │ └── @ CallNode (location: (9,18)-(9,21)) │ │ ├── flags: variable_call, ignore_visibility │ │ ├── receiver: ∅ │ │ ├── call_operator_loc: ∅ │ │ ├── name: :bar │ │ ├── message_loc: (9,18)-(9,21) = "bar" │ │ ├── opening_loc: ∅ │ │ ├── arguments: ∅ │ │ ├── closing_loc: ∅ │ │ └── block: ∅ │ ├── closing_loc: (9,21)-(9,22) = ")" │ └── block: │ @ BlockNode (location: (9,23)-(9,25)) │ ├── locals: [] │ ├── parameters: ∅ │ ├── body: ∅ │ ├── opening_loc: (9,23)-(9,24) = "{" │ └── closing_loc: (9,24)-(9,25) = "}" ├── @ CallNode (location: (11,0)-(11,22)) │ ├── flags: ∅ │ ├── receiver: │ │ @ CallNode (location: (11,0)-(11,13)) │ │ ├── flags: ignore_visibility │ │ ├── receiver: ∅ │ │ ├── call_operator_loc: ∅ │ │ ├── name: :meth │ │ ├── message_loc: (11,0)-(11,4) = "meth" │ │ ├── opening_loc: ∅ │ │ ├── arguments: │ │ │ @ ArgumentsNode (location: (11,5)-(11,6)) │ │ │ ├── flags: ∅ │ │ │ └── arguments: (length: 1) │ │ │ └── @ IntegerNode (location: (11,5)-(11,6)) │ │ │ ├── flags: decimal │ │ │ └── value: 1 │ │ ├── closing_loc: ∅ │ │ └── block: │ │ @ BlockNode (location: (11,7)-(11,13)) │ │ ├── locals: [] │ │ ├── parameters: ∅ │ │ ├── body: ∅ │ │ ├── opening_loc: (11,7)-(11,9) = "do" │ │ └── closing_loc: (11,10)-(11,13) = "end" │ ├── call_operator_loc: (11,13)-(11,15) = "::" │ ├── name: :fun │ ├── message_loc: (11,15)-(11,18) = "fun" │ ├── opening_loc: ∅ │ ├── arguments: │ │ @ ArgumentsNode (location: (11,19)-(11,22)) │ │ ├── flags: ∅ │ │ └── arguments: (length: 1) │ │ └── @ CallNode (location: (11,19)-(11,22)) │ │ ├── flags: variable_call, ignore_visibility │ │ ├── receiver: ∅ │ │ ├── call_operator_loc: ∅ │ │ ├── name: :bar │ │ ├── message_loc: (11,19)-(11,22) = "bar" │ │ ├── opening_loc: ∅ │ │ ├── arguments: ∅ │ │ ├── closing_loc: ∅ │ │ └── block: ∅ │ ├── closing_loc: ∅ │ └── block: ∅ └── @ CallNode (location: (13,0)-(13,23)) ├── flags: ∅ ├── receiver: │ @ CallNode (location: (13,0)-(13,13)) │ ├── flags: ignore_visibility │ ├── receiver: ∅ │ ├── call_operator_loc: ∅ │ ├── name: :meth │ ├── message_loc: (13,0)-(13,4) = "meth" │ ├── opening_loc: ∅ │ ├── arguments: │ │ @ ArgumentsNode (location: (13,5)-(13,6)) │ │ ├── flags: ∅ │ │ └── arguments: (length: 1) │ │ └── @ IntegerNode (location: (13,5)-(13,6)) │ │ ├── flags: decimal │ │ └── value: 1 │ ├── closing_loc: ∅ │ └── block: │ @ BlockNode (location: (13,7)-(13,13)) │ ├── locals: [] │ ├── parameters: ∅ │ ├── body: ∅ │ ├── opening_loc: (13,7)-(13,9) = "do" │ └── closing_loc: (13,10)-(13,13) = "end" ├── call_operator_loc: (13,13)-(13,15) = "::" ├── name: :fun ├── message_loc: (13,15)-(13,18) = "fun" ├── opening_loc: (13,18)-(13,19) = "(" ├── arguments: │ @ ArgumentsNode (location: (13,19)-(13,22)) │ ├── flags: ∅ │ └── arguments: (length: 1) │ └── @ CallNode (location: (13,19)-(13,22)) │ ├── flags: variable_call, ignore_visibility │ ├── receiver: ∅ │ ├── call_operator_loc: ∅ │ ├── name: :bar │ ├── message_loc: (13,19)-(13,22) = "bar" │ ├── opening_loc: ∅ │ ├── arguments: ∅ │ ├── closing_loc: ∅ │ └── block: ∅ ├── closing_loc: (13,22)-(13,23) = ")" └── block: ∅