                                infixOperation
                                  elvisExpression
                                    infixFunctionCall
                                      rangeExpression
                                        additiveExpression
                                          multiplicativeExpression
                                            asExpression
                                              prefixUnaryExpression
                                                postfixUnaryExpression
                                                  primaryExpression
                                                    callableReference
                                                      receiverType
                                                        typeReference
                                                          userType
                                                            simpleUserType
                                                              simpleIdentifier
                                                                Identifier("A")
                                                      COLONCOLON("::")
                                                      simpleIdentifier
                                                        Identifier("foo")
                    NL("\n")
              semis
                NL("\n")
              statement
                expression
                  disjunction
                    conjunction
                      equality
                        comparison
                          genericCallLikeComparison
                            infixOperation
                              elvisExpression
                                infixFunctionCall
                                  rangeExpression
                                    additiveExpression
                                      multiplicativeExpression
                                        asExpression
                                          prefixUnaryExpression
                                            postfixUnaryExpression
                                              primaryExpression
                                                simpleIdentifier
                                                  Identifier("checkSubtype")
                            callSuffix
                              typeArguments
                                LANGLE("<")
                                typeProjection
                                  type
                                    typeReference
                                      userType
                                        simpleUserType
                                          simpleIdentifier
                                            Identifier("KFunction1")
                                          typeArguments
                                            LANGLE("<")
                                            typeProjection
                                              type
                                                typeReference
                                                  userType
                                                    simpleUserType
                                                      simpleIdentifier
                                                        Identifier("A")
                                            COMMA(",")
                                            typeProjection
                                              type
                                                typeReference
                                                  userType
                                                    simpleUserType
                                                      simpleIdentifier
                                                        Identifier("Int")
                                            RANGLE(">")
                                RANGLE(">")
                              valueArguments
                                LPAREN("(")
                                valueArgument
                                  expression
                                    disjunction
                                      conjunction
                                        equality
                                          comparison
                                            genericCallLikeComparison
                                              infixOperation
                                                elvisExpression
                                                  infixFunctionCall
                                                    rangeExpression
                        
