@ ProgramNode (location: (1,0)-(17,21))
├── flags: ∅
├── locals: []
└── statements:
    @ StatementsNode (location: (1,0)-(17,21))
    ├── flags: ∅
    └── body: (length: 9)
        ├── @ ForwardingSuperNode (location: (1,0)-(1,5))
        │   ├── flags: newline
        │   └── block: ∅
        ├── @ SuperNode (location: (3,0)-(3,7))
        │   ├── flags: newline
        │   ├── keyword_loc: (3,0)-(3,5) = "super"
        │   ├── lparen_loc: (3,5)-(3,6) = "("
        │   ├── arguments: ∅
        │   ├── rparen_loc: (3,6)-(3,7) = ")"
        │   └── block: ∅
        ├── @ SuperNode (location: (5,0)-(5,8))
        │   ├── flags: newline
        │   ├── keyword_loc: (5,0)-(5,5) = "super"
        │   ├── lparen_loc: (5,5)-(5,6) = "("
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (5,6)-(5,7))
        │   │   ├── flags: ∅
        │   │   └── arguments: (length: 1)
        │   │       └── @ IntegerNode (location: (5,6)-(5,7))
        │   │           ├── flags: static_literal, decimal
        │   │           └── value: 1
        │   ├── rparen_loc: (5,7)-(5,8) = ")"
        │   └── block: ∅
        ├── @ SuperNode (location: (7,0)-(7,14))
        │   ├── flags: newline
        │   ├── keyword_loc: (7,0)-(7,5) = "super"
        │   ├── lparen_loc: (7,5)-(7,6) = "("
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (7,6)-(7,13))
        │   │   ├── flags: ∅
        │   │   └── arguments: (length: 3)
        │   │       ├── @ IntegerNode (location: (7,6)-(7,7))
        │   │       │   ├── flags: static_literal, decimal
        │   │       │   └── value: 1
        │   │       ├── @ IntegerNode (location: (7,9)-(7,10))
        │   │       │   ├── flags: static_literal, decimal
        │   │       │   └── value: 2
        │   │       └── @ IntegerNode (location: (7,12)-(7,13))
        │   │           ├── flags: static_literal, decimal
        │   │           └── value: 3
        │   ├── rparen_loc: (7,13)-(7,14) = ")"
        │   └── block: ∅
        ├── @ SuperNode (location: (9,0)-(9,11))
        │   ├── flags: newline
        │   ├── keyword_loc: (9,0)-(9,5) = "super"
        │   ├── lparen_loc: ∅
        │   ├── arguments: ∅
        │   ├── rparen_loc: ∅
        │   └── block:
        │       @ BlockArgumentNode (location: (9,6)-(9,11))
        │       ├── flags: ∅
        │       ├── expression:
        │       │   @ SymbolNode (location: (9,7)-(9,11))
        │       │   ├── flags: static_literal, forced_us_ascii_encoding
        │       │   ├── opening_loc: (9,7)-(9,8) = ":"
        │       │   ├── value_loc: (9,8)-(9,11) = "foo"
        │       │   ├── closing_loc: ∅
        │       │   └── unescaped: "foo"
        │       └── operator_loc: (9,6)-(9,7) = "&"
        ├── @ SuperNode (location: (11,0)-(11,12))
        │   ├── flags: newline
        │   ├── keyword_loc: (11,0)-(11,5) = "super"
        │   ├── lparen_loc: (11,5)-(11,6) = "("
        │   ├── arguments: ∅
        │   ├── rparen_loc: (11,11)-(11,12) = ")"
        │   └── block:
        │       @ BlockArgumentNode (location: (11,6)-(11,11))
        │       ├── flags: ∅
        │       ├── expression:
        │       │   @ SymbolNode (location: (11,7)-(11,11))
        │       │   ├── flags: static_literal, forced_us_ascii_encoding
        │       │   ├── opening_loc: (11,7)-(11,8) = ":"
        │       │   ├── value_loc: (11,8)-(11,11) = "foo"
        │       │   ├── closing_loc: ∅
        │       │   └── unescaped: "foo"
        │       └── operator_loc: (11,6)-(11,7) = "&"
        ├── @ ForwardingSuperNode (location: (13,0)-(13,8))
        │   ├── flags: newline
        │   └── block:
        │       @ BlockNode (location: (13,6)-(13,8))
        │       ├── flags: ∅
        │       ├── locals: []
        │       ├── parameters: ∅
        │       ├── body: ∅
        │       ├── opening_loc: (13,6)-(13,7) = "{"
        │       └── closing_loc: (13,7)-(13,8) = "}"
        ├── @ SuperNode (location: (15,0)-(15,17))
        │   ├── flags: newline
        │   ├── keyword_loc: (15,0)-(15,5) = "super"
        │   ├── lparen_loc: (15,5)-(15,6) = "("
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (15,6)-(15,13))
        │   │   ├── flags: ∅
        │   │   └── arguments: (length: 3)
        │   │       ├── @ IntegerNode (location: (15,6)-(15,7))
        │   │       │   ├── flags: static_literal, decimal
        │   │       │   └── value: 1
        │   │       ├── @ IntegerNode (location: (15,9)-(15,10))
        │   │       │   ├── flags: static_literal, decimal
        │   │       │   └── value: 2
        │   │       └── @ IntegerNode (location: (15,12)-(15,13))
        │   │           ├── flags: static_literal, decimal
        │   │           └── value: 3
        │   ├── rparen_loc: (15,13)-(15,14) = ")"
        │   └── block:
        │       @ BlockNode (location: (15,15)-(15,17))
        │       ├── flags: ∅
        │       ├── locals: []
        │       ├── parameters: ∅
        │       ├── body: ∅
        │       ├── opening_loc: (15,15)-(15,16) = "{"
        │       └── closing_loc: (15,16)-(15,17) = "}"
        └── @ SuperNode (location: (17,0)-(17,21))
            ├── flags: newline
            ├── keyword_loc: (17,0)-(17,5) = "super"
            ├── lparen_loc: (17,5)-(17,6) = "("
            ├── arguments:
            │   @ ArgumentsNode (location: (17,6)-(17,13))
            │   ├── flags: ∅
            │   └── arguments: (length: 3)
            │       ├── @ IntegerNode (location: (17,6)-(17,7))
            │       │   ├── flags: static_literal, decimal
            │       │   └── value: 1
            │       ├── @ IntegerNode (location: (17,9)-(17,10))
            │       │   ├── flags: static_literal, decimal
            │       │   └── value: 2
            │       └── @ IntegerNode (location: (17,12)-(17,13))
            │           ├── flags: static_literal, decimal
            │           └── value: 3
            ├── rparen_loc: (17,20)-(17,21) = ")"
            └── block:
                @ BlockArgumentNode (location: (17,15)-(17,20))
                ├── flags: ∅
                ├── expression:
                │   @ SymbolNode (location: (17,16)-(17,20))
                │   ├── flags: static_literal, forced_us_ascii_encoding
                │   ├── opening_loc: (17,16)-(17,17) = ":"
                │   ├── value_loc: (17,17)-(17,20) = "foo"
                │   ├── closing_loc: ∅
                │   └── unescaped: "foo"
                └── operator_loc: (17,15)-(17,16) = "&"
