@ ProgramNode (location: (0...116))
├── locals: []
└── statements:
    @ StatementsNode (location: (0...116))
    └── body: (length: 9)
        ├── @ UndefNode (location: (0...7))
        │   ├── names: (length: 1)
        │   │   └── @ SymbolNode (location: (6...7))
        │   │       ├── opening_loc: ∅
        │   │       ├── value_loc: (6...7) = "a"
        │   │       ├── closing_loc: ∅
        │   │       └── unescaped: "a"
        │   └── keyword_loc: (0...5) = "undef"
        ├── @ UndefNode (location: (9...19))
        │   ├── names: (length: 2)
        │   │   ├── @ SymbolNode (location: (15...16))
        │   │   │   ├── opening_loc: ∅
        │   │   │   ├── value_loc: (15...16) = "a"
        │   │   │   ├── closing_loc: ∅
        │   │   │   └── unescaped: "a"
        │   │   └── @ SymbolNode (location: (18...19))
        │   │       ├── opening_loc: ∅
        │   │       ├── value_loc: (18...19) = "b"
        │   │       ├── closing_loc: ∅
        │   │       └── unescaped: "b"
        │   └── keyword_loc: (9...14) = "undef"
        ├── @ UndefNode (location: (21...29))
        │   ├── names: (length: 1)
        │   │   └── @ SymbolNode (location: (27...29))
        │   │       ├── opening_loc: ∅
        │   │       ├── value_loc: (27...29) = "if"
        │   │       ├── closing_loc: ∅
        │   │       └── unescaped: "if"
        │   └── keyword_loc: (21...26) = "undef"
        ├── @ UndefNode (location: (31...40))
        │   ├── names: (length: 1)
        │   │   └── @ SymbolNode (location: (37...40))
        │   │       ├── opening_loc: ∅
        │   │       ├── value_loc: (37...40) = "<=>"
        │   │       ├── closing_loc: ∅
        │   │       └── unescaped: "<=>"
        │   └── keyword_loc: (31...36) = "undef"
        ├── @ UndefNode (location: (42...50))
        │   ├── names: (length: 1)
        │   │   └── @ SymbolNode (location: (48...50))
        │   │       ├── opening_loc: (48...49) = ":"
        │   │       ├── value_loc: (49...50) = "a"
        │   │       ├── closing_loc: ∅
        │   │       └── unescaped: "a"
        │   └── keyword_loc: (42...47) = "undef"
        ├── @ UndefNode (location: (52...68))
        │   ├── names: (length: 3)
        │   │   ├── @ SymbolNode (location: (58...60))
        │   │   │   ├── opening_loc: (58...59) = ":"
        │   │   │   ├── value_loc: (59...60) = "a"
        │   │   │   ├── closing_loc: ∅
        │   │   │   └── unescaped: "a"
        │   │   ├── @ SymbolNode (location: (62...64))
        │   │   │   ├── opening_loc: (62...63) = ":"
        │   │   │   ├── value_loc: (63...64) = "b"
        │   │   │   ├── closing_loc: ∅
        │   │   │   └── unescaped: "b"
        │   │   └── @ SymbolNode (location: (66...68))
        │   │       ├── opening_loc: (66...67) = ":"
        │   │       ├── value_loc: (67...68) = "c"
        │   │       ├── closing_loc: ∅
        │   │       └── unescaped: "c"
        │   └── keyword_loc: (52...57) = "undef"
        ├── @ UndefNode (location: (70...82))
        │   ├── names: (length: 1)
        │   │   └── @ SymbolNode (location: (76...82))
        │   │       ├── opening_loc: (76...78) = ":'"
        │   │       ├── value_loc: (78...81) = "abc"
        │   │       ├── closing_loc: (81...82) = "'"
        │   │       └── unescaped: "abc"
        │   └── keyword_loc: (70...75) = "undef"
        ├── @ UndefNode (location: (84...100))
        │   ├── names: (length: 1)
        │   │   └── @ InterpolatedSymbolNode (location: (90...100))
        │   │       ├── opening_loc: (90...92) = ":\""
        │   │       ├── parts: (length: 2)
        │   │       │   ├── @ StringNode (location: (92...95))
        │   │       │   │   ├── opening_loc: ∅
        │   │       │   │   ├── content_loc: (92...95) = "abc"
        │   │       │   │   ├── closing_loc: ∅
        │   │       │   │   └── unescaped: "abc"
        │   │       │   └── @ EmbeddedStatementsNode (location: (95...99))
        │   │       │       ├── opening_loc: (95...97) = "\#{"
        │   │       │       ├── statements:
        │   │       │       │   @ StatementsNode (location: (97...98))
        │   │       │       │   └── body: (length: 1)
        │   │       │       │       └── @ IntegerNode (location: (97...98))
        │   │       │       │           └── flags: decimal
        │   │       │       └── closing_loc: (98...99) = "}"
        │   │       └── closing_loc: (99...100) = "\""
        │   └── keyword_loc: (84...89) = "undef"
        └── @ UndefNode (location: (102...116))
            ├── names: (length: 1)
            │   └── @ SymbolNode (location: (108...116))
            │       ├── opening_loc: ∅
            │       ├── value_loc: (108...116) = "Constant"
            │       ├── closing_loc: ∅
            │       └── unescaped: "Constant"
            └── keyword_loc: (102...107) = "undef"
