@ ProgramNode (location: (1,0)-(7,23))
├── flags: ∅
├── locals: [:a]
└── statements:
    @ StatementsNode (location: (1,0)-(7,23))
    ├── flags: ∅
    └── body: (length: 4)
        ├── @ ClassVariableOperatorWriteNode (location: (1,0)-(1,11))
        │   ├── flags: newline
        │   ├── name: :@@var
        │   ├── name_loc: (1,0)-(1,5) = "@@var"
        │   ├── binary_operator_loc: (1,6)-(1,8) = "|="
        │   ├── value:
        │   │   @ IntegerNode (location: (1,9)-(1,11))
        │   │   ├── flags: static_literal, decimal
        │   │   └── value: 10
        │   └── binary_operator: :|
        ├── @ InstanceVariableOperatorWriteNode (location: (3,0)-(3,7))
        │   ├── flags: newline
        │   ├── name: :@a
        │   ├── name_loc: (3,0)-(3,2) = "@a"
        │   ├── binary_operator_loc: (3,3)-(3,5) = "|="
        │   ├── value:
        │   │   @ IntegerNode (location: (3,6)-(3,7))
        │   │   ├── flags: static_literal, decimal
        │   │   └── value: 1
        │   └── binary_operator: :|
        ├── @ LocalVariableOperatorWriteNode (location: (5,0)-(5,6))
        │   ├── flags: newline
        │   ├── name_loc: (5,0)-(5,1) = "a"
        │   ├── binary_operator_loc: (5,2)-(5,4) = "+="
        │   ├── value:
        │   │   @ IntegerNode (location: (5,5)-(5,6))
        │   │   ├── flags: static_literal, decimal
        │   │   └── value: 1
        │   ├── name: :a
        │   ├── binary_operator: :+
        │   └── depth: 0
        └── @ DefNode (location: (7,0)-(7,23))
            ├── flags: newline
            ├── name: :a
            ├── name_loc: (7,4)-(7,5) = "a"
            ├── receiver: ∅
            ├── parameters: ∅
            ├── body:
            │   @ StatementsNode (location: (7,7)-(7,18))
            │   ├── flags: ∅
            │   └── body: (length: 1)
            │       └── @ ClassVariableOperatorWriteNode (location: (7,7)-(7,18))
            │           ├── flags: newline
            │           ├── name: :@@var
            │           ├── name_loc: (7,7)-(7,12) = "@@var"
            │           ├── binary_operator_loc: (7,13)-(7,15) = "|="
            │           ├── value:
            │           │   @ IntegerNode (location: (7,16)-(7,18))
            │           │   ├── flags: static_literal, decimal
            │           │   └── value: 10
            │           └── binary_operator: :|
            ├── locals: []
            ├── def_keyword_loc: (7,0)-(7,3) = "def"
            ├── operator_loc: ∅
            ├── lparen_loc: ∅
            ├── rparen_loc: ∅
            ├── equal_loc: ∅
            └── end_keyword_loc: (7,20)-(7,23) = "end"
