@ ProgramNode (location: (0...37))
├── locals: []
└── statements:
    @ StatementsNode (location: (0...37))
    └── body: (length: 2)
        ├── @ HashNode (location: (0...10))
        │   ├── opening_loc: (0...1) = "{"
        │   ├── elements: (length: 1)
        │   │   └── @ AssocNode (location: (2...8))
        │   │       ├── key:
        │   │       │   @ IntegerNode (location: (2...3))
        │   │       │   └── flags: decimal
        │   │       ├── value:
        │   │       │   @ IntegerNode (location: (7...8))
        │   │       │   └── flags: decimal
        │   │       └── operator_loc: (4...6) = "=>"
        │   └── closing_loc: (9...10) = "}"
        └── @ HashNode (location: (12...37))
            ├── opening_loc: (12...13) = "{"
            ├── elements: (length: 2)
            │   ├── @ AssocNode (location: (14...20))
            │   │   ├── key:
            │   │   │   @ IntegerNode (location: (14...15))
            │   │   │   └── flags: decimal
            │   │   ├── value:
            │   │   │   @ IntegerNode (location: (19...20))
            │   │   │   └── flags: decimal
            │   │   └── operator_loc: (16...18) = "=>"
            │   └── @ AssocNode (location: (22...35))
            │       ├── key:
            │       │   @ SymbolNode (location: (22...26))
            │       │   ├── opening_loc: (22...23) = ":"
            │       │   ├── value_loc: (23...26) = "foo"
            │       │   ├── closing_loc: ∅
            │       │   └── unescaped: "foo"
            │       ├── value:
            │       │   @ StringNode (location: (30...35))
            │       │   ├── opening_loc: (30...31) = "\""
            │       │   ├── content_loc: (31...34) = "bar"
            │       │   ├── closing_loc: (34...35) = "\""
            │       │   └── unescaped: "bar"
            │       └── operator_loc: (27...29) = "=>"
            └── closing_loc: (36...37) = "}"
