@ ProgramNode (location: (1,0)-(11,17))
├── locals: []
└── statements:
    @ StatementsNode (location: (1,0)-(11,17))
    └── body: (length: 6)
        ├── @ CallNode (location: (1,0)-(1,14))
        │   ├── flags: ∅
        │   ├── 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: static_keys
        │   │           └── elements: (length: 1)
        │   │               └── @ AssocNode (location: (1,4)-(1,13))
        │   │                   ├── key:
        │   │                   │   @ SymbolNode (location: (1,4)-(1,8))
        │   │                   │   ├── flags: ∅
        │   │                   │   ├── 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
        │   │                   └── operator_loc: (1,9)-(1,11) = "=>"
        │   ├── closing_loc: (1,13)-(1,14) = ")"
        │   └── block: ∅
        ├── @ CallNode (location: (3,0)-(3,19))
        │   ├── flags: ∅
        │   ├── 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: static_keys
        │   │           └── elements: (length: 1)
        │   │               └── @ AssocNode (location: (3,4)-(3,13))
        │   │                   ├── key:
        │   │                   │   @ SymbolNode (location: (3,4)-(3,8))
        │   │                   │   ├── flags: ∅
        │   │                   │   ├── 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
        │   │                   └── 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
        │       │   ├── 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: ∅
        │   ├── 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
        │   │       │   ├── 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: static_keys
        │   │           └── elements: (length: 1)
        │   │               └── @ AssocNode (location: (5,14)-(5,21))
        │   │                   ├── key:
        │   │                   │   @ SymbolNode (location: (5,14)-(5,16))
        │   │                   │   ├── flags: ∅
        │   │                   │   ├── 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
        │   │                   └── operator_loc: (5,17)-(5,19) = "=>"
        │   ├── closing_loc: ∅
        │   └── block: ∅
        ├── @ CallNode (location: (7,0)-(7,15))
        │   ├── flags: ∅
        │   ├── 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: static_keys
        │   │           └── elements: (length: 1)
        │   │               └── @ AssocNode (location: (7,5)-(7,14))
        │   │                   ├── key:
        │   │                   │   @ SymbolNode (location: (7,5)-(7,9))
        │   │                   │   ├── flags: ∅
        │   │                   │   ├── 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
        │   │                   └── 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: static_keys
        │   │           └── elements: (length: 1)
        │   │               └── @ AssocNode (location: (9,6)-(9,16))
        │   │                   ├── key:
        │   │                   │   @ SymbolNode (location: (9,6)-(9,10))
        │   │                   │   ├── flags: ∅
        │   │                   │   ├── 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
        │   │                   └── 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: static_keys
            │           └── elements: (length: 1)
            │               └── @ AssocNode (location: (11,6)-(11,16))
            │                   ├── key:
            │                   │   @ SymbolNode (location: (11,6)-(11,10))
            │                   │   ├── flags: ∅
            │                   │   ├── 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
            │                   └── operator_loc: (11,11)-(11,13) = "=>"
            └── rparen_loc: (11,16)-(11,17) = ")"
