@ ProgramNode (location: (1,0)-(3,22)) ├── locals: [:a] └── statements: @ StatementsNode (location: (1,0)-(3,22)) └── body: (length: 2) ├── @ ForNode (location: (1,0)-(1,24)) │ ├── index: │ │ @ LocalVariableTargetNode (location: (1,4)-(1,5)) │ │ ├── name: :a │ │ └── depth: 0 │ ├── collection: │ │ @ CallNode (location: (1,9)-(1,12)) │ │ ├── flags: variable_call, ignore_visibility │ │ ├── receiver: ∅ │ │ ├── call_operator_loc: ∅ │ │ ├── name: :foo │ │ ├── message_loc: (1,9)-(1,12) = "foo" │ │ ├── opening_loc: ∅ │ │ ├── arguments: ∅ │ │ ├── closing_loc: ∅ │ │ └── block: ∅ │ ├── statements: │ │ @ StatementsNode (location: (1,16)-(1,19)) │ │ └── body: (length: 1) │ │ └── @ CallNode (location: (1,16)-(1,19)) │ │ ├── flags: ignore_visibility │ │ ├── receiver: ∅ │ │ ├── call_operator_loc: ∅ │ │ ├── name: :p │ │ ├── message_loc: (1,16)-(1,17) = "p" │ │ ├── opening_loc: ∅ │ │ ├── arguments: │ │ │ @ ArgumentsNode (location: (1,18)-(1,19)) │ │ │ ├── flags: ∅ │ │ │ └── arguments: (length: 1) │ │ │ └── @ LocalVariableReadNode (location: (1,18)-(1,19)) │ │ │ ├── name: :a │ │ │ └── depth: 0 │ │ ├── closing_loc: ∅ │ │ └── block: ∅ │ ├── for_keyword_loc: (1,0)-(1,3) = "for" │ ├── in_keyword_loc: (1,6)-(1,8) = "in" │ ├── do_keyword_loc: (1,13)-(1,15) = "do" │ └── end_keyword_loc: (1,21)-(1,24) = "end" └── @ ForNode (location: (3,0)-(3,22)) ├── index: │ @ LocalVariableTargetNode (location: (3,4)-(3,5)) │ ├── name: :a │ └── depth: 0 ├── collection: │ @ CallNode (location: (3,9)-(3,12)) │ ├── flags: variable_call, ignore_visibility │ ├── receiver: ∅ │ ├── call_operator_loc: ∅ │ ├── name: :foo │ ├── message_loc: (3,9)-(3,12) = "foo" │ ├── opening_loc: ∅ │ ├── arguments: ∅ │ ├── closing_loc: ∅ │ └── block: ∅ ├── statements: │ @ StatementsNode (location: (3,14)-(3,17)) │ └── body: (length: 1) │ └── @ CallNode (location: (3,14)-(3,17)) │ ├── flags: ignore_visibility │ ├── receiver: ∅ │ ├── call_operator_loc: ∅ │ ├── name: :p │ ├── message_loc: (3,14)-(3,15) = "p" │ ├── opening_loc: ∅ │ ├── arguments: │ │ @ ArgumentsNode (location: (3,16)-(3,17)) │ │ ├── flags: ∅ │ │ └── arguments: (length: 1) │ │ └── @ LocalVariableReadNode (location: (3,16)-(3,17)) │ │ ├── name: :a │ │ └── depth: 0 │ ├── closing_loc: ∅ │ └── block: ∅ ├── for_keyword_loc: (3,0)-(3,3) = "for" ├── in_keyword_loc: (3,6)-(3,8) = "in" ├── do_keyword_loc: ∅ └── end_keyword_loc: (3,19)-(3,22) = "end"