ProgramNode(0...272)(
  [],
  StatementsNode(0...272)(
    [CaseNode(0...21)(
       SymbolNode(5...8)((5...6), (6...8), nil, "hi"),
       [WhenNode(9...17)(
          (9...13),
          [SymbolNode(14...17)((14...15), (15...17), nil, "hi")],
          nil
        )],
       nil,
       (0...4),
       (18...21)
     ),
     CaseNode(23...81)(
       TrueNode(28...32)(),
       [WhenNode(34...53)(
          (34...38),
          [TrueNode(39...43)()],
          StatementsNode(45...53)(
            [CallNode(45...53)(
               nil,
               nil,
               (45...49),
               nil,
               ArgumentsNode(50...53)(
                 [SymbolNode(50...53)((50...51), (51...53), nil, "hi")]
               ),
               nil,
               nil,
               0,
               "puts"
             )]
          )
        ),
        WhenNode(55...76)(
          (55...59),
          [FalseNode(60...65)()],
          StatementsNode(67...76)(
            [CallNode(67...76)(
               nil,
               nil,
               (67...71),
               nil,
               ArgumentsNode(72...76)(
                 [SymbolNode(72...76)((72...73), (73...76), nil, "bye")]
               ),
               nil,
               nil,
               0,
               "puts"
             )]
          )
        )],
       nil,
       (23...27),
       (78...81)
     ),
     CaseNode(83...103)(
       nil,
       [WhenNode(89...98)(
          (89...93),
          [SplatNode(94...98)(
             (94...95),
             CallNode(95...98)(
               nil,
               nil,
               (95...98),
               nil,
               nil,
               nil,
               nil,
               0,
               "foo"
             )
           )],
          nil
        )],
       nil,
       (83...87),
       (100...103)
     ),
     CaseNode(105...134)(
       SymbolNode(110...113)((110...111), (111...113), nil, "hi"),
       [WhenNode(114...122)(
          (114...118),
          [SymbolNode(119...122)((119...120), (120...122), nil, "hi")],
          nil
        )],
       ElseNode(123...134)(
         (123...127),
         StatementsNode(128...130)(
           [SymbolNode(128...130)((128...129), (129...130), nil, "b")]
         ),
         (131...134)
       ),
       (105...109),
       (131...134)
     ),
     CaseNode(136...172)(
       CallNode(141...145)(
         nil,
         nil,
         (141...145),
         nil,
         nil,
         nil,
         nil,
         0,
         "this"
       ),
       [WhenNode(147...167)(
          (147...151),
          [ConstantReadNode(152...158)(), ConstantReadNode(160...167)()],
          nil
        )],
       nil,
       (136...140),
       (169...172)
     ),
     CaseNode(174...198)(
       nil,
       [WhenNode(179...194)(
          (179...183),
          [CallNode(184...194)(
             CallNode(184...187)(
               nil,
               nil,
               (184...187),
               nil,
               nil,
               nil,
               nil,
               0,
               "foo"
             ),
             nil,
             (188...190),
             nil,
             ArgumentsNode(191...194)(
               [CallNode(191...194)(
                  nil,
                  nil,
                  (191...194),
                  nil,
                  nil,
                  nil,
                  nil,
                  0,
                  "bar"
                )]
             ),
             nil,
             nil,
             0,
             "=="
           )],
          nil
        )],
       nil,
       (174...178),
       (195...198)
     ),
     CaseNode(200...230)(
       nil,
       [WhenNode(205...211)(
          (205...209),
          [CallNode(210...211)(
             nil,
             nil,
             (210...211),
             nil,
             nil,
             nil,
             nil,
             0,
             "a"
           )],
          nil
        )],
       ElseNode(212...230)((212...216), nil, (227...230)),
       (200...204),
       (227...230)
     ),
     CaseNode(232...272)(
       CallNode(237...241)(
         nil,
         nil,
         (237...241),
         nil,
         nil,
         nil,
         nil,
         0,
         "type"
       ),
       [WhenNode(246...253)(
          (246...250),
          [SymbolNode(251...253)((251...252), (252...253), nil, "b")],
          nil
        )],
       ElseNode(260...272)((260...264), nil, (269...272)),
       (232...236),
       (269...272)
     )]
  )
)
