@ ProgramNode (location: (0...66))
├── locals: []
└── statements:
    @ StatementsNode (location: (0...66))
    └── body: (length: 10)
        ├── @ CallNode (location: (0...1))
        │   ├── receiver: ∅
        │   ├── call_operator_loc: ∅
        │   ├── message_loc: (0...1) = "a"
        │   ├── opening_loc: ∅
        │   ├── arguments: ∅
        │   ├── closing_loc: ∅
        │   ├── block: ∅
        │   ├── flags: variable_call
        │   └── name: "a"
        ├── @ InstanceVariableReadNode (location: (2...4))
        │   └── name: :@a
        ├── @ ClassVariableReadNode (location: (5...8))
        │   └── name: :@@a
        ├── @ GlobalVariableReadNode (location: (9...11))
        │   └── name: :$a
        ├── @ NumberedReferenceReadNode (location: (12...14))
        │   └── number: 1
        ├── @ BackReferenceReadNode (location: (15...17))
        ├── @ ConstantReadNode (location: (18...23))
        │   └── name: :CONST
        ├── @ ConstantPathNode (location: (24...37))
        │   ├── parent:
        │   │   @ ConstantReadNode (location: (24...30))
        │   │   └── name: :SCOPED
        │   ├── child:
        │   │   @ ConstantReadNode (location: (32...37))
        │   │   └── name: :CONST
        │   └── delimiter_loc: (30...32) = "::"
        ├── @ ConstantPathNode (location: (38...48))
        │   ├── parent: ∅
        │   ├── child:
        │   │   @ ConstantReadNode (location: (40...48))
        │   │   └── name: :TOPLEVEL
        │   └── delimiter_loc: (38...40) = "::"
        └── @ ConstantPathNode (location: (49...66))
            ├── parent:
            │   @ ConstantPathNode (location: (49...59))
            │   ├── parent: ∅
            │   ├── child:
            │   │   @ ConstantReadNode (location: (51...59))
            │   │   └── name: :TOPLEVEL
            │   └── delimiter_loc: (49...51) = "::"
            ├── child:
            │   @ ConstantReadNode (location: (61...66))
            │   └── name: :CONST
            └── delimiter_loc: (59...61) = "::"
