Jai File(0,390)
  JaiStatementImpl(STATEMENT)(0,390)
    JaiDeclarationImpl(DECLARATION)(0,390)
      JaiDeclNamesImpl(DECL_NAMES)(0,3)
        JaiDeclNameImpl(DECL_NAME)(0,3)
          PsiElement(Jai:IDENT)('run')(0,3)
      PsiElement(Jai:::)('::')(4,6)
      JaiInitializerImpl(INITIALIZER)(7,390)
        JaiProcLiteralExprImpl(PROC_LITERAL_EXPR)(7,390)
          PsiElement(Jai:()('(')(7,8)
          PsiElement(Jai:))(')')(8,9)
          JaiBlockImpl(BLOCK)(10,390)
            PsiElement(Jai:{)('{')(10,11)
            JaiStatementImpl(STATEMENT)(16,54)
              JaiIfStatementImpl(IF_STATEMENT)(16,54)
                PsiElement(Jai:if)('if')(16,18)
                JaiRefExprImpl(REF_EXPR)(19,23)
                  PsiElement(Jai:IDENT)('cond')(19,23)
                JaiStatementImpl(STATEMENT)(24,27)
                  JaiBlockImpl(BLOCK)(24,27)
                    PsiElement(Jai:{)('{')(24,25)
                    PsiElement(Jai:})('}')(26,27)
                JaiElseClauseImpl(ELSE_CLAUSE)(28,54)
                  PsiElement(Jai:else)('else')(28,32)
                  JaiStatementImpl(STATEMENT)(33,54)
                    JaiIfStatementImpl(IF_STATEMENT)(33,54)
                      PsiElement(Jai:if)('if')(33,35)
                      JaiRefExprImpl(REF_EXPR)(36,41)
                        PsiElement(Jai:IDENT)('other')(36,41)
                      JaiStatementImpl(STATEMENT)(42,45)
                        JaiBlockImpl(BLOCK)(42,45)
                          PsiElement(Jai:{)('{')(42,43)
                          PsiElement(Jai:})('}')(44,45)
                      JaiElseClauseImpl(ELSE_CLAUSE)(46,54)
                        PsiElement(Jai:else)('else')(46,50)
                        JaiStatementImpl(STATEMENT)(51,54)
                          JaiBlockImpl(BLOCK)(51,54)
                            PsiElement(Jai:{)('{')(51,52)
                            PsiElement(Jai:})('}')(53,54)
            JaiStatementImpl(STATEMENT)(59,84)
              JaiIfStatementImpl(IF_STATEMENT)(59,84)
                PsiElement(Jai:if)('if')(59,61)
                JaiRefExprImpl(REF_EXPR)(62,66)
                  PsiElement(Jai:IDENT)('flag')(62,66)
                PsiElement(Jai:then)('then')(67,71)
                JaiStatementImpl(STATEMENT)(72,84)
                  JaiExpressionStatementImpl(EXPRESSION_STATEMENT)(72,84)
                    JaiAssignExprImpl(ASSIGN_EXPR)(72,83)
                      JaiRefExprImpl(REF_EXPR)(72,76)
                        PsiElement(Jai:IDENT)('quit')(72,76)
                      PsiElement(Jai:=)('=')(77,78)
                      JaiLiteralExprImpl(LITERAL_EXPR)(79,83)
                        PsiElement(Jai:true)('true')(79,83)
                    PsiElement(Jai:;)(';')(83,84)
            JaiStatementImpl(STATEMENT)(89,176)
              JaiIfStatementImpl(IF_STATEMENT)(89,176)
                PsiElement(Jai:if)('if')(89,91)
                JaiRefExprImpl(REF_EXPR)(92,97)
                  PsiElement(Jai:IDENT)('value')(92,97)
                JaiSwitchBodyImpl(SWITCH_BODY)(98,176)
                  PsiElement(Jai:==)('==')(98,100)
                  PsiElement(Jai:{)('{')(101,102)
                  JaiCaseClauseImpl(CASE_CLAUSE)(111,136)
                    PsiElement(Jai:case)('case')(111,115)
                    JaiUnaryDotExprImpl(UNARY_DOT_EXPR)(116,123)
                      PsiElement(Jai:.)('.')(116,117)
                      JaiMemberNameImpl(MEMBER_NAME)(117,123)
                        PsiElement(Jai:IDENT)('BANANA')(117,123)
                    PsiElement(Jai:;)(';')(123,124)
                    JaiStatementImpl(STATEMENT)(125,136)
                      JaiExpressionStatementImpl(EXPRESSION_STATEMENT)(125,136)
                        JaiCallExprImpl(CALL_EXPR)(125,135)
                          JaiRefExprImpl(REF_EXPR)(125,130)
                            PsiElement(Jai:IDENT)('print')(125,130)
                          PsiElement(Jai:()('(')(130,131)
                          JaiArgumentImpl(ARGUMENT)(131,134)
                            JaiLiteralExprImpl(LITERAL_EXPR)(131,134)
                              PsiElement(Jai:STRING)('"b"')(131,134)
                          PsiElement(Jai:))(')')(134,135)
                        PsiElement(Jai:;)(';')(135,136)
                  JaiCaseClauseImpl(CASE_CLAUSE)(145,170)
                    PsiElement(Jai:case)('case')(145,149)
                    PsiElement(Jai:;)(';')(149,150)
                    JaiStatementImpl(STATEMENT)(159,170)
                      JaiExpressionStatementImpl(EXPRESSION_STATEMENT)(159,170)
                        JaiCallExprImpl(CALL_EXPR)(159,169)
                          JaiRefExprImpl(REF_EXPR)(159,164)
                            PsiElement(Jai:IDENT)('print')(159,164)
                          PsiElement(Jai:()('(')(164,165)
                          JaiArgumentImpl(ARGUMENT)(165,168)
                            JaiLiteralExprImpl(LITERAL_EXPR)(165,168)
                              PsiElement(Jai:STRING)('"d"')(165,168)
                          PsiElement(Jai:))(')')(168,169)
                        PsiElement(Jai:;)(';')(169,170)
                  PsiElement(Jai:})('}')(175,176)
            JaiStatementImpl(STATEMENT)(181,205)
              JaiWhileStatementImpl(WHILE_STATEMENT)(181,205)
                PsiElement(Jai:while)('while')(181,186)
                JaiRefExprImpl(REF_EXPR)(187,194)
                  PsiElement(Jai:IDENT)('running')(187,194)
                JaiStatementImpl(STATEMENT)(195,205)
                  JaiBlockImpl(BLOCK)(195,205)
                    PsiElement(Jai:{)('{')(195,196)
                    JaiStatementImpl(STATEMENT)(197,203)
                      JaiBreakStatementImpl(BREAK_STATEMENT)(197,203)
                        PsiElement(Jai:break)('break')(197,202)
                        PsiElement(Jai:;)(';')(202,203)
                    PsiElement(Jai:})('}')(204,205)
            JaiStatementImpl(STATEMENT)(210,238)
              JaiForStatementImpl(FOR_STATEMENT)(210,238)
                PsiElement(Jai:for)('for')(210,213)
                JaiRangeExprImpl(RANGE_EXPR)(214,218)
                  JaiLiteralExprImpl(LITERAL_EXPR)(214,215)
                    PsiElement(Jai:NUMBER)('1')(214,215)
                  PsiElement(Jai:..)('..')(215,217)
                  JaiLiteralExprImpl(LITERAL_EXPR)(217,218)
                    PsiElement(Jai:NUMBER)('7')(217,218)
                JaiStatementImpl(STATEMENT)(219,238)
                  JaiBlockImpl(BLOCK)(219,238)
                    PsiElement(Jai:{)('{')(219,220)
                    JaiStatementImpl(STATEMENT)(221,236)
                      JaiExpressionStatementImpl(EXPRESSION_STATEMENT)(221,236)
                        JaiCallExprImpl(CALL_EXPR)(221,235)
                          JaiRefExprImpl(REF_EXPR)(221,226)
                            PsiElement(Jai:IDENT)('print')(221,226)
                          PsiElement(Jai:()('(')(226,227)
                          JaiArgumentImpl(ARGUMENT)(227,230)
                            JaiLiteralExprImpl(LITERAL_EXPR)(227,230)
                              PsiElement(Jai:STRING)('"%"')(227,230)
                          PsiElement(Jai:,)(',')(230,231)
                          JaiArgumentImpl(ARGUMENT)(232,234)
                            JaiRefExprImpl(REF_EXPR)(232,234)
                              PsiElement(Jai:IDENT)('it')(232,234)
                          PsiElement(Jai:))(')')(234,235)
                        PsiElement(Jai:;)(';')(235,236)
                    PsiElement(Jai:})('}')(237,238)
            JaiStatementImpl(STATEMENT)(243,276)
              JaiForStatementImpl(FOR_STATEMENT)(243,276)
                PsiElement(Jai:for)('for')(243,246)
                PsiElement(Jai:<)('<')(247,248)
                PsiElement(Jai:*)('*')(249,250)
                JaiForNamesImpl(FOR_NAMES)(251,255)
                  JaiForNameImpl(FOR_NAME)(251,252)
                    PsiElement(Jai:IDENT)('v')(251,252)
                  PsiElement(Jai:,)(',')(252,253)
                  JaiForNameImpl(FOR_NAME)(254,255)
                    PsiElement(Jai:IDENT)('i')(254,255)
                PsiElement(Jai::)(':')(255,256)
                JaiRefExprImpl(REF_EXPR)(257,262)
                  PsiElement(Jai:IDENT)('array')(257,262)
                JaiStatementImpl(STATEMENT)(263,276)
                  JaiBlockImpl(BLOCK)(263,276)
                    PsiElement(Jai:{)('{')(263,264)
                    JaiStatementImpl(STATEMENT)(265,274)
                      JaiRemoveStatementImpl(REMOVE_STATEMENT)(265,274)
                        PsiElement(Jai:remove)('remove')(265,271)
                        JaiRefExprImpl(REF_EXPR)(272,273)
                          PsiElement(Jai:IDENT)('v')(272,273)
                        PsiElement(Jai:;)(';')(273,274)
                    PsiElement(Jai:})('}')(275,276)
            JaiStatementImpl(STATEMENT)(281,306)
              JaiForStatementImpl(FOR_STATEMENT)(281,306)
                PsiElement(Jai:for)('for')(281,284)
                PsiElement(Jai::)(':')(285,286)
                JaiRefExprImpl(REF_EXPR)(286,295)
                  PsiElement(Jai:IDENT)('expansion')(286,295)
                JaiRefExprImpl(REF_EXPR)(296,302)
                  PsiElement(Jai:IDENT)('holder')(296,302)
                JaiStatementImpl(STATEMENT)(303,306)
                  JaiBlockImpl(BLOCK)(303,306)
                    PsiElement(Jai:{)('{')(303,304)
                    PsiElement(Jai:})('}')(305,306)
            JaiStatementImpl(STATEMENT)(311,325)
              JaiDeferStatementImpl(DEFER_STATEMENT)(311,325)
                PsiElement(Jai:defer)('defer')(311,316)
                JaiStatementImpl(STATEMENT)(317,325)
                  JaiExpressionStatementImpl(EXPRESSION_STATEMENT)(317,325)
                    JaiCallExprImpl(CALL_EXPR)(317,324)
                      JaiRefExprImpl(REF_EXPR)(317,321)
                        PsiElement(Jai:IDENT)('free')(317,321)
                      PsiElement(Jai:()('(')(321,322)
                      JaiArgumentImpl(ARGUMENT)(322,323)
                        JaiRefExprImpl(REF_EXPR)(322,323)
                          PsiElement(Jai:IDENT)('p')(322,323)
                      PsiElement(Jai:))(')')(323,324)
                    PsiElement(Jai:;)(';')(324,325)
            JaiStatementImpl(STATEMENT)(330,358)
              JaiPushContextStatementImpl(PUSH_CONTEXT_STATEMENT)(330,358)
                PsiElement(Jai:push_context)('push_context')(330,342)
                JaiRefExprImpl(REF_EXPR)(343,346)
                  PsiElement(Jai:IDENT)('ctx')(343,346)
                JaiBlockImpl(BLOCK)(347,358)
                  PsiElement(Jai:{)('{')(347,348)
                  JaiStatementImpl(STATEMENT)(349,356)
                    JaiExpressionStatementImpl(EXPRESSION_STATEMENT)(349,356)
                      JaiCallExprImpl(CALL_EXPR)(349,355)
                        JaiRefExprImpl(REF_EXPR)(349,353)
                          PsiElement(Jai:IDENT)('work')(349,353)
                        PsiElement(Jai:()('(')(353,354)
                        PsiElement(Jai:))(')')(354,355)
                      PsiElement(Jai:;)(';')(355,356)
                  PsiElement(Jai:})('}')(357,358)
            JaiStatementImpl(STATEMENT)(363,388)
              JaiDeclarationImpl(DECLARATION)(363,388)
                JaiDeclNamesImpl(DECL_NAMES)(363,364)
                  JaiDeclNameImpl(DECL_NAME)(363,364)
                    PsiElement(Jai:IDENT)('s')(363,364)
                PsiElement(Jai::=)(':=')(365,367)
                JaiInitializerImpl(INITIALIZER)(368,387)
                  JaiIfxExprImpl(IFX_EXPR)(368,387)
                    PsiElement(Jai:ifx)('ifx')(368,371)
                    JaiRefExprImpl(REF_EXPR)(372,373)
                      PsiElement(Jai:IDENT)('a')(372,373)
                    PsiElement(Jai:then)('then')(374,378)
                    JaiRefExprImpl(REF_EXPR)(379,380)
                      PsiElement(Jai:IDENT)('b')(379,380)
                    PsiElement(Jai:else)('else')(381,385)
                    JaiRefExprImpl(REF_EXPR)(386,387)
                      PsiElement(Jai:IDENT)('c')(386,387)
                PsiElement(Jai:;)(';')(387,388)
            PsiElement(Jai:})('}')(389,390)