@ ProgramNode (location: (1,0)-(4,1))
├── locals: []
└── statements:
    @ StatementsNode (location: (1,0)-(4,1))
    └── body: (length: 2)
        ├── @ ArrayNode (location: (1,0)-(3,4))
        │   ├── flags: ∅
        │   ├── elements: (length: 2)
        │   │   ├── @ StringNode (location: (2,0)-(2,3))
        │   │   │   ├── flags: ∅
        │   │   │   ├── opening_loc: (2,0)-(2,1) = "'"
        │   │   │   ├── content_loc: (2,1)-(2,2) = "a"
        │   │   │   ├── closing_loc: (2,2)-(2,3) = "'"
        │   │   │   └── unescaped: "a"
        │   │   └── @ StringNode (location: (3,0)-(3,3))
        │   │       ├── flags: ∅
        │   │       ├── opening_loc: (3,0)-(3,1) = "'"
        │   │       ├── content_loc: (3,1)-(3,2) = "b"
        │   │       ├── closing_loc: (3,2)-(3,3) = "'"
        │   │       └── unescaped: "b"
        │   ├── opening_loc: (1,0)-(1,1) = "["
        │   └── closing_loc: (3,3)-(3,4) = "]"
        └── @ IntegerNode (location: (4,0)-(4,1))
            └── flags: decimal
