@ ProgramNode (location: (0...168))
├── locals: []
└── statements:
    @ StatementsNode (location: (0...168))
    └── body: (length: 11)
        ├── @ BreakNode (location: (0...5))
        │   ├── arguments: ∅
        │   └── keyword_loc: (0...5) = "break"
        ├── @ BreakNode (location: (7...26))
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (13...26))
        │   │   └── arguments: (length: 3)
        │   │       ├── @ ParenthesesNode (location: (13...16))
        │   │       │   ├── body:
        │   │       │   │   @ StatementsNode (location: (14...15))
        │   │       │   │   └── body: (length: 1)
        │   │       │   │       └── @ IntegerNode (location: (14...15))
        │   │       │   │           └── flags: decimal
        │   │       │   ├── opening_loc: (13...14) = "("
        │   │       │   └── closing_loc: (15...16) = ")"
        │   │       ├── @ ParenthesesNode (location: (18...21))
        │   │       │   ├── body:
        │   │       │   │   @ StatementsNode (location: (19...20))
        │   │       │   │   └── body: (length: 1)
        │   │       │   │       └── @ IntegerNode (location: (19...20))
        │   │       │   │           └── flags: decimal
        │   │       │   ├── opening_loc: (18...19) = "("
        │   │       │   └── closing_loc: (20...21) = ")"
        │   │       └── @ ParenthesesNode (location: (23...26))
        │   │           ├── body:
        │   │           │   @ StatementsNode (location: (24...25))
        │   │           │   └── body: (length: 1)
        │   │           │       └── @ IntegerNode (location: (24...25))
        │   │           │           └── flags: decimal
        │   │           ├── opening_loc: (23...24) = "("
        │   │           └── closing_loc: (25...26) = ")"
        │   └── keyword_loc: (7...12) = "break"
        ├── @ BreakNode (location: (28...35))
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (34...35))
        │   │   └── arguments: (length: 1)
        │   │       └── @ IntegerNode (location: (34...35))
        │   │           └── flags: decimal
        │   └── keyword_loc: (28...33) = "break"
        ├── @ BreakNode (location: (37...50))
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (43...50))
        │   │   └── arguments: (length: 3)
        │   │       ├── @ IntegerNode (location: (43...44))
        │   │       │   └── flags: decimal
        │   │       ├── @ IntegerNode (location: (46...47))
        │   │       │   └── flags: decimal
        │   │       └── @ IntegerNode (location: (49...50))
        │   │           └── flags: decimal
        │   └── keyword_loc: (37...42) = "break"
        ├── @ BreakNode (location: (52...65))
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (58...65))
        │   │   └── arguments: (length: 3)
        │   │       ├── @ IntegerNode (location: (58...59))
        │   │       │   └── flags: decimal
        │   │       ├── @ IntegerNode (location: (61...62))
        │   │       │   └── flags: decimal
        │   │       └── @ IntegerNode (location: (64...65))
        │   │           └── flags: decimal
        │   └── keyword_loc: (52...57) = "break"
        ├── @ BreakNode (location: (67...82))
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (73...82))
        │   │   └── arguments: (length: 1)
        │   │       └── @ ArrayNode (location: (73...82))
        │   │           ├── elements: (length: 3)
        │   │           │   ├── @ IntegerNode (location: (74...75))
        │   │           │   │   └── flags: decimal
        │   │           │   ├── @ IntegerNode (location: (77...78))
        │   │           │   │   └── flags: decimal
        │   │           │   └── @ IntegerNode (location: (80...81))
        │   │           │       └── flags: decimal
        │   │           ├── opening_loc: (73...74) = "["
        │   │           └── closing_loc: (81...82) = "]"
        │   └── keyword_loc: (67...72) = "break"
        ├── @ BreakNode (location: (84...100))
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (89...100))
        │   │   └── arguments: (length: 1)
        │   │       └── @ ParenthesesNode (location: (89...100))
        │   │           ├── body:
        │   │           │   @ StatementsNode (location: (93...98))
        │   │           │   └── body: (length: 2)
        │   │           │       ├── @ IntegerNode (location: (93...94))
        │   │           │       │   └── flags: decimal
        │   │           │       └── @ IntegerNode (location: (97...98))
        │   │           │           └── flags: decimal
        │   │           ├── opening_loc: (89...90) = "("
        │   │           └── closing_loc: (99...100) = ")"
        │   └── keyword_loc: (84...89) = "break"
        ├── @ BreakNode (location: (102...109))
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (107...109))
        │   │   └── arguments: (length: 1)
        │   │       └── @ ParenthesesNode (location: (107...109))
        │   │           ├── body: ∅
        │   │           ├── opening_loc: (107...108) = "("
        │   │           └── closing_loc: (108...109) = ")"
        │   └── keyword_loc: (102...107) = "break"
        ├── @ BreakNode (location: (111...119))
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (116...119))
        │   │   └── arguments: (length: 1)
        │   │       └── @ ParenthesesNode (location: (116...119))
        │   │           ├── body:
        │   │           │   @ StatementsNode (location: (117...118))
        │   │           │   └── body: (length: 1)
        │   │           │       └── @ IntegerNode (location: (117...118))
        │   │           │           └── flags: decimal
        │   │           ├── opening_loc: (116...117) = "("
        │   │           └── closing_loc: (118...119) = ")"
        │   └── keyword_loc: (111...116) = "break"
        ├── @ CallNode (location: (121...143))
        │   ├── receiver:
        │   │   @ CallNode (location: (121...137))
        │   │   ├── receiver: ∅
        │   │   ├── call_operator_loc: ∅
        │   │   ├── message_loc: (121...124) = "foo"
        │   │   ├── opening_loc: ∅
        │   │   ├── arguments: ∅
        │   │   ├── closing_loc: ∅
        │   │   ├── block:
        │   │   │   @ BlockNode (location: (125...137))
        │   │   │   ├── locals: []
        │   │   │   ├── parameters: ∅
        │   │   │   ├── body:
        │   │   │   │   @ StatementsNode (location: (127...135))
        │   │   │   │   └── body: (length: 1)
        │   │   │   │       └── @ BreakNode (location: (127...135))
        │   │   │   │           ├── arguments:
        │   │   │   │           │   @ ArgumentsNode (location: (133...135))
        │   │   │   │           │   └── arguments: (length: 1)
        │   │   │   │           │       └── @ IntegerNode (location: (133...135))
        │   │   │   │           │           └── flags: decimal
        │   │   │   │           └── keyword_loc: (127...132) = "break"
        │   │   │   ├── opening_loc: (125...126) = "{"
        │   │   │   └── closing_loc: (136...137) = "}"
        │   │   ├── flags: ∅
        │   │   └── name: "foo"
        │   ├── call_operator_loc: ∅
        │   ├── message_loc: (138...140) = "=="
        │   ├── opening_loc: ∅
        │   ├── arguments:
        │   │   @ ArgumentsNode (location: (141...143))
        │   │   └── arguments: (length: 1)
        │   │       └── @ IntegerNode (location: (141...143))
        │   │           └── flags: decimal
        │   ├── closing_loc: ∅
        │   ├── block: ∅
        │   ├── flags: ∅
        │   └── name: "=="
        └── @ CallNode (location: (145...168))
            ├── receiver:
            │   @ CallNode (location: (145...162))
            │   ├── receiver: ∅
            │   ├── call_operator_loc: ∅
            │   ├── message_loc: (145...148) = "foo"
            │   ├── opening_loc: ∅
            │   ├── arguments: ∅
            │   ├── closing_loc: ∅
            │   ├── block:
            │   │   @ BlockNode (location: (149...162))
            │   │   ├── locals: [:a]
            │   │   ├── parameters:
            │   │   │   @ BlockParametersNode (location: (151...154))
            │   │   │   ├── parameters:
            │   │   │   │   @ ParametersNode (location: (152...153))
            │   │   │   │   ├── requireds: (length: 1)
            │   │   │   │   │   └── @ RequiredParameterNode (location: (152...153))
            │   │   │   │   │       └── name: :a
            │   │   │   │   ├── optionals: (length: 0)
            │   │   │   │   ├── rest: ∅
            │   │   │   │   ├── posts: (length: 0)
            │   │   │   │   ├── keywords: (length: 0)
            │   │   │   │   ├── keyword_rest: ∅
            │   │   │   │   └── block: ∅
            │   │   │   ├── locals: (length: 0)
            │   │   │   ├── opening_loc: (151...152) = "|"
            │   │   │   └── closing_loc: (153...154) = "|"
            │   │   ├── body:
            │   │   │   @ StatementsNode (location: (155...160))
            │   │   │   └── body: (length: 1)
            │   │   │       └── @ BreakNode (location: (155...160))
            │   │   │           ├── arguments: ∅
            │   │   │           └── keyword_loc: (155...160) = "break"
            │   │   ├── opening_loc: (149...150) = "{"
            │   │   └── closing_loc: (161...162) = "}"
            │   ├── flags: ∅
            │   └── name: "foo"
            ├── call_operator_loc: ∅
            ├── message_loc: (163...165) = "=="
            ├── opening_loc: ∅
            ├── arguments:
            │   @ ArgumentsNode (location: (166...168))
            │   └── arguments: (length: 1)
            │       └── @ IntegerNode (location: (166...168))
            │           └── flags: decimal
            ├── closing_loc: ∅
            ├── block: ∅
            ├── flags: ∅
            └── name: "=="
