Jai File(0,293)
  JaiStatementImpl(STATEMENT)(0,14)
    JaiDeclarationImpl(DECLARATION)(0,14)
      JaiDeclNamesImpl(DECL_NAMES)(0,4)
        JaiDeclNameImpl(DECL_NAME)(0,4)
          PsiElement(Jai:IDENT)('main')(0,4)
      PsiElement(Jai:::)('::')(5,7)
      JaiInitializerImpl(INITIALIZER)(8,14)
        JaiProcLiteralExprImpl(PROC_LITERAL_EXPR)(8,14)
          PsiElement(Jai:()('(')(8,9)
          PsiElement(Jai:))(')')(9,10)
          JaiBlockImpl(BLOCK)(11,14)
            PsiElement(Jai:{)('{')(11,12)
            PsiElement(Jai:})('}')(13,14)
  JaiStatementImpl(STATEMENT)(15,65)
    JaiDeclarationImpl(DECLARATION)(15,65)
      JaiDeclNamesImpl(DECL_NAMES)(15,20)
        JaiDeclNameImpl(DECL_NAME)(15,20)
          PsiElement(Jai:IDENT)('named')(15,20)
      PsiElement(Jai:::)('::')(21,23)
      JaiInitializerImpl(INITIALIZER)(24,65)
        JaiProcLiteralExprImpl(PROC_LITERAL_EXPR)(24,65)
          PsiElement(Jai:()('(')(24,25)
          JaiParameterImpl(PARAMETER)(25,31)
            JaiParamNamesImpl(PARAM_NAMES)(25,26)
              JaiParamNameImpl(PARAM_NAME)(25,26)
                PsiElement(Jai:IDENT)('a')(25,26)
            PsiElement(Jai::)(':')(26,27)
            JaiRefExprImpl(REF_EXPR)(28,31)
              PsiElement(Jai:IDENT)('int')(28,31)
          PsiElement(Jai:))(')')(31,32)
          PsiElement(Jai:->)('->')(33,35)
          JaiReturnItemImpl(RETURN_ITEM)(36,49)
            PsiElement(Jai:IDENT)('named')(36,41)
            PsiElement(Jai::)(':')(41,42)
            JaiRefExprImpl(REF_EXPR)(43,49)
              PsiElement(Jai:IDENT)('string')(43,49)
          JaiBlockImpl(BLOCK)(50,65)
            PsiElement(Jai:{)('{')(50,51)
            JaiStatementImpl(STATEMENT)(52,63)
              JaiReturnStatementImpl(RETURN_STATEMENT)(52,63)
                PsiElement(Jai:return)('return')(52,58)
                JaiLiteralExprImpl(LITERAL_EXPR)(59,62)
                  PsiElement(Jai:STRING)('"x"')(59,62)
                PsiElement(Jai:;)(';')(62,63)
            PsiElement(Jai:})('}')(64,65)
  JaiStatementImpl(STATEMENT)(66,102)
    JaiDeclarationImpl(DECLARATION)(66,102)
      JaiDeclNamesImpl(DECL_NAMES)(66,71)
        JaiDeclNameImpl(DECL_NAME)(66,71)
          PsiElement(Jai:IDENT)('multi')(66,71)
      PsiElement(Jai:::)('::')(72,74)
      JaiInitializerImpl(INITIALIZER)(75,102)
        JaiProcLiteralExprImpl(PROC_LITERAL_EXPR)(75,102)
          PsiElement(Jai:()('(')(75,76)
          PsiElement(Jai:))(')')(76,77)
          PsiElement(Jai:->)('->')(78,80)
          JaiReturnItemImpl(RETURN_ITEM)(81,82)
            JaiRefExprImpl(REF_EXPR)(81,82)
              PsiElement(Jai:IDENT)('A')(81,82)
          PsiElement(Jai:,)(',')(82,83)
          JaiReturnItemImpl(RETURN_ITEM)(84,85)
            JaiRefExprImpl(REF_EXPR)(84,85)
              PsiElement(Jai:IDENT)('B')(84,85)
          JaiBlockImpl(BLOCK)(86,102)
            PsiElement(Jai:{)('{')(86,87)
            JaiStatementImpl(STATEMENT)(88,100)
              JaiReturnStatementImpl(RETURN_STATEMENT)(88,100)
                PsiElement(Jai:return)('return')(88,94)
                JaiRefExprImpl(REF_EXPR)(95,96)
                  PsiElement(Jai:IDENT)('a')(95,96)
                PsiElement(Jai:,)(',')(96,97)
                JaiRefExprImpl(REF_EXPR)(98,99)
                  PsiElement(Jai:IDENT)('b')(98,99)
                PsiElement(Jai:;)(';')(99,100)
            PsiElement(Jai:})('}')(101,102)
  JaiStatementImpl(STATEMENT)(103,145)
    JaiDeclarationImpl(DECLARATION)(103,145)
      JaiDeclNamesImpl(DECL_NAMES)(103,111)
        JaiDeclNameImpl(DECL_NAME)(103,111)
          PsiElement(Jai:IDENT)('variadic')(103,111)
      PsiElement(Jai:::)('::')(112,114)
      JaiInitializerImpl(INITIALIZER)(115,145)
        JaiProcLiteralExprImpl(PROC_LITERAL_EXPR)(115,145)
          PsiElement(Jai:()('(')(115,116)
          JaiParameterImpl(PARAMETER)(116,127)
            JaiParamNamesImpl(PARAM_NAMES)(116,119)
              JaiParamNameImpl(PARAM_NAME)(116,119)
                PsiElement(Jai:IDENT)('fmt')(116,119)
            PsiElement(Jai::)(':')(119,120)
            JaiRefExprImpl(REF_EXPR)(121,127)
              PsiElement(Jai:IDENT)('string')(121,127)
          PsiElement(Jai:,)(',')(127,128)
          JaiParameterImpl(PARAMETER)(129,140)
            JaiParamNamesImpl(PARAM_NAMES)(129,133)
              JaiParamNameImpl(PARAM_NAME)(129,133)
                PsiElement(Jai:IDENT)('args')(129,133)
            PsiElement(Jai::)(':')(133,134)
            JaiPrefixExprImpl(PREFIX_EXPR)(135,140)
              PsiElement(Jai:..)('..')(135,137)
              JaiRefExprImpl(REF_EXPR)(137,140)
                PsiElement(Jai:IDENT)('Any')(137,140)
          PsiElement(Jai:))(')')(140,141)
          JaiBlockImpl(BLOCK)(142,145)
            PsiElement(Jai:{)('{')(142,143)
            PsiElement(Jai:})('}')(144,145)
  JaiStatementImpl(STATEMENT)(146,205)
    JaiDeclarationImpl(DECLARATION)(146,205)
      JaiDeclNamesImpl(DECL_NAMES)(146,155)
        JaiDeclNameImpl(DECL_NAME)(146,155)
          PsiElement(Jai:IDENT)('polymorph')(146,155)
      PsiElement(Jai:::)('::')(156,158)
      JaiInitializerImpl(INITIALIZER)(159,205)
        JaiProcLiteralExprImpl(PROC_LITERAL_EXPR)(159,205)
          PsiElement(Jai:()('(')(159,160)
          JaiParameterImpl(PARAMETER)(160,185)
            JaiParamNamesImpl(PARAM_NAMES)(160,161)
              JaiParamNameImpl(PARAM_NAME)(160,161)
                PsiElement(Jai:IDENT)('x')(160,161)
            PsiElement(Jai::)(':')(161,162)
            JaiMulExprImpl(MUL_EXPR)(163,185)
              JaiPrefixExprImpl(PREFIX_EXPR)(163,165)
                PsiElement(Jai:$)('$')(163,164)
                JaiRefExprImpl(REF_EXPR)(164,165)
                  PsiElement(Jai:IDENT)('T')(164,165)
              PsiElement(Jai:/)('/')(165,166)
              JaiInterfaceExprImpl(INTERFACE_EXPR)(166,185)
                PsiElement(Jai:interface)('interface')(166,175)
                JaiRefExprImpl(REF_EXPR)(176,185)
                  PsiElement(Jai:IDENT)('Matchable')(176,185)
          PsiElement(Jai:))(')')(185,186)
          PsiElement(Jai:->)('->')(187,189)
          JaiReturnItemImpl(RETURN_ITEM)(190,191)
            JaiRefExprImpl(REF_EXPR)(190,191)
              PsiElement(Jai:IDENT)('T')(190,191)
          JaiBlockImpl(BLOCK)(192,205)
            PsiElement(Jai:{)('{')(192,193)
            JaiStatementImpl(STATEMENT)(194,203)
              JaiReturnStatementImpl(RETURN_STATEMENT)(194,203)
                PsiElement(Jai:return)('return')(194,200)
                JaiRefExprImpl(REF_EXPR)(201,202)
                  PsiElement(Jai:IDENT)('x')(201,202)
                PsiElement(Jai:;)(';')(202,203)
            PsiElement(Jai:})('}')(204,205)
  JaiStatementImpl(STATEMENT)(206,269)
    JaiDeclarationImpl(DECLARATION)(206,269)
      JaiDeclNamesImpl(DECL_NAMES)(206,218)
        JaiDeclNameImpl(DECL_NAME)(206,218)
          PsiElement(Jai:IDENT)('foreign_proc')(206,218)
      PsiElement(Jai:::)('::')(219,221)
      JaiInitializerImpl(INITIALIZER)(222,268)
        JaiProcLiteralExprImpl(PROC_LITERAL_EXPR)(222,268)
          PsiElement(Jai:()('(')(222,223)
          JaiParameterImpl(PARAMETER)(223,230)
            JaiParamNamesImpl(PARAM_NAMES)(223,225)
              JaiParamNameImpl(PARAM_NAME)(223,225)
                PsiElement(Jai:IDENT)('fd')(223,225)
            PsiElement(Jai::)(':')(225,226)
            JaiRefExprImpl(REF_EXPR)(227,230)
              PsiElement(Jai:IDENT)('s32')(227,230)
          PsiElement(Jai:))(')')(230,231)
          PsiElement(Jai:->)('->')(232,234)
          JaiReturnItemImpl(RETURN_ITEM)(235,238)
            JaiRefExprImpl(REF_EXPR)(235,238)
              PsiElement(Jai:IDENT)('s32')(235,238)
          JaiProcModifierImpl(PROC_MODIFIER)(239,268)
            JaiDirectiveExprImpl(DIRECTIVE_EXPR)(239,268)
              PsiElement(Jai:DIRECTIVE)('#foreign')(239,247)
              JaiRefExprImpl(REF_EXPR)(248,252)
                PsiElement(Jai:IDENT)('libc')(248,252)
              PsiElement(Jai:STRING)('"inotify_init1"')(253,268)
      PsiElement(Jai:;)(';')(268,269)
  JaiStatementImpl(STATEMENT)(270,293)
    JaiDeclarationImpl(DECLARATION)(270,293)
      JaiDeclNamesImpl(DECL_NAMES)(270,276)
        JaiDeclNameImpl(DECL_NAME)(270,276)
          PsiElement(Jai:IDENT)('lambda')(270,276)
      PsiElement(Jai:::)('::')(277,279)
      JaiInitializerImpl(INITIALIZER)(280,292)
        JaiLambdaExprImpl(LAMBDA_EXPR)(280,292)
          JaiRefExprImpl(REF_EXPR)(280,281)
            PsiElement(Jai:IDENT)('x')(280,281)
          PsiElement(Jai:=>)('=>')(282,284)
          JaiMemberExprImpl(MEMBER_EXPR)(285,292)
            JaiRefExprImpl(REF_EXPR)(285,286)
              PsiElement(Jai:IDENT)('x')(285,286)
            PsiElement(Jai:.)('.')(286,287)
            JaiMemberNameImpl(MEMBER_NAME)(287,292)
              PsiElement(Jai:IDENT)('count')(287,292)
      PsiElement(Jai:;)(';')(292,293)