@ ProgramNode (location: (1,0)-(11,17)) ├── locals: [] └── statements: @ StatementsNode (location: (1,0)-(11,17)) └── body: (length: 6) ├── @ CallNode (location: (1,0)-(1,14)) │ ├── flags: ignore_visibility │ ├── receiver: ∅ │ ├── call_operator_loc: ∅ │ ├── name: :fun │ ├── message_loc: (1,0)-(1,3) = "fun" │ ├── opening_loc: (1,3)-(1,4) = "(" │ ├── arguments: │ │ @ ArgumentsNode (location: (1,4)-(1,13)) │ │ ├── flags: ∅ │ │ └── arguments: (length: 1) │ │ └── @ KeywordHashNode (location: (1,4)-(1,13)) │ │ ├── flags: symbol_keys │ │ └── elements: (length: 1) │ │ └── @ AssocNode (location: (1,4)-(1,13)) │ │ ├── key: │ │ │ @ SymbolNode (location: (1,4)-(1,8)) │ │ │ ├── flags: forced_us_ascii_encoding │ │ │ ├── opening_loc: (1,4)-(1,5) = ":" │ │ │ ├── value_loc: (1,5)-(1,8) = "foo" │ │ │ ├── closing_loc: ∅ │ │ │ └── unescaped: "foo" │ │ ├── value: │ │ │ @ IntegerNode (location: (1,12)-(1,13)) │ │ │ ├── flags: decimal │ │ │ └── value: 1 │ │ └── operator_loc: (1,9)-(1,11) = "=>" │ ├── closing_loc: (1,13)-(1,14) = ")" │ └── block: ∅ ├── @ CallNode (location: (3,0)-(3,19)) │ ├── flags: ignore_visibility │ ├── receiver: ∅ │ ├── call_operator_loc: ∅ │ ├── name: :fun │ ├── message_loc: (3,0)-(3,3) = "fun" │ ├── opening_loc: (3,3)-(3,4) = "(" │ ├── arguments: │ │ @ ArgumentsNode (location: (3,4)-(3,13)) │ │ ├── flags: ∅ │ │ └── arguments: (length: 1) │ │ └── @ KeywordHashNode (location: (3,4)-(3,13)) │ │ ├── flags: symbol_keys │ │ └── elements: (length: 1) │ │ └── @ AssocNode (location: (3,4)-(3,13)) │ │ ├── key: │ │ │ @ SymbolNode (location: (3,4)-(3,8)) │ │ │ ├── flags: forced_us_ascii_encoding │ │ │ ├── opening_loc: (3,4)-(3,5) = ":" │ │ │ ├── value_loc: (3,5)-(3,8) = "foo" │ │ │ ├── closing_loc: ∅ │ │ │ └── unescaped: "foo" │ │ ├── value: │ │ │ @ IntegerNode (location: (3,12)-(3,13)) │ │ │ ├── flags: decimal │ │ │ └── value: 1 │ │ └── operator_loc: (3,9)-(3,11) = "=>" │ ├── closing_loc: (3,19)-(3,20) = ")" │ └── block: │ @ BlockArgumentNode (location: (3,15)-(3,19)) │ ├── expression: │ │ @ CallNode (location: (3,16)-(3,19)) │ │ ├── flags: variable_call, ignore_visibility │ │ ├── receiver: ∅ │ │ ├── call_operator_loc: ∅ │ │ ├── name: :baz │ │ ├── message_loc: (3,16)-(3,19) = "baz" │ │ ├── opening_loc: ∅ │ │ ├── arguments: ∅ │ │ ├── closing_loc: ∅ │ │ └── block: ∅ │ └── operator_loc: (3,15)-(3,16) = "&" ├── @ CallNode (location: (5,0)-(5,21)) │ ├── flags: ignore_visibility │ ├── receiver: │ │ @ SelfNode (location: (5,0)-(5,4)) │ ├── call_operator_loc: (5,4)-(5,5) = "." │ ├── name: :[]= │ ├── message_loc: (5,5)-(5,8) = "[]=" │ ├── opening_loc: ∅ │ ├── arguments: │ │ @ ArgumentsNode (location: (5,9)-(5,21)) │ │ ├── flags: ∅ │ │ └── arguments: (length: 2) │ │ ├── @ CallNode (location: (5,9)-(5,12)) │ │ │ ├── flags: variable_call, ignore_visibility │ │ │ ├── receiver: ∅ │ │ │ ├── call_operator_loc: ∅ │ │ │ ├── name: :foo │ │ │ ├── message_loc: (5,9)-(5,12) = "foo" │ │ │ ├── opening_loc: ∅ │ │ │ ├── arguments: ∅ │ │ │ ├── closing_loc: ∅ │ │ │ └── block: ∅ │ │ └── @ KeywordHashNode (location: (5,14)-(5,21)) │ │ ├── flags: symbol_keys │ │ └── elements: (length: 1) │ │ └── @ AssocNode (location: (5,14)-(5,21)) │ │ ├── key: │ │ │ @ SymbolNode (location: (5,14)-(5,16)) │ │ │ ├── flags: forced_us_ascii_encoding │ │ │ ├── opening_loc: (5,14)-(5,15) = ":" │ │ │ ├── value_loc: (5,15)-(5,16) = "a" │ │ │ ├── closing_loc: ∅ │ │ │ └── unescaped: "a" │ │ ├── value: │ │ │ @ IntegerNode (location: (5,20)-(5,21)) │ │ │ ├── flags: decimal │ │ │ └── value: 1 │ │ └── operator_loc: (5,17)-(5,19) = "=>" │ ├── closing_loc: ∅ │ └── block: ∅ ├── @ CallNode (location: (7,0)-(7,15)) │ ├── flags: ignore_visibility │ ├── receiver: │ │ @ SelfNode (location: (7,0)-(7,4)) │ ├── call_operator_loc: ∅ │ ├── name: :[] │ ├── message_loc: (7,4)-(7,15) = "[:bar => 1]" │ ├── opening_loc: (7,4)-(7,5) = "[" │ ├── arguments: │ │ @ ArgumentsNode (location: (7,5)-(7,14)) │ │ ├── flags: ∅ │ │ └── arguments: (length: 1) │ │ └── @ KeywordHashNode (location: (7,5)-(7,14)) │ │ ├── flags: symbol_keys │ │ └── elements: (length: 1) │ │ └── @ AssocNode (location: (7,5)-(7,14)) │ │ ├── key: │ │ │ @ SymbolNode (location: (7,5)-(7,9)) │ │ │ ├── flags: forced_us_ascii_encoding │ │ │ ├── opening_loc: (7,5)-(7,6) = ":" │ │ │ ├── value_loc: (7,6)-(7,9) = "bar" │ │ │ ├── closing_loc: ∅ │ │ │ └── unescaped: "bar" │ │ ├── value: │ │ │ @ IntegerNode (location: (7,13)-(7,14)) │ │ │ ├── flags: decimal │ │ │ └── value: 1 │ │ └── operator_loc: (7,10)-(7,12) = "=>" │ ├── closing_loc: (7,14)-(7,15) = "]" │ └── block: ∅ ├── @ SuperNode (location: (9,0)-(9,17)) │ ├── keyword_loc: (9,0)-(9,5) = "super" │ ├── lparen_loc: (9,5)-(9,6) = "(" │ ├── arguments: │ │ @ ArgumentsNode (location: (9,6)-(9,16)) │ │ ├── flags: ∅ │ │ └── arguments: (length: 1) │ │ └── @ KeywordHashNode (location: (9,6)-(9,16)) │ │ ├── flags: symbol_keys │ │ └── elements: (length: 1) │ │ └── @ AssocNode (location: (9,6)-(9,16)) │ │ ├── key: │ │ │ @ SymbolNode (location: (9,6)-(9,10)) │ │ │ ├── flags: forced_us_ascii_encoding │ │ │ ├── opening_loc: (9,6)-(9,7) = ":" │ │ │ ├── value_loc: (9,7)-(9,10) = "foo" │ │ │ ├── closing_loc: ∅ │ │ │ └── unescaped: "foo" │ │ ├── value: │ │ │ @ IntegerNode (location: (9,14)-(9,16)) │ │ │ ├── flags: decimal │ │ │ └── value: 42 │ │ └── operator_loc: (9,11)-(9,13) = "=>" │ ├── rparen_loc: (9,16)-(9,17) = ")" │ └── block: ∅ └── @ YieldNode (location: (11,0)-(11,17)) ├── keyword_loc: (11,0)-(11,5) = "yield" ├── lparen_loc: (11,5)-(11,6) = "(" ├── arguments: │ @ ArgumentsNode (location: (11,6)-(11,16)) │ ├── flags: ∅ │ └── arguments: (length: 1) │ └── @ KeywordHashNode (location: (11,6)-(11,16)) │ ├── flags: symbol_keys │ └── elements: (length: 1) │ └── @ AssocNode (location: (11,6)-(11,16)) │ ├── key: │ │ @ SymbolNode (location: (11,6)-(11,10)) │ │ ├── flags: forced_us_ascii_encoding │ │ ├── opening_loc: (11,6)-(11,7) = ":" │ │ ├── value_loc: (11,7)-(11,10) = "foo" │ │ ├── closing_loc: ∅ │ │ └── unescaped: "foo" │ ├── value: │ │ @ IntegerNode (location: (11,14)-(11,16)) │ │ ├── flags: decimal │ │ └── value: 42 │ └── operator_loc: (11,11)-(11,13) = "=>" └── rparen_loc: (11,16)-(11,17) = ")"