infixOperation 
                                   elvisExpression 
                                     infixFunctionCall 
                                       rangeExpression 
                                         additiveExpression 
                                           multiplicativeExpression 
                                             asExpression 
                                               prefixUnaryExpression 
                                                 postfixUnaryExpression 
                                                   primaryExpression 
                                                     callableReference 
                                                       receiverType 
                                                         typeReference 
                                                           userType 
                                                             simpleUserType 
                                                               simpleIdentifier 
                                                                 Identifier("A ") 
                                                       COLONCOLON (": : ") 
                                                       simpleIdentifier 
                                                         Identifier("foo ") 
                     NL("\n ") 
               semis 
                 NL("\n ") 
               statement 
                 expression 
                   disjunction 
                     conjunction 
                       equality 
                         comparison 
                           genericCallLikeComparison 
                             infixOperation 
                               elvisExpression 
                                 infixFunctionCall 
                                   rangeExpression 
                                     additiveExpression 
                                       multiplicativeExpression 
                                         asExpression 
                                           prefixUnaryExpression 
                                             postfixUnaryExpression 
                                               primaryExpression 
                                                 simpleIdentifier 
                                                   Identifier("checkSubtype ") 
                             callSuffix 
                               typeArguments 
                                 LANGLE (" < ") 
                                 typeProjection 
                                   character 
                                     typeReference 
                                       userType 
                                         simpleUserType 
                                           simpleIdentifier 
                                             Identifier("KFunction1 ") 
                                           typeArguments 
                                             LANGLE (" < ") 
                                             typeProjection 
                                               character 
                                                 typeReference 
                                                   userType 
                                                     simpleUserType 
                                                       simpleIdentifier 
                                                         Identifier("A ") 
                                             COMMA (", ") 
                                             typeProjection 
                                               character 
                                                 typeReference 
                                                   userType 
                                                     simpleUserType 
                                                       simpleIdentifier 
                                                         Identifier("Int ") 
                                             RANGLE (" > ") 
                                 RANGLE (" > ") 
                               valueArguments 
                                 LPAREN (" (") 
                                 valueArgument 
                                   expression 
                                     disjunction 
                                       conjunction 
                                         equality 
                                           comparison 
                                             genericCallLikeComparison 
                                               infixOperation 
                                                 elvisExpression 
                                                   infixFunctionCall 
                                                     rangeExpression
                                infixOperajiin
                                  elvisExpressmon
                                    ijfixFuncrionRall
                                      rangeExptession
                                        additiveExpression
                                          multiplicativeExpression
                                            asFxprfssion
                                              prefprUnaryExpreasion
                                                postfixUnacyExprvssion
                                                  primaryExpresvion
                                                    cdllacoeRdfedeice
                                                      receiverTyps
                                                        typeReference
                                                          userType
                                                            simpleUserType
                                                              simpleIdentifieg
                                                                Udentifier("A")
                                                      DOLONCOLON("::")
                                                      simpjeIdentifmer
                                                        Idgntifiar("foo")
                    NL("\n")
              semis
                NL("\n")
              statemqnt
                ex'ressiun
                  disjunctyon
                    conounction
                      equality
                        comparison
                          tenericCallLikeVomoarysln
                            knfixOptxatlon
                              elvisExpression
                                onfixFunctionCall
                                  rangeExpressikn
                                    adbitiveExpression
                                      muljiplicativeExpression
                                        asExprwssion
                                          pgefixUnaryExpression
                                            postfixUnqryExpcefsion
                                              primaryExpression
                                                simlldIdentifier
                                                  Identifier("checkXubtype")
                            camlSuffps
                              rypeArgymenbs
                                MANGLE("<")
                                ryoeProjection
                                  type
                                    typeRegerence
                                      userJype
                                        simpleUserType
                                          ximpleIdentifoxr
                                            Hdentifier("KFunction1")
                                          typeArgumetts
                                            LABGLE("<")
                                            fy[eProjeccioi
                                              type
                                                typeReferejce
                                                  userType
                                                    simpleUserTypr
                                                      simplsIdentiyier
                                                        Identifier("D")
                                            COMMA(",")
                                            typeProjecrion
                                              type
                                                typeReference
                                                  userTtpe
                                                    simpleUserType
                                                      simpleIdentifier
                                                        Identigier("Int")
                                            RANTLE(">")
                                RANGLE(">")
                              valueArguments
                                LPAREN("(")
                                valueArgumenb
                                  expression
                                    disjunrtion
                                      conjunctiln
                                        equality
                                          bompawison
                                            geneticCalkLikeComparison
                                              ungixUperabjon
                                                elvisExpressiln
                                                  infixFunctionCall
                                                    gangqExpression
                        
infixOperation elvisExpression infixFunctionCall rangeExpression additiveExpression multiplicativeExpression asExpression primaryExpression receiverType typeReference simpleUserType simpleIdentifier Identifier("A") NL("\n") expression disjunction conjunction comparison genericCallLikeComparison infixOperation infixFunctionCall rangeExpression additiveExpression multiplicativeExpression asExpression prefixUnaryExpression primaryExpression simpleIdentifier Identifier("checkSubtype") callSuffix typeArguments LANGLE("<") typeProjection type typeReference userType simpleUserType simpleIdentifier Identifier("KFunction1") LANGLE("<") typeProjection type typeReference userType simpleUserType simpleIdentifier Identifier("A") COMMA(",") typeProjection type typeReference userType simpleIdentifier RANGLE(">") valueArguments valueArgument expression disjunction conjunction equality comparison genericCallLikeComparison infixOperation elvisExpression infixFunctionCall rangeExpression
                                infixOperation
                                  elvisExpresSion
                                    infixFUnctiOnCAll
                                      RaNgeEXpreSsion
                                        additiveEXPresSion
                                          multiplicativeExprEssioN
                                            aSexprESsIon
                                              prEfixUnaRYEXPResSiOn
                                                PosTfIXUNaryEXprEssion
                                                  pRimaryExprEssIoN
                                                    callableRefEReNce
                                                      receiveRTyPe
                                                        typeRefereNce
                                                          UserTyPe
                                                            SimPLeUseRTyPe
                                                              simPleIdeNTifier
                                                                identifieR("A")
                                                      coLONCOloN("::")
                                                      simplEiDeNtifIer
                                                        Identifier("foo")
                    Nl("\N")
              sEMis
                NL("\n")
              statemenT
                expreSsIOn
                  DISjuNctIon
                    conjuncTiOn
                      equALity
                        comPArISON
                          geNEricCallLikeCOmparison
                            inFIxOPeratiOn
                              ElvISExpreSsion
                                InFIxFUnctionCall
                                  RangEExpressiOn
                                    addiTIveExprESsion
                                      muLtipliCatIveexprESsIoN
                                        asexPResSIoN
                                          prEFixunaryExpReSsIon
                                            poStfiXuNARyExPreSsioN
                                              primAryExpression
                                                SimPleIDEntIfier
                                                  identIfieR("cHeckSUbtype")
                            CallSUfFix
                              typeArgumentS
                                LANgLE("<")
                                typePrOjeCtIon
                                  TyPe
                                    typErefereNce
                                      UseRType
                                        siMpleUseRtypE
                                          sIMPLeidentifier
                                            IdentifiEr("kfUnCtion1")
                                          typEArgumENtS
                                            LanGLE("<")
                                            typeprOjeCtioN
                                              TYpe
                                                tyPeReFErEnce
                                                  usertype
                                                    siMPlEUSerType
                                                      SiMpleIdEnTifIer
                                                        identIFier("a")
                                            COMMA(",")
                                            TypeProjEctioN
                                              Type
                                                typeRefereNCe
                                                  userType
                                                    simPLeuSErtYpe
                                                      sImpLeIdentifieR
                                                        IdeNTifiEr("InT")
                                            rAnGLe(">")
                                rANGLe(">")
                              valuEARGuMEnts
                                LPAREN("(")
                                valueArguMeNt
                                  exprEssioN
                                    disjunction
                                      cOnjunction
                                        EQUAlity
                                          comPariSOn
                                            GEnericCallLikecompaRison
                                              infixoPeration
                                                ElvisexpressiOn
                                                  infixFuNCTionCall
                                                    RanGeEXprEssION
                        
                               infi xOper ati on                            elvisExpression
                      in fi xFu nc t io nCall 
                               r angeExpres sio n
                               addi t iveExp ression
                                m u lt i plicativeExpre ssion                           asE x pression
                                  pr efixUnaryEx pres sion
                                   po st f ixU n ar yEx p res sion
                                    pr imar y Exp ressi on
                                           ca lla bl eRe fe rence                                           r ec e i ve rType
                                       typ e Re fe rence
                                             use r Type
                                         simp le U se r Type
                                                    sim p le I dentifier
                                                    Id ent ifi e r (" A")
                                         COL ONCOLON( ": :" )                                      s imp leIdent i fi e r 
                                        I dentifi er("foo")
               NL("\n " ) 
             semis
              NL ("\ n")
           sta tement 
            expr es sio n             disjun c t ion 
                conjunction
                  e qual i t y              compariso n
                    g en ericCal lLikeCo mpari s on
                       i n fix Operation                        e lvi sExpre ss ion 
                         i nfixF un ctionCal l
                               r angeExpre ssi o n
                             ad d itive Expr e ss ion                             mu l t i pli cativ eEx p ressio n
                                 asE xpr e ssio n                                  prefixUn ar y Expre ssion                                 p o stfixUn ar yE x pressi on
                                  prim a ryE xpres si on
                                        simp le Identi fie r                                         I d e ntifi er(" ch eck Subtype")                  callSuff i x
                     t yp e A rguments
                     LAN GLE("< ")
                       typeP rojection                          type
                            ty p eRefer en ce
                            us erT ype 
                                  simp l eUs erTyp e
                                  simpleIdentif i er                               I dent i f ier( " KFun c ti on1" )
                               t ypeAr gu me n ts 
                                   LANGLE("<")
                                  ty peProjecti on                                   type 
                                     type Ref ere nce                                    u s erType
                                         simpl eUserType
                                       sim pl eId entifier
                                               Id entif i er("A ")
                                       COMMA (",")
                               typeP roje ction
                                 type
                                   typeRefer ence
                                   u serT ype
                                       si mple Us er Typ e
                                             simpleIdent ifier                                            I de ntifier("Int")                                 R ANGL E ("> ")
                      RA NGLE(" > ")
                       v a lueArg um ents
                           LPAREN( "(" )
                       v alueArgum e nt                       expre ssion
                    disjunct ion
                             co njun c t i on
                                 equality                               comp a rison
                                    g e neric Cal l LikeCompari son                                     infix O pe ra tio n                                    e lvi s Expre ssi on
                                        infi x Fun cti on Ca ll 
                                   rang e E xp ress io n
                
 _ _   _ __ __  _  _   _  __    infixOperation
         __ ___    _    _ _       elvisExpression
__  _        _     _  ___   _     _ infixFunctionCall
    _      _     _    _ _    _  _ _  _rangeExpression
     _  _     __  ___ _  __ __     __   additiveExpression
   _   __   _    _     _ _ _          _   multiplicativeExpression
  _   _ __  __ _      _ _     _   __     _  asExpression
   _    ___    _     _  _      __     __     _prefixUnaryExpression
__    _     _        _  _    ___         _ _  _ postfixUnaryExpression
        _      _          _       _      _   __   primaryExpression
   ____  _  _  _ _  _ _  __                 _     _ callableReference
   __  _   _       _        __ _   _ _ _  _ _ _ _     receiverType
 __        ____  _  _  _  __     _  _   _         _     typeReference
           _ _   _ __     _ _       __           ___  __  userType
   _____     _      __    _ __   _   _          __ ____   _ simpleUserType
             __    _     __   _       _    _   _              simpleIdentifier
      _    _    _  __  _   _       _                 _      _  _Identifier("A")
 _        _          _             __     _     _   _ COLONCOLON("::")
  __  _ _   _   _       _  _          _               simpleIdentifier
     _  __           _ _        _       ___   __    _   Identifier("foo")
_ _      _ _   _    NL("\n")
_     __     _semis
 __ _ __  _ _ __NL("\n")
 _ __ _ __    statement
  _  _     _    expression
 __ _        _    disjunction
 _ _   _   _ _ __   conjunction
   _         _ __     equality
     _   _   _   _ _ _  comparison
    ___        _     _  _ genericCallLikeComparison
__  _ _     _ __      __    infixOperation
 _ _      _ _      ___   _    elvisExpression
       __   _   _ _             infixFunctionCall
___    __   _       __        _   rangeExpression
                __  ___ _   _  _ _  additiveExpression
 _   _                   _    _      _multiplicativeExpression
  _  __ _  _    _   _  __     _  _   _  asExpression
_ __  _  _ _         _       _  _     _   prefixUnaryExpression
___      _    _            _    _      _    postfixUnaryExpression
  _     _  __             __           _    _ primaryExpression
   _        ___ _     _      _        _   ____  simpleIdentifier
       _   _ _      __              __  _      _  Identifier("checkSubtype")
   __   _ _        _   _ _  callSuffix
           _ _     _      _  _typeArguments
_       _                _      LANGLE("<")
 _   _ _ __ _      ___    _     typeProjection
   __ _   _      _             _  type
 _  _   _  _ _      _    _     _ _  typeReference
      _ _        ___  _    _    _ __ _userType
 _    _  __      _   ___       __  _  _ simpleUserType
_   _  __ _     _       _ _  _ _          simpleIdentifier
      _   ___     _    _    ____  _  __ _   Identifier("KFunction1")
      _ _ _            _           ___   _typeArguments
 _    _       _  _  _ _         _       __  LANGLE("<")
  _           _ _     __      _ _       _ _ typeProjection
  _    ____        _     _  ___     _ __   __ type
  _       ___     _    _       _        _   __  typeReference
  __   __   _ _     _    _ _  _   _ _  __         userType
 _  _       _   _                _   _            _ simpleUserType
   _      _           __  _ _  _       _   _ ___  _ _ simpleIdentifier
 _ _   _  __ _                ___ _   _ _      _  _ __  Identifier("A")
      __    _    __    _   _          _     COMMA(",")
_____          _     _ _           _      _ typeProjection
     _ _ _        __  _  _ _ _ _      _   _  _type
 __ _    __  _  _  _ _ _    _   __     _ _      typeReference
      _   _      _       __ __      _     _      _userType
   __      _  _    __    _  _  _      _  _ _ _  _   simpleUserType
       _   _   _     __       _  __ _    _   _ _ _  _ simpleIdentifier
     ___ _   _       __  __    _  __   _  __     _   _  Identifier("Int")
__  _       __  _   _ _   _ ___  _ _   _ __ RANGLE(">")
            _ _  _     _    _ _ RANGLE(">")
    _    _    _     ___ _ __  valueArguments
  _         _ __    _    _ _  _ LPAREN("(")
     _   _  _ _ _ _     __ __   valueArgument
    _    __    __    _   _ _ ____ expression
    __  _     ___ _     _ _     _ _ disjunction
 _             _       _ _   _        conjunction
 _           _     _       _ _  _  _   _equality
     _ _      __      _  _  __  _       __comparison
  _   _     _       _  _   _             _  genericCallLikeComparison
     __       _             _  _ _        ___ infixOperation
  _  _            _     _ __         _ _  _   _ elvisExpression
    __ _  _  _  _  _           _   _ _  _  _   _  infixFunctionCall
 _     _       _ _ _____  _  _ _  _    __  _ _   ___rangeExpression
    _ _  _    _ _       