@ ProgramNode (location: (0...178))
├── locals: []
└── statements:
    @ StatementsNode (location: (0...178))
    └── body: (length: 4)
        ├── @ ClassNode (location: (0...38))
        │   ├── locals: []
        │   ├── class_keyword_loc: (0...5) = "class"
        │   ├── constant_path:
        │   │   @ ConstantPathNode (location: (6...33))
        │   │   ├── parent:
        │   │   │   @ IfNode (location: (6...25))
        │   │   │   ├── if_keyword_loc: (6...8) = "if"
        │   │   │   ├── predicate:
        │   │   │   │   @ TrueNode (location: (9...13))
        │   │   │   ├── statements:
        │   │   │   │   @ StatementsNode (location: (15...21))
        │   │   │   │   └── body: (length: 1)
        │   │   │   │       └── @ ConstantReadNode (location: (15...21))
        │   │   │   │           └── name: :Object
        │   │   │   ├── consequent: ∅
        │   │   │   └── end_keyword_loc: (22...25) = "end"
        │   │   ├── child:
        │   │   │   @ ConstantReadNode (location: (27...33))
        │   │   │   └── name: :Kernel
        │   │   └── delimiter_loc: (25...27) = "::"
        │   ├── inheritance_operator_loc: ∅
        │   ├── superclass: ∅
        │   ├── body: ∅
        │   ├── end_keyword_loc: (35...38) = "end"
        │   └── name: :Kernel
        ├── @ ClassNode (location: (40...87))
        │   ├── locals: []
        │   ├── class_keyword_loc: (40...45) = "class"
        │   ├── constant_path:
        │   │   @ ConstantPathNode (location: (46...82))
        │   │   ├── parent:
        │   │   │   @ WhileNode (location: (46...74))
        │   │   │   ├── keyword_loc: (46...51) = "while"
        │   │   │   ├── closing_loc: (71...74) = "end"
        │   │   │   ├── predicate:
        │   │   │   │   @ TrueNode (location: (52...56))
        │   │   │   ├── statements:
        │   │   │   │   @ StatementsNode (location: (58...70))
        │   │   │   │   └── body: (length: 1)
        │   │   │   │       └── @ BreakNode (location: (58...70))
        │   │   │   │           ├── arguments:
        │   │   │   │           │   @ ArgumentsNode (location: (64...70))
        │   │   │   │           │   └── arguments: (length: 1)
        │   │   │   │           │       └── @ ConstantReadNode (location: (64...70))
        │   │   │   │           │           └── name: :Object
        │   │   │   │           └── keyword_loc: (58...63) = "break"
        │   │   │   └── flags: ∅
        │   │   ├── child:
        │   │   │   @ ConstantReadNode (location: (76...82))
        │   │   │   └── name: :Kernel
        │   │   └── delimiter_loc: (74...76) = "::"
        │   ├── inheritance_operator_loc: ∅
        │   ├── superclass: ∅
        │   ├── body: ∅
        │   ├── end_keyword_loc: (84...87) = "end"
        │   └── name: :Kernel
        ├── @ ModuleNode (location: (89...128))
        │   ├── locals: []
        │   ├── module_keyword_loc: (89...95) = "module"
        │   ├── constant_path:
        │   │   @ ConstantPathNode (location: (96...123))
        │   │   ├── parent:
        │   │   │   @ IfNode (location: (96...115))
        │   │   │   ├── if_keyword_loc: (96...98) = "if"
        │   │   │   ├── predicate:
        │   │   │   │   @ TrueNode (location: (99...103))
        │   │   │   ├── statements:
        │   │   │   │   @ StatementsNode (location: (105...111))
        │   │   │   │   └── body: (length: 1)
        │   │   │   │       └── @ ConstantReadNode (location: (105...111))
        │   │   │   │           └── name: :Object
        │   │   │   ├── consequent: ∅
        │   │   │   └── end_keyword_loc: (112...115) = "end"
        │   │   ├── child:
        │   │   │   @ ConstantReadNode (location: (117...123))
        │   │   │   └── name: :Kernel
        │   │   └── delimiter_loc: (115...117) = "::"
        │   ├── body: ∅
        │   ├── end_keyword_loc: (125...128) = "end"
        │   └── name: :Kernel
        └── @ ModuleNode (location: (130...178))
            ├── locals: []
            ├── module_keyword_loc: (130...136) = "module"
            ├── constant_path:
            │   @ ConstantPathNode (location: (137...173))
            │   ├── parent:
            │   │   @ WhileNode (location: (137...165))
            │   │   ├── keyword_loc: (137...142) = "while"
            │   │   ├── closing_loc: (162...165) = "end"
            │   │   ├── predicate:
            │   │   │   @ TrueNode (location: (143...147))
            │   │   ├── statements:
            │   │   │   @ StatementsNode (location: (149...161))
            │   │   │   └── body: (length: 1)
            │   │   │       └── @ BreakNode (location: (149...161))
            │   │   │           ├── arguments:
            │   │   │           │   @ ArgumentsNode (location: (155...161))
            │   │   │           │   └── arguments: (length: 1)
            │   │   │           │       └── @ ConstantReadNode (location: (155...161))
            │   │   │           │           └── name: :Object
            │   │   │           └── keyword_loc: (149...154) = "break"
            │   │   └── flags: ∅
            │   ├── child:
            │   │   @ ConstantReadNode (location: (167...173))
            │   │   └── name: :Kernel
            │   └── delimiter_loc: (165...167) = "::"
            ├── body: ∅
            ├── end_keyword_loc: (175...178) = "end"
            └── name: :Kernel
