ProgramNode(0...314)(
  [],
  StatementsNode(0...314)(
    [WhileNode(0...18)(
       (0...5),
       TrueNode(6...10)(),
       StatementsNode(12...13)([IntegerNode(12...13)()])
     ),
     WhileNode(20...32)(
       (22...27),
       TrueNode(28...32)(),
       StatementsNode(20...21)([IntegerNode(20...21)()])
     ),
     WhileNode(34...50)(
       (40...45),
       TrueNode(46...50)(),
       StatementsNode(34...39)([BreakNode(34...39)(nil, (34...39))])
     ),
     WhileNode(52...67)(
       (57...62),
       TrueNode(63...67)(),
       StatementsNode(52...56)([NextNode(52...56)(nil, (52...56))])
     ),
     WhileNode(69...86)(
       (76...81),
       TrueNode(82...86)(),
       StatementsNode(69...75)([ReturnNode(69...75)((69...75), nil)])
     ),
     WhileNode(88...109)(
       (99...104),
       CallNode(105...109)(
         nil,
         nil,
         (105...109),
         nil,
         nil,
         nil,
         nil,
         0,
         "bar?"
       ),
       StatementsNode(88...98)(
         [CallNode(88...98)(
            nil,
            nil,
            (88...91),
            nil,
            ArgumentsNode(92...98)(
              [SymbolNode(92...94)((92...93), (93...94), nil, "a"),
               SymbolNode(96...98)((96...97), (97...98), nil, "b")]
            ),
            nil,
            nil,
            0,
            "foo"
          )]
       )
     ),
     WhileNode(111...161)(
       (111...116),
       DefNode(117...149)(
         (126...129),
         SelfNode(121...125)(),
         ParametersNode(130...144)(
           [],
           [OptionalParameterNode(130...144)(
              :a,
              (130...131),
              (132...133),
              CallNode(134...144)(
                nil,
                nil,
                (134...137),
                nil,
                nil,
                nil,
                BlockNode(138...144)([], nil, nil, (138...140), (141...144)),
                0,
                "tap"
              )
            )],
           [],
           nil,
           [],
           nil,
           nil
         ),
         nil,
         [:a],
         (117...120),
         (125...126),
         nil,
         nil,
         nil,
         (146...149)
       ),
       StatementsNode(151...156)([BreakNode(151...156)(nil, (151...156))])
     ),
     WhileNode(163...210)(
       (163...168),
       ClassNode(169...198)(
         [:a],
         (169...174),
         ConstantReadNode(175...178)(),
         nil,
         nil,
         StatementsNode(179...193)(
           [LocalVariableWriteNode(179...193)(
              :a,
              0,
              CallNode(183...193)(
                nil,
                nil,
                (183...186),
                nil,
                nil,
                nil,
                BlockNode(187...193)([], nil, nil, (187...189), (190...193)),
                0,
                "tap"
              ),
              (179...180),
              (181...182)
            )]
         ),
         (195...198)
       ),
       StatementsNode(200...205)([BreakNode(200...205)(nil, (200...205))])
     ),
     WhileNode(212...260)(
       (212...217),
       SingletonClassNode(218...248)(
         [],
         (218...223),
         (224...226),
         SelfNode(227...231)(),
         StatementsNode(233...243)(
           [CallNode(233...243)(
              nil,
              nil,
              (233...236),
              nil,
              nil,
              nil,
              BlockNode(237...243)([], nil, nil, (237...239), (240...243)),
              0,
              "tap"
            )]
         ),
         (245...248)
       ),
       StatementsNode(250...255)([BreakNode(250...255)(nil, (250...255))])
     ),
     WhileNode(262...314)(
       (262...267),
       SingletonClassNode(268...302)(
         [:a],
         (268...273),
         (274...276),
         SelfNode(277...281)(),
         StatementsNode(283...297)(
           [LocalVariableWriteNode(283...297)(
              :a,
              0,
              CallNode(287...297)(
                nil,
                nil,
                (287...290),
                nil,
                nil,
                nil,
                BlockNode(291...297)([], nil, nil, (291...293), (294...297)),
                0,
                "tap"
              ),
              (283...284),
              (285...286)
            )]
         ),
         (299...302)
       ),
       StatementsNode(304...309)([BreakNode(304...309)(nil, (304...309))])
     )]
  )
)
