ProgramNode(0...382)(
  [],
  StatementsNode(0...382)(
    [IfNode(0...15)(
       (0...2),
       TrueNode(3...7)(),
       StatementsNode(9...10)([IntegerNode(9...10)()]),
       nil,
       (12...15)
     ),
     IfNode(17...37)(
       (17...19),
       TrueNode(20...24)(),
       StatementsNode(25...26)([IntegerNode(25...26)()]),
       ElseNode(27...37)(
         (27...31),
         StatementsNode(32...33)([IntegerNode(32...33)()]),
         (34...37)
       ),
       (34...37)
     ),
     IfNode(39...112)(
       (39...41),
       TrueNode(42...46)(),
       StatementsNode(52...56)([TrueNode(52...56)()]),
       IfNode(57...112)(
         (57...62),
         FalseNode(63...68)(),
         StatementsNode(74...79)([FalseNode(74...79)()]),
         IfNode(80...112)(
           (80...85),
           NilNode(86...89)(),
           StatementsNode(95...98)([NilNode(95...98)()]),
           ElseNode(99...112)(
             (99...103),
             StatementsNode(104...108)([SelfNode(104...108)()]),
             (109...112)
           ),
           (109...112)
         ),
         (109...112)
       ),
       (109...112)
     ),
     IfNode(114...123)(
       (116...118),
       TrueNode(119...123)(),
       StatementsNode(114...115)([IntegerNode(114...115)()]),
       nil,
       nil
     ),
     IfNode(125...138)(
       (131...133),
       TrueNode(134...138)(),
       StatementsNode(125...130)([BreakNode(125...130)(nil, (125...130))]),
       nil,
       nil
     ),
     IfNode(140...152)(
       (145...147),
       TrueNode(148...152)(),
       StatementsNode(140...144)([NextNode(140...144)(nil, (140...144))]),
       nil,
       nil
     ),
     IfNode(154...168)(
       (161...163),
       TrueNode(164...168)(),
       StatementsNode(154...160)([ReturnNode(154...160)((154...160), nil)]),
       nil,
       nil
     ),
     IfNode(170...200)(
       (170...172),
       CallNode(173...182)(
         nil,
         nil,
         (173...182),
         nil,
         nil,
         nil,
         nil,
         0,
         "exit_loop"
       ),
       StatementsNode(188...196)(
         [BreakNode(188...196)(
            ArgumentsNode(194...196)([IntegerNode(194...196)()]),
            (188...193)
          )]
       ),
       nil,
       (197...200)
     ),
     IfNode(202...221)(
       (202...204),
       CallNode(205...208)(
         nil,
         nil,
         (205...208),
         nil,
         nil,
         nil,
         nil,
         0,
         "foo"
       ),
       StatementsNode(214...217)(
         [CallNode(214...217)(
            nil,
            nil,
            (214...217),
            nil,
            nil,
            nil,
            nil,
            0,
            "bar"
          )]
       ),
       nil,
       (218...221)
     ),
     IfNode(223...234)(
       (230...232),
       CallNode(233...234)(nil, nil, (233...234), nil, nil, nil, nil, 0, "c"),
       StatementsNode(223...229)(
         [IfNode(223...229)(
            (225...227),
            CallNode(228...229)(
              nil,
              nil,
              (228...229),
              nil,
              nil,
              nil,
              nil,
              0,
              "b"
            ),
            StatementsNode(223...224)(
              [CallNode(223...224)(
                 nil,
                 nil,
                 (223...224),
                 nil,
                 nil,
                 nil,
                 nil,
                 0,
                 "a"
               )]
            ),
            nil,
            nil
          )]
       ),
       nil,
       nil
     ),
     IfNode(236...259)(
       (236...238),
       TrueNode(239...243)(),
       StatementsNode(246...250)(
         [CallNode(246...250)(
            nil,
            nil,
            (246...247),
            nil,
            ArgumentsNode(248...250)(
              [KeywordHashNode(248...250)(
                 [AssocNode(248...250)(
                    SymbolNode(248...250)(nil, (248...249), (249...250), "b"),
                    nil,
                    nil
                  )]
               )]
            ),
            nil,
            nil,
            0,
            "a"
          )]
       ),
       ElseNode(251...259)((251...255), nil, (256...259)),
       (256...259)
     ),
     IfNode(261...293)(
       (261...263),
       MatchPredicateNode(264...273)(
         CallNode(264...268)(
           nil,
           nil,
           (264...268),
           nil,
           nil,
           nil,
           nil,
           0,
           "type"
         ),
         IntegerNode(272...273)(),
         (269...271)
       ),
       nil,
       IfNode(274...289)(
         (274...279),
         MatchPredicateNode(280...289)(
           CallNode(280...284)(
             nil,
             nil,
             (280...284),
             nil,
             nil,
             nil,
             nil,
             0,
             "type"
           ),
           ConstantReadNode(288...289)(),
           (285...287)
         ),
         nil,
         nil,
         nil
       ),
       (290...293)
     ),
     IfNode(295...382)(
       (295...297),
       IntegerNode(298...299)(),
       StatementsNode(302...321)(
         [CallNode(302...321)(
            nil,
            nil,
            (302...308),
            nil,
            nil,
            nil,
            BlockNode(309...321)(
              [:_],
              BlockParametersNode(312...315)(
                ParametersNode(313...314)(
                  [RequiredParameterNode(313...314)(:_)],
                  [],
                  [],
                  nil,
                  [],
                  nil,
                  nil
                ),
                [],
                (312...313),
                (314...315)
              ),
              nil,
              (309...311),
              (318...321)
            ),
            0,
            "lambda"
          )]
       ),
       IfNode(322...382)(
         (322...327),
         IntegerNode(328...329)(),
         StatementsNode(332...351)(
           [CallNode(332...351)(
              nil,
              nil,
              (332...338),
              nil,
              nil,
              nil,
              BlockNode(339...351)(
                [:_],
                BlockParametersNode(342...345)(
                  ParametersNode(343...344)(
                    [RequiredParameterNode(343...344)(:_)],
                    [],
                    [],
                    nil,
                    [],
                    nil,
                    nil
                  ),
                  [],
                  (342...343),
                  (344...345)
                ),
                nil,
                (339...341),
                (348...351)
              ),
              0,
              "lambda"
            )]
         ),
         ElseNode(352...382)(
           (352...356),
           StatementsNode(359...378)(
             [CallNode(359...378)(
                nil,
                nil,
                (359...365),
                nil,
                nil,
                nil,
                BlockNode(366...378)(
                  [:_],
                  BlockParametersNode(369...372)(
                    ParametersNode(370...371)(
                      [RequiredParameterNode(370...371)(:_)],
                      [],
                      [],
                      nil,
                      [],
                      nil,
                      nil
                    ),
                    [],
                    (369...370),
                    (371...372)
                  ),
                  nil,
                  (366...368),
                  (375...378)
                ),
                0,
                "lambda"
              )]
           ),
           (379...382)
         ),
         (379...382)
       ),
       (379...382)
     )]
  )
)
