@ ProgramNode (location: (0...143))
├── locals: [:i, :j, :k]
└── statements:
    @ StatementsNode (location: (0...143))
    └── body: (length: 6)
        ├── @ ForNode (location: (0...20))
        │   ├── index:
        │   │   @ MultiTargetNode (location: (4...5))
        │   │   ├── targets: (length: 1)
        │   │   │   └── @ LocalVariableTargetNode (location: (4...5))
        │   │   │       ├── name: :i
        │   │   │       └── depth: 0
        │   │   ├── lparen_loc: ∅
        │   │   └── rparen_loc: ∅
        │   ├── collection:
        │   │   @ RangeNode (location: (9...14))
        │   │   ├── left:
        │   │   │   @ IntegerNode (location: (9...10))
        │   │   │   └── flags: decimal
        │   │   ├── right:
        │   │   │   @ IntegerNode (location: (12...14))
        │   │   │   └── flags: decimal
        │   │   ├── operator_loc: (10...12) = ".."
        │   │   └── flags: ∅
        │   ├── statements:
        │   │   @ StatementsNode (location: (15...16))
        │   │   └── body: (length: 1)
        │   │       └── @ LocalVariableReadNode (location: (15...16))
        │   │           ├── name: :i
        │   │           └── depth: 0
        │   ├── for_keyword_loc: (0...3) = "for"
        │   ├── in_keyword_loc: (6...8) = "in"
        │   ├── do_keyword_loc: ∅
        │   └── end_keyword_loc: (17...20) = "end"
        ├── @ ForNode (location: (22...44))
        │   ├── index:
        │   │   @ MultiTargetNode (location: (26...27))
        │   │   ├── targets: (length: 1)
        │   │   │   └── @ LocalVariableTargetNode (location: (26...27))
        │   │   │       ├── name: :i
        │   │   │       └── depth: 0
        │   │   ├── lparen_loc: ∅
        │   │   └── rparen_loc: ∅
        │   ├── collection:
        │   │   @ RangeNode (location: (31...36))
        │   │   ├── left:
        │   │   │   @ IntegerNode (location: (31...32))
        │   │   │   └── flags: decimal
        │   │   ├── right:
        │   │   │   @ IntegerNode (location: (34...36))
        │   │   │   └── flags: decimal
        │   │   ├── operator_loc: (32...34) = ".."
        │   │   └── flags: ∅
        │   ├── statements:
        │   │   @ StatementsNode (location: (38...39))
        │   │   └── body: (length: 1)
        │   │       └── @ LocalVariableReadNode (location: (38...39))
        │   │           ├── name: :i
        │   │           └── depth: 0
        │   ├── for_keyword_loc: (22...25) = "for"
        │   ├── in_keyword_loc: (28...30) = "in"
        │   ├── do_keyword_loc: ∅
        │   └── end_keyword_loc: (41...44) = "end"
        ├── @ ForNode (location: (46...68))
        │   ├── index:
        │   │   @ MultiTargetNode (location: (50...53))
        │   │   ├── targets: (length: 2)
        │   │   │   ├── @ LocalVariableTargetNode (location: (50...51))
        │   │   │   │   ├── name: :i
        │   │   │   │   └── depth: 0
        │   │   │   └── @ LocalVariableTargetNode (location: (52...53))
        │   │   │       ├── name: :j
        │   │   │       └── depth: 0
        │   │   ├── lparen_loc: ∅
        │   │   └── rparen_loc: ∅
        │   ├── collection:
        │   │   @ RangeNode (location: (57...62))
        │   │   ├── left:
        │   │   │   @ IntegerNode (location: (57...58))
        │   │   │   └── flags: decimal
        │   │   ├── right:
        │   │   │   @ IntegerNode (location: (60...62))
        │   │   │   └── flags: decimal
        │   │   ├── operator_loc: (58...60) = ".."
        │   │   └── flags: ∅
        │   ├── statements:
        │   │   @ StatementsNode (location: (63...64))
        │   │   └── body: (length: 1)
        │   │       └── @ LocalVariableReadNode (location: (63...64))
        │   │           ├── name: :i
        │   │           └── depth: 0
        │   ├── for_keyword_loc: (46...49) = "for"
        │   ├── in_keyword_loc: (54...56) = "in"
        │   ├── do_keyword_loc: ∅
        │   └── end_keyword_loc: (65...68) = "end"
        ├── @ ForNode (location: (70...94))
        │   ├── index:
        │   │   @ MultiTargetNode (location: (74...79))
        │   │   ├── targets: (length: 3)
        │   │   │   ├── @ LocalVariableTargetNode (location: (74...75))
        │   │   │   │   ├── name: :i
        │   │   │   │   └── depth: 0
        │   │   │   ├── @ LocalVariableTargetNode (location: (76...77))
        │   │   │   │   ├── name: :j
        │   │   │   │   └── depth: 0
        │   │   │   └── @ LocalVariableTargetNode (location: (78...79))
        │   │   │       ├── name: :k
        │   │   │       └── depth: 0
        │   │   ├── lparen_loc: ∅
        │   │   └── rparen_loc: ∅
        │   ├── collection:
        │   │   @ RangeNode (location: (83...88))
        │   │   ├── left:
        │   │   │   @ IntegerNode (location: (83...84))
        │   │   │   └── flags: decimal
        │   │   ├── right:
        │   │   │   @ IntegerNode (location: (86...88))
        │   │   │   └── flags: decimal
        │   │   ├── operator_loc: (84...86) = ".."
        │   │   └── flags: ∅
        │   ├── statements:
        │   │   @ StatementsNode (location: (89...90))
        │   │   └── body: (length: 1)
        │   │       └── @ LocalVariableReadNode (location: (89...90))
        │   │           ├── name: :i
        │   │           └── depth: 0
        │   ├── for_keyword_loc: (70...73) = "for"
        │   ├── in_keyword_loc: (80...82) = "in"
        │   ├── do_keyword_loc: ∅
        │   └── end_keyword_loc: (91...94) = "end"
        ├── @ ForNode (location: (96...119))
        │   ├── index:
        │   │   @ MultiTargetNode (location: (100...101))
        │   │   ├── targets: (length: 1)
        │   │   │   └── @ LocalVariableTargetNode (location: (100...101))
        │   │   │       ├── name: :i
        │   │   │       └── depth: 0
        │   │   ├── lparen_loc: ∅
        │   │   └── rparen_loc: ∅
        │   ├── collection:
        │   │   @ RangeNode (location: (105...110))
        │   │   ├── left:
        │   │   │   @ IntegerNode (location: (105...106))
        │   │   │   └── flags: decimal
        │   │   ├── right:
        │   │   │   @ IntegerNode (location: (108...110))
        │   │   │   └── flags: decimal
        │   │   ├── operator_loc: (106...108) = ".."
        │   │   └── flags: ∅
        │   ├── statements:
        │   │   @ StatementsNode (location: (114...115))
        │   │   └── body: (length: 1)
        │   │       └── @ LocalVariableReadNode (location: (114...115))
        │   │           ├── name: :i
        │   │           └── depth: 0
        │   ├── for_keyword_loc: (96...99) = "for"
        │   ├── in_keyword_loc: (102...104) = "in"
        │   ├── do_keyword_loc: (111...113) = "do"
        │   └── end_keyword_loc: (116...119) = "end"
        └── @ ForNode (location: (121...143))
            ├── index:
            │   @ MultiTargetNode (location: (125...126))
            │   ├── targets: (length: 1)
            │   │   └── @ LocalVariableTargetNode (location: (125...126))
            │   │       ├── name: :i
            │   │       └── depth: 0
            │   ├── lparen_loc: ∅
            │   └── rparen_loc: ∅
            ├── collection:
            │   @ RangeNode (location: (130...135))
            │   ├── left:
            │   │   @ IntegerNode (location: (130...131))
            │   │   └── flags: decimal
            │   ├── right:
            │   │   @ IntegerNode (location: (133...135))
            │   │   └── flags: decimal
            │   ├── operator_loc: (131...133) = ".."
            │   └── flags: ∅
            ├── statements:
            │   @ StatementsNode (location: (137...138))
            │   └── body: (length: 1)
            │       └── @ LocalVariableReadNode (location: (137...138))
            │           ├── name: :i
            │           └── depth: 0
            ├── for_keyword_loc: (121...124) = "for"
            ├── in_keyword_loc: (127...129) = "in"
            ├── do_keyword_loc: ∅
            └── end_keyword_loc: (140...143) = "end"
