@ ProgramNode (location: (0...23))
├── locals: []
└── statements:
    @ StatementsNode (location: (0...23))
    └── body: (length: 1)
        └── @ ArrayNode (location: (0...23))
            ├── elements: (length: 2)
            │   ├── @ InterpolatedStringNode (location: (1...4))
            │   │   ├── opening_loc: (1...4) = "<<A"
            │   │   ├── parts: (length: 3)
            │   │   │   ├── @ EmbeddedStatementsNode (location: (6...12))
            │   │   │   │   ├── opening_loc: (6...8) = "\#{"
            │   │   │   │   ├── statements:
            │   │   │   │   │   @ StatementsNode (location: (8...11))
            │   │   │   │   │   └── body: (length: 1)
            │   │   │   │   │       └── @ StringNode (location: (8...11))
            │   │   │   │   │           ├── opening_loc: (8...11) = "<<B"
            │   │   │   │   │           ├── content_loc: (13...15) = "b\n"
            │   │   │   │   │           ├── closing_loc: (15...17) = "B\n"
            │   │   │   │   │           └── unescaped: "b\n"
            │   │   │   │   └── closing_loc: (11...12) = "}"
            │   │   │   ├── @ StringNode (location: (12...13))
            │   │   │   │   ├── opening_loc: ∅
            │   │   │   │   ├── content_loc: (12...13) = "\n"
            │   │   │   │   ├── closing_loc: ∅
            │   │   │   │   └── unescaped: "\n"
            │   │   │   └── @ StringNode (location: (17...19))
            │   │   │       ├── opening_loc: ∅
            │   │   │       ├── content_loc: (17...19) = "a\n"
            │   │   │       ├── closing_loc: ∅
            │   │   │       └── unescaped: "a\n"
            │   │   └── closing_loc: (19...21) = "A\n"
            │   └── @ IntegerNode (location: (21...22))
            │       └── flags: decimal
            ├── opening_loc: (0...1) = "["
            └── closing_loc: (22...23) = "]"
