parseUnit(@)
  skipErrorTokens(@)
  listener: beginCompilationUnit(@)
  syntheticPreviousToken(@)
  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
    parseMetadataStar()
      listener: beginMetadataStar(@)
      parseMetadata()
        listener: beginMetadata(@)
        ensureIdentifier(@, metadataReference)
          inPlainSync()
          listener: handleIdentifier(abstract, metadataReference)
        parseQualifiedRestOpt(abstract, metadataContinuation)
        listener: handleNoTypeArguments(@)
        parseArgumentsOpt(abstract)
          listener: handleNoArguments(@)
        listener: endMetadata(@, null, @)
      parseMetadata(abstract)
        listener: beginMetadata(@)
        ensureIdentifier(@, metadataReference)
          listener: handleIdentifier(foo, metadataReference)
        parseQualifiedRestOpt(foo, metadataContinuation)
          parseQualifiedRest(foo, metadataContinuation)
            ensureIdentifier(., metadataContinuation)
              inPlainSync()
              listener: handleIdentifier(abstract, metadataContinuation)
            listener: handleQualified(.)
        listener: handleNoTypeArguments(@)
        parseArgumentsOpt(abstract)
          listener: handleNoArguments(@)
        listener: endMetadata(@, null, @)
      parseMetadata(abstract)
        listener: beginMetadata(@)
        ensureIdentifier(@, metadataReference)
          listener: handleIdentifier(foo, metadataReference)
        parseQualifiedRestOpt(foo, metadataContinuation)
          parseQualifiedRest(foo, metadataContinuation)
            ensureIdentifier(., metadataContinuation)
              listener: handleIdentifier(bar, metadataContinuation)
            listener: handleQualified(.)
        listener: handleNoTypeArguments(.)
        ensureIdentifier(., metadataContinuationAfterTypeArguments)
          inPlainSync()
          listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
        parseArgumentsOpt(abstract)
          listener: handleNoArguments(@)
        listener: endMetadata(@, ., @)
      parseMetadata(abstract)
        listener: beginMetadata(@)
        ensureIdentifier(@, metadataReference)
          listener: handleIdentifier(foo, metadataReference)
        parseQualifiedRestOpt(foo, metadataContinuation)
        listener: handleNoTypeArguments(()
        parseArgumentsOpt(foo)
          parseArguments(foo)
            parseArgumentsRest(()
              listener: beginArguments(()
              parseExpression(()
                parsePrecedenceExpression((, 1, true)
                  parseUnaryExpression((, true)
                    parsePrimary((, expression)
                      parseLiteralString(()
                        parseSingleLiteralString(()
                          listener: beginLiteralString("hello")
                          listener: endLiteralString(0, ))
              listener: endArguments(1, (, ))
        listener: endMetadata(@, null, @)
      parseMetadata())
        listener: beginMetadata(@)
        ensureIdentifier(@, metadataReference)
          listener: handleIdentifier(foo, metadataReference)
        parseQualifiedRestOpt(foo, metadataContinuation)
          parseQualifiedRest(foo, metadataContinuation)
            ensureIdentifier(., metadataContinuation)
              inPlainSync()
              listener: handleIdentifier(abstract, metadataContinuation)
            listener: handleQualified(.)
        listener: handleNoTypeArguments(()
        parseArgumentsOpt(abstract)
          parseArguments(abstract)
            parseArgumentsRest(()
              listener: beginArguments(()
              parseExpression(()
                parsePrecedenceExpression((, 1, true)
                  parseUnaryExpression((, true)
                    parsePrimary((, expression)
                      parseLiteralString(()
                        parseSingleLiteralString(()
                          listener: beginLiteralString("hello")
                          listener: endLiteralString(0, ))
              listener: endArguments(1, (, ))
        listener: endMetadata(@, null, @)
      parseMetadata())
        listener: beginMetadata(@)
        ensureIdentifier(@, metadataReference)
          listener: handleIdentifier(foo, metadataReference)
        parseQualifiedRestOpt(foo, metadataContinuation)
          parseQualifiedRest(foo, metadataContinuation)
            ensureIdentifier(., metadataContinuation)
              listener: handleIdentifier(bar, metadataContinuation)
            listener: handleQualified(.)
        listener: handleNoTypeArguments(.)
        ensureIdentifier(., metadataContinuationAfterTypeArguments)
          inPlainSync()
          listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
        parseArgumentsOpt(abstract)
          parseArguments(abstract)
            parseArgumentsRest(()
              listener: beginArguments(()
              parseExpression(()
                parsePrecedenceExpression((, 1, true)
                  parseUnaryExpression((, true)
                    parsePrimary((, expression)
                      parseLiteralString(()
                        parseSingleLiteralString(()
                          listener: beginLiteralString("hello")
                          listener: endLiteralString(0, ))
              listener: endArguments(1, (, ))
        listener: endMetadata(@, ., @)
      parseMetadata())
        listener: beginMetadata(@)
        ensureIdentifier(@, metadataReference)
          listener: handleIdentifier(foo, metadataReference)
        parseQualifiedRestOpt(foo, metadataContinuation)
        listener: beginTypeArguments(<)
        listener: handleIdentifier(int, typeReference)
        listener: handleNoTypeArguments(>)
        listener: handleType(int, null)
        listener: endTypeArguments(1, <, >)
        parseArgumentsOpt(>)
          parseArguments(>)
            parseArgumentsRest(()
              listener: beginArguments(()
              parseExpression(()
                parsePrecedenceExpression((, 1, true)
                  parseUnaryExpression((, true)
                    parsePrimary((, expression)
                      parseLiteralString(()
                        parseSingleLiteralString(()
                          listener: beginLiteralString("hello")
                          listener: endLiteralString(0, ))
              listener: endArguments(1, (, ))
        listener: endMetadata(@, null, @)
      parseMetadata())
        listener: beginMetadata(@)
        ensureIdentifier(@, metadataReference)
          listener: handleIdentifier(foo, metadataReference)
        parseQualifiedRestOpt(foo, metadataContinuation)
        listener: beginTypeArguments(<)
        listener: handleIdentifier(int, typeReference)
        listener: handleNoTypeArguments(>)
        listener: handleType(int, null)
        listener: endTypeArguments(1, <, >)
        ensureIdentifier(., metadataContinuationAfterTypeArguments)
          inPlainSync()
          listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
        parseArgumentsOpt(abstract)
          parseArguments(abstract)
            parseArgumentsRest(()
              listener: beginArguments(()
              parseExpression(()
                parsePrecedenceExpression((, 1, true)
                  parseUnaryExpression((, true)
                    parsePrimary((, expression)
                      parseLiteralString(()
                        parseSingleLiteralString(()
                          listener: beginLiteralString("hello")
                          listener: endLiteralString(0, ))
              listener: endArguments(1, (, ))
        listener: endMetadata(@, ., @)
      parseMetadata())
        listener: beginMetadata(@)
        ensureIdentifier(@, metadataReference)
          listener: handleIdentifier(foo, metadataReference)
        parseQualifiedRestOpt(foo, metadataContinuation)
          parseQualifiedRest(foo, metadataContinuation)
            ensureIdentifier(., metadataContinuation)
              listener: handleIdentifier(bar, metadataContinuation)
            listener: handleQualified(.)
        listener: beginTypeArguments(<)
        listener: handleIdentifier(int, typeReference)
        listener: handleNoTypeArguments(>)
        listener: handleType(int, null)
        listener: endTypeArguments(1, <, >)
        parseArgumentsOpt(>)
          parseArguments(>)
            parseArgumentsRest(()
              listener: beginArguments(()
              parseExpression(()
                parsePrecedenceExpression((, 1, true)
                  parseUnaryExpression((, true)
                    parsePrimary((, expression)
                      parseLiteralString(()
                        parseSingleLiteralString(()
                          listener: beginLiteralString("hello")
                          listener: endLiteralString(0, ))
              listener: endArguments(1, (, ))
        listener: endMetadata(@, null, @)
      parseMetadata())
        listener: beginMetadata(@)
        ensureIdentifier(@, metadataReference)
          listener: handleIdentifier(foo, metadataReference)
        parseQualifiedRestOpt(foo, metadataContinuation)
          parseQualifiedRest(foo, metadataContinuation)
            ensureIdentifier(., metadataContinuation)
              listener: handleIdentifier(bar, metadataContinuation)
            listener: handleQualified(.)
        listener: beginTypeArguments(<)
        listener: handleIdentifier(int, typeReference)
        listener: handleNoTypeArguments(>)
        listener: handleType(int, null)
        listener: endTypeArguments(1, <, >)
        ensureIdentifier(., metadataContinuationAfterTypeArguments)
          inPlainSync()
          listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
        parseArgumentsOpt(abstract)
          parseArguments(abstract)
            parseArgumentsRest(()
              listener: beginArguments(()
              parseExpression(()
                parsePrecedenceExpression((, 1, true)
                  parseUnaryExpression((, true)
                    parsePrimary((, expression)
                      parseLiteralString(()
                        parseSingleLiteralString(()
                          listener: beginLiteralString("hello")
                          listener: endLiteralString(0, ))
              listener: endArguments(1, (, ))
        listener: endMetadata(@, ., class)
      listener: endMetadataStar(10)
    parseTopLevelKeywordDeclaration(), class, Instance of 'DirectiveContext')
      parseClassDeclarationModifiers(), class)
      parseClassOrNamedMixinApplication(null, class)
        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
        ensureIdentifier(class, classOrMixinDeclaration)
          listener: handleIdentifier(X, classOrMixinDeclaration)
        listener: handleNoTypeVariables({)
        listener: beginClassDeclaration(class, null, X)
        parseClass(X, class, class, X)
          parseClassHeaderOpt(X, class, class)
            parseClassExtendsOpt(X)
              listener: handleNoType(X)
              listener: handleClassExtends(null, 1)
            parseWithClauseOpt(X)
              listener: handleClassNoWithClause()
            parseClassOrMixinImplementsOpt(X)
              listener: handleClassOrMixinImplements(null, 0)
            listener: handleClassHeader(class, class, null)
          parseClassOrMixinOrExtensionBody(X, DeclarationKind.Class, X)
            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
            notEofOrValue(}, })
            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
          listener: endClassDeclaration(class, })
  listener: endTopLevelDeclaration(typedef)
  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
    parseMetadataStar(})
      listener: beginMetadataStar(typedef)
      listener: endMetadataStar(0)
    parseTopLevelKeywordDeclaration(}, typedef, Instance of 'DirectiveContext')
      parseTopLevelKeywordModifiers(}, typedef)
      parseTypedef(typedef)
        listener: beginUncategorizedTopLevelDeclaration(typedef)
        listener: beginTypedef(typedef)
        ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
          listener: handleIdentifier(F, typedefDeclaration)
        listener: beginTypeVariables(<)
        parseMetadataStar(<)
          listener: beginMetadataStar(@)
          parseMetadata(<)
            listener: beginMetadata(@)
            ensureIdentifier(@, metadataReference)
              inPlainSync()
              listener: handleIdentifier(abstract, metadataReference)
            parseQualifiedRestOpt(abstract, metadataContinuation)
            listener: handleNoTypeArguments(T)
            parseArgumentsOpt(abstract)
              listener: handleNoArguments(T)
            listener: endMetadata(@, null, T)
          listener: endMetadataStar(1)
        ensureIdentifier(abstract, typeVariableDeclaration)
          listener: handleIdentifier(T, typeVariableDeclaration)
        listener: beginTypeVariable(T)
        listener: handleTypeVariablesDefined(T, 1)
        listener: handleNoType(T)
        listener: endTypeVariable(>, 0, null, null)
        listener: endTypeVariables(<, >)
        listener: beginFunctionType(int)
        listener: beginTypeVariables(<)
        parseMetadataStar(<)
          listener: beginMetadataStar(@)
          parseMetadata(<)
            listener: beginMetadata(@)
            ensureIdentifier(@, metadataReference)
              inPlainSync()
              listener: handleIdentifier(abstract, metadataReference)
            parseQualifiedRestOpt(abstract, metadataContinuation)
            listener: handleNoTypeArguments(X)
            parseArgumentsOpt(abstract)
              listener: handleNoArguments(X)
            listener: endMetadata(@, null, X)
          listener: endMetadataStar(1)
        ensureIdentifier(abstract, typeVariableDeclaration)
          listener: handleIdentifier(X, typeVariableDeclaration)
        listener: beginTypeVariable(X)
        listener: handleTypeVariablesDefined(X, 1)
        listener: handleNoType(X)
        listener: endTypeVariable(>, 0, null, null)
        listener: endTypeVariables(<, >)
        ensureIdentifier(=, typeReference)
          listener: handleIdentifier(int, typeReference)
        listener: handleNoTypeArguments(Function)
        listener: handleType(int, null)
        parseFormalParametersRequiredOpt(>, MemberKind.GeneralizedFunctionType)
          parseFormalParametersRest((, MemberKind.GeneralizedFunctionType)
            listener: beginFormalParameters((, MemberKind.GeneralizedFunctionType)
            parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
              parseMetadataStar(()
                listener: beginMetadataStar(@)
                parseMetadata(()
                  listener: beginMetadata(@)
                  ensureIdentifier(@, metadataReference)
                    inPlainSync()
                    listener: handleIdentifier(abstract, metadataReference)
                  parseQualifiedRestOpt(abstract, metadataContinuation)
                  listener: handleNoTypeArguments(int)
                  parseArgumentsOpt(abstract)
                    listener: handleNoArguments(int)
                  listener: endMetadata(@, null, int)
                listener: endMetadataStar(1)
              listener: beginFormalParameter(int, MemberKind.GeneralizedFunctionType, null, null, null)
              listener: handleIdentifier(int, typeReference)
              listener: handleNoTypeArguments())
              listener: handleType(int, null)
              listener: handleNoName())
              listener: handleFormalParameterWithoutValue())
              listener: endFormalParameter(null, null, null, ), null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
            listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
        listener: endFunctionType(Function, null)
        ensureSemicolon())
        listener: endTypedef(typedef, =, ;)
  listener: endTopLevelDeclaration(typedef)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(typedef)
      listener: endMetadataStar(0)
    parseTopLevelKeywordDeclaration(;, typedef, Instance of 'DirectiveContext')
      parseTopLevelKeywordModifiers(;, typedef)
      parseTypedef(typedef)
        listener: beginUncategorizedTopLevelDeclaration(typedef)
        listener: beginTypedef(typedef)
        ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
          listener: handleIdentifier(F, typedefDeclaration)
        listener: beginTypeVariables(<)
        parseMetadataStar(<)
          listener: beginMetadataStar(@)
          parseMetadata(<)
            listener: beginMetadata(@)
            ensureIdentifier(@, metadataReference)
              listener: handleIdentifier(foo, metadataReference)
            parseQualifiedRestOpt(foo, metadataContinuation)
              parseQualifiedRest(foo, metadataContinuation)
                ensureIdentifier(., metadataContinuation)
                  inPlainSync()
                  listener: handleIdentifier(abstract, metadataContinuation)
                listener: handleQualified(.)
            listener: handleNoTypeArguments(T)
            parseArgumentsOpt(abstract)
              listener: handleNoArguments(T)
            listener: endMetadata(@, null, T)
          listener: endMetadataStar(1)
        ensureIdentifier(abstract, typeVariableDeclaration)
          listener: handleIdentifier(T, typeVariableDeclaration)
        listener: beginTypeVariable(T)
        listener: handleTypeVariablesDefined(T, 1)
        listener: handleNoType(T)
        listener: endTypeVariable(>, 0, null, null)
        listener: endTypeVariables(<, >)
        listener: beginFunctionType(int)
        listener: beginTypeVariables(<)
        parseMetadataStar(<)
          listener: beginMetadataStar(@)
          parseMetadata(<)
            listener: beginMetadata(@)
            ensureIdentifier(@, metadataReference)
              listener: handleIdentifier(foo, metadataReference)
            parseQualifiedRestOpt(foo, metadataContinuation)
              parseQualifiedRest(foo, metadataContinuation)
                ensureIdentifier(., metadataContinuation)
                  inPlainSync()
                  listener: handleIdentifier(abstract, metadataContinuation)
                listener: handleQualified(.)
            listener: handleNoTypeArguments(X)
            parseArgumentsOpt(abstract)
              listener: handleNoArguments(X)
            listener: endMetadata(@, null, X)
          listener: endMetadataStar(1)
        ensureIdentifier(abstract, typeVariableDeclaration)
          listener: handleIdentifier(X, typeVariableDeclaration)
        listener: beginTypeVariable(X)
        listener: handleTypeVariablesDefined(X, 1)
        listener: handleNoType(X)
        listener: endTypeVariable(>, 0, null, null)
        listener: endTypeVariables(<, >)
        ensureIdentifier(=, typeReference)
          listener: handleIdentifier(int, typeReference)
        listener: handleNoTypeArguments(Function)
        listener: handleType(int, null)
        parseFormalParametersRequiredOpt(>, MemberKind.GeneralizedFunctionType)
          parseFormalParametersRest((, MemberKind.GeneralizedFunctionType)
            listener: beginFormalParameters((, MemberKind.GeneralizedFunctionType)
            parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
              parseMetadataStar(()
                listener: beginMetadataStar(@)
                parseMetadata(()
                  listener: beginMetadata(@)
                  ensureIdentifier(@, metadataReference)
                    listener: handleIdentifier(foo, metadataReference)
                  parseQualifiedRestOpt(foo, metadataContinuation)
                    parseQualifiedRest(foo, metadataContinuation)
                      ensureIdentifier(., metadataContinuation)
                        inPlainSync()
                        listener: handleIdentifier(abstract, metadataContinuation)
                      listener: handleQualified(.)
                  listener: handleNoTypeArguments(int)
                  parseArgumentsOpt(abstract)
                    listener: handleNoArguments(int)
                  listener: endMetadata(@, null, int)
                listener: endMetadataStar(1)
              listener: beginFormalParameter(int, MemberKind.GeneralizedFunctionType, null, null, null)
              listener: handleIdentifier(int, typeReference)
              listener: handleNoTypeArguments())
              listener: handleType(int, null)
              listener: handleNoName())
              listener: handleFormalParameterWithoutValue())
              listener: endFormalParameter(null, null, null, ), null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
            listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
        listener: endFunctionType(Function, null)
        ensureSemicolon())
        listener: endTypedef(typedef, =, ;)
  listener: endTopLevelDeclaration(typedef)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(typedef)
      listener: endMetadataStar(0)
    parseTopLevelKeywordDeclaration(;, typedef, Instance of 'DirectiveContext')
      parseTopLevelKeywordModifiers(;, typedef)
      parseTypedef(typedef)
        listener: beginUncategorizedTopLevelDeclaration(typedef)
        listener: beginTypedef(typedef)
        ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
          listener: handleIdentifier(F, typedefDeclaration)
        listener: beginTypeVariables(<)
        parseMetadataStar(<)
          listener: beginMetadataStar(@)
          parseMetadata(<)
            listener: beginMetadata(@)
            ensureIdentifier(@, metadataReference)
              listener: handleIdentifier(foo, metadataReference)
            parseQualifiedRestOpt(foo, metadataContinuation)
              parseQualifiedRest(foo, metadataContinuation)
                ensureIdentifier(., metadataContinuation)
                  listener: handleIdentifier(bar, metadataContinuation)
                listener: handleQualified(.)
            listener: handleNoTypeArguments(.)
            ensureIdentifier(., metadataContinuationAfterTypeArguments)
              inPlainSync()
              listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
            parseArgumentsOpt(abstract)
              listener: handleNoArguments(T)
            listener: endMetadata(@, ., T)
          listener: endMetadataStar(1)
        ensureIdentifier(abstract, typeVariableDeclaration)
          listener: handleIdentifier(T, typeVariableDeclaration)
        listener: beginTypeVariable(T)
        listener: handleTypeVariablesDefined(T, 1)
        listener: handleNoType(T)
        listener: endTypeVariable(>, 0, null, null)
        listener: endTypeVariables(<, >)
        listener: beginFunctionType(int)
        listener: beginTypeVariables(<)
        parseMetadataStar(<)
          listener: beginMetadataStar(@)
          parseMetadata(<)
            listener: beginMetadata(@)
            ensureIdentifier(@, metadataReference)
              listener: handleIdentifier(foo, metadataReference)
            parseQualifiedRestOpt(foo, metadataContinuation)
              parseQualifiedRest(foo, metadataContinuation)
                ensureIdentifier(., metadataContinuation)
                  listener: handleIdentifier(bar, metadataContinuation)
                listener: handleQualified(.)
            listener: handleNoTypeArguments(.)
            ensureIdentifier(., metadataContinuationAfterTypeArguments)
              inPlainSync()
              listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
            parseArgumentsOpt(abstract)
              listener: handleNoArguments(X)
            listener: endMetadata(@, ., X)
          listener: endMetadataStar(1)
        ensureIdentifier(abstract, typeVariableDeclaration)
          listener: handleIdentifier(X, typeVariableDeclaration)
        listener: beginTypeVariable(X)
        listener: handleTypeVariablesDefined(X, 1)
        listener: handleNoType(X)
        listener: endTypeVariable(>, 0, null, null)
        listener: endTypeVariables(<, >)
        ensureIdentifier(=, typeReference)
          listener: handleIdentifier(int, typeReference)
        listener: handleNoTypeArguments(Function)
        listener: handleType(int, null)
        parseFormalParametersRequiredOpt(>, MemberKind.GeneralizedFunctionType)
          parseFormalParametersRest((, MemberKind.GeneralizedFunctionType)
            listener: beginFormalParameters((, MemberKind.GeneralizedFunctionType)
            parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
              parseMetadataStar(()
                listener: beginMetadataStar(@)
                parseMetadata(()
                  listener: beginMetadata(@)
                  ensureIdentifier(@, metadataReference)
                    listener: handleIdentifier(foo, metadataReference)
                  parseQualifiedRestOpt(foo, metadataContinuation)
                    parseQualifiedRest(foo, metadataContinuation)
                      ensureIdentifier(., metadataContinuation)
                        listener: handleIdentifier(bar, metadataContinuation)
                      listener: handleQualified(.)
                  listener: handleNoTypeArguments(.)
                  ensureIdentifier(., metadataContinuationAfterTypeArguments)
                    inPlainSync()
                    listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
                  parseArgumentsOpt(abstract)
                    listener: handleNoArguments(int)
                  listener: endMetadata(@, ., int)
                listener: endMetadataStar(1)
              listener: beginFormalParameter(int, MemberKind.GeneralizedFunctionType, null, null, null)
              listener: handleIdentifier(int, typeReference)
              listener: handleNoTypeArguments())
              listener: handleType(int, null)
              listener: handleNoName())
              listener: handleFormalParameterWithoutValue())
              listener: endFormalParameter(null, null, null, ), null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
            listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
        listener: endFunctionType(Function, null)
        ensureSemicolon())
        listener: endTypedef(typedef, =, ;)
  listener: endTopLevelDeclaration(typedef)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(typedef)
      listener: endMetadataStar(0)
    parseTopLevelKeywordDeclaration(;, typedef, Instance of 'DirectiveContext')
      parseTopLevelKeywordModifiers(;, typedef)
      parseTypedef(typedef)
        listener: beginUncategorizedTopLevelDeclaration(typedef)
        listener: beginTypedef(typedef)
        ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
          listener: handleIdentifier(F, typedefDeclaration)
        listener: beginTypeVariables(<)
        parseMetadataStar(<)
          listener: beginMetadataStar(@)
          parseMetadata(<)
            listener: beginMetadata(@)
            ensureIdentifier(@, metadataReference)
              listener: handleIdentifier(foo, metadataReference)
            parseQualifiedRestOpt(foo, metadataContinuation)
            listener: handleNoTypeArguments(()
            parseArgumentsOpt(foo)
              parseArguments(foo)
                parseArgumentsRest(()
                  listener: beginArguments(()
                  parseExpression(()
                    parsePrecedenceExpression((, 1, true)
                      parseUnaryExpression((, true)
                        parsePrimary((, expression)
                          parseLiteralString(()
                            parseSingleLiteralString(()
                              listener: beginLiteralString("hello")
                              listener: endLiteralString(0, ))
                  listener: endArguments(1, (, ))
            listener: endMetadata(@, null, T)
          listener: endMetadataStar(1)
        ensureIdentifier(), typeVariableDeclaration)
          listener: handleIdentifier(T, typeVariableDeclaration)
        listener: beginTypeVariable(T)
        listener: handleTypeVariablesDefined(T, 1)
        listener: handleNoType(T)
        listener: endTypeVariable(>, 0, null, null)
        listener: endTypeVariables(<, >)
        listener: beginFunctionType(int)
        listener: beginTypeVariables(<)
        parseMetadataStar(<)
          listener: beginMetadataStar(@)
          parseMetadata(<)
            listener: beginMetadata(@)
            ensureIdentifier(@, metadataReference)
              listener: handleIdentifier(foo, metadataReference)
            parseQualifiedRestOpt(foo, metadataContinuation)
            listener: handleNoTypeArguments(()
            parseArgumentsOpt(foo)
              parseArguments(foo)
                parseArgumentsRest(()
                  listener: beginArguments(()
                  parseExpression(()
                    parsePrecedenceExpression((, 1, true)
                      parseUnaryExpression((, true)
                        parsePrimary((, expression)
                          parseLiteralString(()
                            parseSingleLiteralString(()
                              listener: beginLiteralString("hello")
                              listener: endLiteralString(0, ))
                  listener: endArguments(1, (, ))
            listener: endMetadata(@, null, X)
          listener: endMetadataStar(1)
        ensureIdentifier(), typeVariableDeclaration)
          listener: handleIdentifier(X, typeVariableDeclaration)
        listener: beginTypeVariable(X)
        listener: handleTypeVariablesDefined(X, 1)
        listener: handleNoType(X)
        listener: endTypeVariable(>, 0, null, null)
        listener: endTypeVariables(<, >)
        ensureIdentifier(=, typeReference)
          listener: handleIdentifier(int, typeReference)
        listener: handleNoTypeArguments(Function)
        listener: handleType(int, null)
        parseFormalParametersRequiredOpt(>, MemberKind.GeneralizedFunctionType)
          parseFormalParametersRest((, MemberKind.GeneralizedFunctionType)
            listener: beginFormalParameters((, MemberKind.GeneralizedFunctionType)
            parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
              parseMetadataStar(()
                listener: beginMetadataStar(@)
                parseMetadata(()
                  listener: beginMetadata(@)
                  ensureIdentifier(@, metadataReference)
                    listener: handleIdentifier(foo, metadataReference)
                  parseQualifiedRestOpt(foo, metadataContinuation)
                  listener: handleNoTypeArguments(()
                  parseArgumentsOpt(foo)
                    parseArguments(foo)
                      parseArgumentsRest(()
                        listener: beginArguments(()
                        parseExpression(()
                          parsePrecedenceExpression((, 1, true)
                            parseUnaryExpression((, true)
                              parsePrimary((, expression)
                                parseLiteralString(()
                                  parseSingleLiteralString(()
                                    listener: beginLiteralString("hello")
                                    listener: endLiteralString(0, ))
                        listener: endArguments(1, (, ))
                  listener: endMetadata(@, null, int)
                listener: endMetadataStar(1)
              listener: beginFormalParameter(int, MemberKind.GeneralizedFunctionType, null, null, null)
              listener: handleIdentifier(int, typeReference)
              listener: handleNoTypeArguments())
              listener: handleType(int, null)
              listener: handleNoName())
              listener: handleFormalParameterWithoutValue())
              listener: endFormalParameter(null, null, null, ), null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
            listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
        listener: endFunctionType(Function, null)
        ensureSemicolon())
        listener: endTypedef(typedef, =, ;)
  listener: endTopLevelDeclaration(typedef)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(typedef)
      listener: endMetadataStar(0)
    parseTopLevelKeywordDeclaration(;, typedef, Instance of 'DirectiveContext')
      parseTopLevelKeywordModifiers(;, typedef)
      parseTypedef(typedef)
        listener: beginUncategorizedTopLevelDeclaration(typedef)
        listener: beginTypedef(typedef)
        ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
          listener: handleIdentifier(F, typedefDeclaration)
        listener: beginTypeVariables(<)
        parseMetadataStar(<)
          listener: beginMetadataStar(@)
          parseMetadata(<)
            listener: beginMetadata(@)
            ensureIdentifier(@, metadataReference)
              listener: handleIdentifier(foo, metadataReference)
            parseQualifiedRestOpt(foo, metadataContinuation)
              parseQualifiedRest(foo, metadataContinuation)
                ensureIdentifier(., metadataContinuation)
                  inPlainSync()
                  listener: handleIdentifier(abstract, metadataContinuation)
                listener: handleQualified(.)
            listener: handleNoTypeArguments(()
            parseArgumentsOpt(abstract)
              parseArguments(abstract)
                parseArgumentsRest(()
                  listener: beginArguments(()
                  parseExpression(()
                    parsePrecedenceExpression((, 1, true)
                      parseUnaryExpression((, true)
                        parsePrimary((, expression)
                          parseLiteralString(()
                            parseSingleLiteralString(()
                              listener: beginLiteralString("hello")
                              listener: endLiteralString(0, ))
                  listener: endArguments(1, (, ))
            listener: endMetadata(@, null, T)
          listener: endMetadataStar(1)
        ensureIdentifier(), typeVariableDeclaration)
          listener: handleIdentifier(T, typeVariableDeclaration)
        listener: beginTypeVariable(T)
        listener: handleTypeVariablesDefined(T, 1)
        listener: handleNoType(T)
        listener: endTypeVariable(>, 0, null, null)
        listener: endTypeVariables(<, >)
        listener: beginFunctionType(int)
        listener: beginTypeVariables(<)
        parseMetadataStar(<)
          listener: beginMetadataStar(@)
          parseMetadata(<)
            listener: beginMetadata(@)
            ensureIdentifier(@, metadataReference)
              listener: handleIdentifier(foo, metadataReference)
            parseQualifiedRestOpt(foo, metadataContinuation)
              parseQualifiedRest(foo, metadataContinuation)
                ensureIdentifier(., metadataContinuation)
                  inPlainSync()
                  listener: handleIdentifier(abstract, metadataContinuation)
                listener: handleQualified(.)
            listener: handleNoTypeArguments(()
            parseArgumentsOpt(abstract)
              parseArguments(abstract)
                parseArgumentsRest(()
                  listener: beginArguments(()
                  parseExpression(()
                    parsePrecedenceExpression((, 1, true)
                      parseUnaryExpression((, true)
                        parsePrimary((, expression)
                          parseLiteralString(()
                            parseSingleLiteralString(()
                              listener: beginLiteralString("hello")
                              listener: endLiteralString(0, ))
                  listener: endArguments(1, (, ))
            listener: endMetadata(@, null, X)
          listener: endMetadataStar(1)
        ensureIdentifier(), typeVariableDeclaration)
          listener: handleIdentifier(X, typeVariableDeclaration)
        listener: beginTypeVariable(X)
        listener: handleTypeVariablesDefined(X, 1)
        listener: handleNoType(X)
        listener: endTypeVariable(>, 0, null, null)
        listener: endTypeVariables(<, >)
        ensureIdentifier(=, typeReference)
          listener: handleIdentifier(int, typeReference)
        listener: handleNoTypeArguments(Function)
        listener: handleType(int, null)
        parseFormalParametersRequiredOpt(>, MemberKind.GeneralizedFunctionType)
          parseFormalParametersRest((, MemberKind.GeneralizedFunctionType)
            listener: beginFormalParameters((, MemberKind.GeneralizedFunctionType)
            parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
              parseMetadataStar(()
                listener: beginMetadataStar(@)
                parseMetadata(()
                  listener: beginMetadata(@)
                  ensureIdentifier(@, metadataReference)
                    listener: handleIdentifier(foo, metadataReference)
                  parseQualifiedRestOpt(foo, metadataContinuation)
                    parseQualifiedRest(foo, metadataContinuation)
                      ensureIdentifier(., metadataContinuation)
                        inPlainSync()
                        listener: handleIdentifier(abstract, metadataContinuation)
                      listener: handleQualified(.)
                  listener: handleNoTypeArguments(()
                  parseArgumentsOpt(abstract)
                    parseArguments(abstract)
                      parseArgumentsRest(()
                        listener: beginArguments(()
                        parseExpression(()
                          parsePrecedenceExpression((, 1, true)
                            parseUnaryExpression((, true)
                              parsePrimary((, expression)
                                parseLiteralString(()
                                  parseSingleLiteralString(()
                                    listener: beginLiteralString("hello")
                                    listener: endLiteralString(0, ))
                        listener: endArguments(1, (, ))
                  listener: endMetadata(@, null, int)
                listener: endMetadataStar(1)
              listener: beginFormalParameter(int, MemberKind.GeneralizedFunctionType, null, null, null)
              listener: handleIdentifier(int, typeReference)
              listener: handleNoTypeArguments())
              listener: handleType(int, null)
              listener: handleNoName())
              listener: handleFormalParameterWithoutValue())
              listener: endFormalParameter(null, null, null, ), null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
            listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
        listener: endFunctionType(Function, null)
        ensureSemicolon())
        listener: endTypedef(typedef, =, ;)
  listener: endTopLevelDeclaration(typedef)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(typedef)
      listener: endMetadataStar(0)
    parseTopLevelKeywordDeclaration(;, typedef, Instance of 'DirectiveContext')
      parseTopLevelKeywordModifiers(;, typedef)
      parseTypedef(typedef)
        listener: beginUncategorizedTopLevelDeclaration(typedef)
        listener: beginTypedef(typedef)
        ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
          listener: handleIdentifier(F, typedefDeclaration)
        listener: beginTypeVariables(<)
        parseMetadataStar(<)
          listener: beginMetadataStar(@)
          parseMetadata(<)
            listener: beginMetadata(@)
            ensureIdentifier(@, metadataReference)
              listener: handleIdentifier(foo, metadataReference)
            parseQualifiedRestOpt(foo, metadataContinuation)
              parseQualifiedRest(foo, metadataContinuation)
                ensureIdentifier(., metadataContinuation)
                  listener: handleIdentifier(bar, metadataContinuation)
                listener: handleQualified(.)
            listener: handleNoTypeArguments(.)
            ensureIdentifier(., metadataContinuationAfterTypeArguments)
              inPlainSync()
              listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
            parseArgumentsOpt(abstract)
              parseArguments(abstract)
                parseArgumentsRest(()
                  listener: beginArguments(()
                  parseExpression(()
                    parsePrecedenceExpression((, 1, true)
                      parseUnaryExpression((, true)
                        parsePrimary((, expression)
                          parseLiteralString(()
                            parseSingleLiteralString(()
                              listener: beginLiteralString("hello")
                              listener: endLiteralString(0, ))
                  listener: endArguments(1, (, ))
            listener: endMetadata(@, ., T)
          listener: endMetadataStar(1)
        ensureIdentifier(), typeVariableDeclaration)
          listener: handleIdentifier(T, typeVariableDeclaration)
        listener: beginTypeVariable(T)
        listener: handleTypeVariablesDefined(T, 1)
        listener: handleNoType(T)
        listener: endTypeVariable(>, 0, null, null)
        listener: endTypeVariables(<, >)
        listener: beginFunctionType(int)
        listener: beginTypeVariables(<)
        parseMetadataStar(<)
          listener: beginMetadataStar(@)
          parseMetadata(<)
            listener: beginMetadata(@)
            ensureIdentifier(@, metadataReference)
              listener: handleIdentifier(foo, metadataReference)
            parseQualifiedRestOpt(foo, metadataContinuation)
              parseQualifiedRest(foo, metadataContinuation)
                ensureIdentifier(., metadataContinuation)
                  listener: handleIdentifier(bar, metadataContinuation)
                listener: handleQualified(.)
            listener: handleNoTypeArguments(.)
            ensureIdentifier(., metadataContinuationAfterTypeArguments)
              inPlainSync()
              listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
            parseArgumentsOpt(abstract)
              parseArguments(abstract)
                parseArgumentsRest(()
                  listener: beginArguments(()
                  parseExpression(()
                    parsePrecedenceExpression((, 1, true)
                      parseUnaryExpression((, true)
                        parsePrimary((, expression)
                          parseLiteralString(()
                            parseSingleLiteralString(()
                              listener: beginLiteralString("hello")
                              listener: endLiteralString(0, ))
                  listener: endArguments(1, (, ))
            listener: endMetadata(@, ., X)
          listener: endMetadataStar(1)
        ensureIdentifier(), typeVariableDeclaration)
          listener: handleIdentifier(X, typeVariableDeclaration)
        listener: beginTypeVariable(X)
        listener: handleTypeVariablesDefined(X, 1)
        listener: handleNoType(X)
        listener: endTypeVariable(>, 0, null, null)
        listener: endTypeVariables(<, >)
        ensureIdentifier(=, typeReference)
          listener: handleIdentifier(int, typeReference)
        listener: handleNoTypeArguments(Function)
        listener: handleType(int, null)
        parseFormalParametersRequiredOpt(>, MemberKind.GeneralizedFunctionType)
          parseFormalParametersRest((, MemberKind.GeneralizedFunctionType)
            listener: beginFormalParameters((, MemberKind.GeneralizedFunctionType)
            parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
              parseMetadataStar(()
                listener: beginMetadataStar(@)
                parseMetadata(()
                  listener: beginMetadata(@)
                  ensureIdentifier(@, metadataReference)
                    listener: handleIdentifier(foo, metadataReference)
                  parseQualifiedRestOpt(foo, metadataContinuation)
                    parseQualifiedRest(foo, metadataContinuation)
                      ensureIdentifier(., metadataContinuation)
                        listener: handleIdentifier(bar, metadataContinuation)
                      listener: handleQualified(.)
                  listener: handleNoTypeArguments(.)
                  ensureIdentifier(., metadataContinuationAfterTypeArguments)
                    inPlainSync()
                    listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
                  parseArgumentsOpt(abstract)
                    parseArguments(abstract)
                      parseArgumentsRest(()
                        listener: beginArguments(()
                        parseExpression(()
                          parsePrecedenceExpression((, 1, true)
                            parseUnaryExpression((, true)
                              parsePrimary((, expression)
                                parseLiteralString(()
                                  parseSingleLiteralString(()
                                    listener: beginLiteralString("hello")
                                    listener: endLiteralString(0, ))
                        listener: endArguments(1, (, ))
                  listener: endMetadata(@, ., int)
                listener: endMetadataStar(1)
              listener: beginFormalParameter(int, MemberKind.GeneralizedFunctionType, null, null, null)
              listener: handleIdentifier(int, typeReference)
              listener: handleNoTypeArguments())
              listener: handleType(int, null)
              listener: handleNoName())
              listener: handleFormalParameterWithoutValue())
              listener: endFormalParameter(null, null, null, ), null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
            listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
        listener: endFunctionType(Function, null)
        ensureSemicolon())
        listener: endTypedef(typedef, =, ;)
  listener: endTopLevelDeclaration(typedef)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(typedef)
      listener: endMetadataStar(0)
    parseTopLevelKeywordDeclaration(;, typedef, Instance of 'DirectiveContext')
      parseTopLevelKeywordModifiers(;, typedef)
      parseTypedef(typedef)
        listener: beginUncategorizedTopLevelDeclaration(typedef)
        listener: beginTypedef(typedef)
        ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
          listener: handleIdentifier(F, typedefDeclaration)
        listener: beginTypeVariables(<)
        parseMetadataStar(<)
          listener: beginMetadataStar(@)
          parseMetadata(<)
            listener: beginMetadata(@)
            ensureIdentifier(@, metadataReference)
              listener: handleIdentifier(foo, metadataReference)
            parseQualifiedRestOpt(foo, metadataContinuation)
            listener: beginTypeArguments(<)
            listener: handleIdentifier(int, typeReference)
            listener: handleNoTypeArguments(>)
            listener: handleType(int, null)
            listener: endTypeArguments(1, <, >)
            parseArgumentsOpt(>)
              parseArguments(>)
                parseArgumentsRest(()
                  listener: beginArguments(()
                  parseExpression(()
                    parsePrecedenceExpression((, 1, true)
                      parseUnaryExpression((, true)
                        parsePrimary((, expression)
                          parseLiteralString(()
                            parseSingleLiteralString(()
                              listener: beginLiteralString("hello")
                              listener: endLiteralString(0, ))
                  listener: endArguments(1, (, ))
            listener: endMetadata(@, null, T)
          listener: endMetadataStar(1)
        ensureIdentifier(), typeVariableDeclaration)
          listener: handleIdentifier(T, typeVariableDeclaration)
        listener: beginTypeVariable(T)
        listener: handleTypeVariablesDefined(T, 1)
        listener: handleNoType(T)
        listener: endTypeVariable(>, 0, null, null)
        listener: endTypeVariables(<, >)
        listener: beginFunctionType(int)
        listener: beginTypeVariables(<)
        parseMetadataStar(<)
          listener: beginMetadataStar(@)
          parseMetadata(<)
            listener: beginMetadata(@)
            ensureIdentifier(@, metadataReference)
              listener: handleIdentifier(foo, metadataReference)
            parseQualifiedRestOpt(foo, metadataContinuation)
            listener: beginTypeArguments(<)
            listener: handleIdentifier(int, typeReference)
            listener: handleNoTypeArguments(>)
            listener: handleType(int, null)
            listener: endTypeArguments(1, <, >)
            parseArgumentsOpt(>)
              parseArguments(>)
                parseArgumentsRest(()
                  listener: beginArguments(()
                  parseExpression(()
                    parsePrecedenceExpression((, 1, true)
                      parseUnaryExpression((, true)
                        parsePrimary((, expression)
                          parseLiteralString(()
                            parseSingleLiteralString(()
                              listener: beginLiteralString("hello")
                              listener: endLiteralString(0, ))
                  listener: endArguments(1, (, ))
            listener: endMetadata(@, null, X)
          listener: endMetadataStar(1)
        ensureIdentifier(), typeVariableDeclaration)
          listener: handleIdentifier(X, typeVariableDeclaration)
        listener: beginTypeVariable(X)
        listener: handleTypeVariablesDefined(X, 1)
        listener: handleNoType(X)
        listener: endTypeVariable(>, 0, null, null)
        listener: endTypeVariables(<, >)
        ensureIdentifier(=, typeReference)
          listener: handleIdentifier(int, typeReference)
        listener: handleNoTypeArguments(Function)
        listener: handleType(int, null)
        parseFormalParametersRequiredOpt(>, MemberKind.GeneralizedFunctionType)
          parseFormalParametersRest((, MemberKind.GeneralizedFunctionType)
            listener: beginFormalParameters((, MemberKind.GeneralizedFunctionType)
            parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
              parseMetadataStar(()
                listener: beginMetadataStar(@)
                parseMetadata(()
                  listener: beginMetadata(@)
                  ensureIdentifier(@, metadataReference)
                    listener: handleIdentifier(foo, metadataReference)
                  parseQualifiedRestOpt(foo, metadataContinuation)
                  listener: beginTypeArguments(<)
                  listener: handleIdentifier(int, typeReference)
                  listener: handleNoTypeArguments(>)
                  listener: handleType(int, null)
                  listener: endTypeArguments(1, <, >)
                  parseArgumentsOpt(>)
                    parseArguments(>)
                      parseArgumentsRest(()
                        listener: beginArguments(()
                        parseExpression(()
                          parsePrecedenceExpression((, 1, true)
                            parseUnaryExpression((, true)
                              parsePrimary((, expression)
                                parseLiteralString(()
                                  parseSingleLiteralString(()
                                    listener: beginLiteralString("hello")
                                    listener: endLiteralString(0, ))
                        listener: endArguments(1, (, ))
                  listener: endMetadata(@, null, int)
                listener: endMetadataStar(1)
              listener: beginFormalParameter(int, MemberKind.GeneralizedFunctionType, null, null, null)
              listener: handleIdentifier(int, typeReference)
              listener: handleNoTypeArguments())
              listener: handleType(int, null)
              listener: handleNoName())
              listener: handleFormalParameterWithoutValue())
              listener: endFormalParameter(null, null, null, ), null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
            listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
        listener: endFunctionType(Function, null)
        ensureSemicolon())
        listener: endTypedef(typedef, =, ;)
  listener: endTopLevelDeclaration(typedef)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(typedef)
      listener: endMetadataStar(0)
    parseTopLevelKeywordDeclaration(;, typedef, Instance of 'DirectiveContext')
      parseTopLevelKeywordModifiers(;, typedef)
      parseTypedef(typedef)
        listener: beginUncategorizedTopLevelDeclaration(typedef)
        listener: beginTypedef(typedef)
        ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
          listener: handleIdentifier(F, typedefDeclaration)
        listener: beginTypeVariables(<)
        parseMetadataStar(<)
          listener: beginMetadataStar(@)
          parseMetadata(<)
            listener: beginMetadata(@)
            ensureIdentifier(@, metadataReference)
              listener: handleIdentifier(foo, metadataReference)
            parseQualifiedRestOpt(foo, metadataContinuation)
            listener: beginTypeArguments(<)
            listener: handleIdentifier(int, typeReference)
            listener: handleNoTypeArguments(>)
            listener: handleType(int, null)
            listener: endTypeArguments(1, <, >)
            ensureIdentifier(., metadataContinuationAfterTypeArguments)
              inPlainSync()
              listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
            parseArgumentsOpt(abstract)
              parseArguments(abstract)
                parseArgumentsRest(()
                  listener: beginArguments(()
                  parseExpression(()
                    parsePrecedenceExpression((, 1, true)
                      parseUnaryExpression((, true)
                        parsePrimary((, expression)
                          parseLiteralString(()
                            parseSingleLiteralString(()
                              listener: beginLiteralString("hello")
                              listener: endLiteralString(0, ))
                  listener: endArguments(1, (, ))
            listener: endMetadata(@, ., T)
          listener: endMetadataStar(1)
        ensureIdentifier(), typeVariableDeclaration)
          listener: handleIdentifier(T, typeVariableDeclaration)
        listener: beginTypeVariable(T)
        listener: handleTypeVariablesDefined(T, 1)
        listener: handleNoType(T)
        listener: endTypeVariable(>, 0, null, null)
        listener: endTypeVariables(<, >)
        listener: beginFunctionType(int)
        listener: beginTypeVariables(<)
        parseMetadataStar(<)
          listener: beginMetadataStar(@)
          parseMetadata(<)
            listener: beginMetadata(@)
            ensureIdentifier(@, metadataReference)
              listener: handleIdentifier(foo, metadataReference)
            parseQualifiedRestOpt(foo, metadataContinuation)
            listener: beginTypeArguments(<)
            listener: handleIdentifier(int, typeReference)
            listener: handleNoTypeArguments(>)
            listener: handleType(int, null)
            listener: endTypeArguments(1, <, >)
            ensureIdentifier(., metadataContinuationAfterTypeArguments)
              inPlainSync()
              listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
            parseArgumentsOpt(abstract)
              parseArguments(abstract)
                parseArgumentsRest(()
                  listener: beginArguments(()
                  parseExpression(()
                    parsePrecedenceExpression((, 1, true)
                      parseUnaryExpression((, true)
                        parsePrimary((, expression)
                          parseLiteralString(()
                            parseSingleLiteralString(()
                              listener: beginLiteralString("hello")
                              listener: endLiteralString(0, ))
                  listener: endArguments(1, (, ))
            listener: endMetadata(@, ., X)
          listener: endMetadataStar(1)
        ensureIdentifier(), typeVariableDeclaration)
          listener: handleIdentifier(X, typeVariableDeclaration)
        listener: beginTypeVariable(X)
        listener: handleTypeVariablesDefined(X, 1)
        listener: handleNoType(X)
        listener: endTypeVariable(>, 0, null, null)
        listener: endTypeVariables(<, >)
        ensureIdentifier(=, typeReference)
          listener: handleIdentifier(int, typeReference)
        listener: handleNoTypeArguments(Function)
        listener: handleType(int, null)
        parseFormalParametersRequiredOpt(>, MemberKind.GeneralizedFunctionType)
          parseFormalParametersRest((, MemberKind.GeneralizedFunctionType)
            listener: beginFormalParameters((, MemberKind.GeneralizedFunctionType)
            parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
              parseMetadataStar(()
                listener: beginMetadataStar(@)
                parseMetadata(()
                  listener: beginMetadata(@)
                  ensureIdentifier(@, metadataReference)
                    listener: handleIdentifier(foo, metadataReference)
                  parseQualifiedRestOpt(foo, metadataContinuation)
                  listener: beginTypeArguments(<)
                  listener: handleIdentifier(int, typeReference)
                  listener: handleNoTypeArguments(>)
                  listener: handleType(int, null)
                  listener: endTypeArguments(1, <, >)
                  ensureIdentifier(., metadataContinuationAfterTypeArguments)
                    inPlainSync()
                    listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
                  parseArgumentsOpt(abstract)
                    parseArguments(abstract)
                      parseArgumentsRest(()
                        listener: beginArguments(()
                        parseExpression(()
                          parsePrecedenceExpression((, 1, true)
                            parseUnaryExpression((, true)
                              parsePrimary((, expression)
                                parseLiteralString(()
                                  parseSingleLiteralString(()
                                    listener: beginLiteralString("hello")
                                    listener: endLiteralString(0, ))
                        listener: endArguments(1, (, ))
                  listener: endMetadata(@, ., int)
                listener: endMetadataStar(1)
              listener: beginFormalParameter(int, MemberKind.GeneralizedFunctionType, null, null, null)
              listener: handleIdentifier(int, typeReference)
              listener: handleNoTypeArguments())
              listener: handleType(int, null)
              listener: handleNoName())
              listener: handleFormalParameterWithoutValue())
              listener: endFormalParameter(null, null, null, ), null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
            listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
        listener: endFunctionType(Function, null)
        ensureSemicolon())
        listener: endTypedef(typedef, =, ;)
  listener: endTopLevelDeclaration(typedef)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(typedef)
      listener: endMetadataStar(0)
    parseTopLevelKeywordDeclaration(;, typedef, Instance of 'DirectiveContext')
      parseTopLevelKeywordModifiers(;, typedef)
      parseTypedef(typedef)
        listener: beginUncategorizedTopLevelDeclaration(typedef)
        listener: beginTypedef(typedef)
        ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
          listener: handleIdentifier(F, typedefDeclaration)
        listener: beginTypeVariables(<)
        parseMetadataStar(<)
          listener: beginMetadataStar(@)
          parseMetadata(<)
            listener: beginMetadata(@)
            ensureIdentifier(@, metadataReference)
              listener: handleIdentifier(foo, metadataReference)
            parseQualifiedRestOpt(foo, metadataContinuation)
              parseQualifiedRest(foo, metadataContinuation)
                ensureIdentifier(., metadataContinuation)
                  listener: handleIdentifier(bar, metadataContinuation)
                listener: handleQualified(.)
            listener: beginTypeArguments(<)
            listener: handleIdentifier(int, typeReference)
            listener: handleNoTypeArguments(>)
            listener: handleType(int, null)
            listener: endTypeArguments(1, <, >)
            parseArgumentsOpt(>)
              parseArguments(>)
                parseArgumentsRest(()
                  listener: beginArguments(()
                  parseExpression(()
                    parsePrecedenceExpression((, 1, true)
                      parseUnaryExpression((, true)
                        parsePrimary((, expression)
                          parseLiteralString(()
                            parseSingleLiteralString(()
                              listener: beginLiteralString("hello")
                              listener: endLiteralString(0, ))
                  listener: endArguments(1, (, ))
            listener: endMetadata(@, null, T)
          listener: endMetadataStar(1)
        ensureIdentifier(), typeVariableDeclaration)
          listener: handleIdentifier(T, typeVariableDeclaration)
        listener: beginTypeVariable(T)
        listener: handleTypeVariablesDefined(T, 1)
        listener: handleNoType(T)
        listener: endTypeVariable(>, 0, null, null)
        listener: endTypeVariables(<, >)
        listener: beginFunctionType(int)
        listener: beginTypeVariables(<)
        parseMetadataStar(<)
          listener: beginMetadataStar(@)
          parseMetadata(<)
            listener: beginMetadata(@)
            ensureIdentifier(@, metadataReference)
              listener: handleIdentifier(foo, metadataReference)
            parseQualifiedRestOpt(foo, metadataContinuation)
              parseQualifiedRest(foo, metadataContinuation)
                ensureIdentifier(., metadataContinuation)
                  listener: handleIdentifier(bar, metadataContinuation)
                listener: handleQualified(.)
            listener: beginTypeArguments(<)
            listener: handleIdentifier(int, typeReference)
            listener: handleNoTypeArguments(>)
            listener: handleType(int, null)
            listener: endTypeArguments(1, <, >)
            parseArgumentsOpt(>)
              parseArguments(>)
                parseArgumentsRest(()
                  listener: beginArguments(()
                  parseExpression(()
                    parsePrecedenceExpression((, 1, true)
                      parseUnaryExpression((, true)
                        parsePrimary((, expression)
                          parseLiteralString(()
                            parseSingleLiteralString(()
                              listener: beginLiteralString("hello")
                              listener: endLiteralString(0, ))
                  listener: endArguments(1, (, ))
            listener: endMetadata(@, null, X)
          listener: endMetadataStar(1)
        ensureIdentifier(), typeVariableDeclaration)
          listener: handleIdentifier(X, typeVariableDeclaration)
        listener: beginTypeVariable(X)
        listener: handleTypeVariablesDefined(X, 1)
        listener: handleNoType(X)
        listener: endTypeVariable(>, 0, null, null)
        listener: endTypeVariables(<, >)
        ensureIdentifier(=, typeReference)
          listener: handleIdentifier(int, typeReference)
        listener: handleNoTypeArguments(Function)
        listener: handleType(int, null)
        parseFormalParametersRequiredOpt(>, MemberKind.GeneralizedFunctionType)
          parseFormalParametersRest((, MemberKind.GeneralizedFunctionType)
            listener: beginFormalParameters((, MemberKind.GeneralizedFunctionType)
            parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
              parseMetadataStar(()
                listener: beginMetadataStar(@)
                parseMetadata(()
                  listener: beginMetadata(@)
                  ensureIdentifier(@, metadataReference)
                    listener: handleIdentifier(foo, metadataReference)
                  parseQualifiedRestOpt(foo, metadataContinuation)
                    parseQualifiedRest(foo, metadataContinuation)
                      ensureIdentifier(., metadataContinuation)
                        listener: handleIdentifier(bar, metadataContinuation)
                      listener: handleQualified(.)
                  listener: beginTypeArguments(<)
                  listener: handleIdentifier(int, typeReference)
                  listener: handleNoTypeArguments(>)
                  listener: handleType(int, null)
                  listener: endTypeArguments(1, <, >)
                  parseArgumentsOpt(>)
                    parseArguments(>)
                      parseArgumentsRest(()
                        listener: beginArguments(()
                        parseExpression(()
                          parsePrecedenceExpression((, 1, true)
                            parseUnaryExpression((, true)
                              parsePrimary((, expression)
                                parseLiteralString(()
                                  parseSingleLiteralString(()
                                    listener: beginLiteralString("hello")
                                    listener: endLiteralString(0, ))
                        listener: endArguments(1, (, ))
                  listener: endMetadata(@, null, int)
                listener: endMetadataStar(1)
              listener: beginFormalParameter(int, MemberKind.GeneralizedFunctionType, null, null, null)
              listener: handleIdentifier(int, typeReference)
              listener: handleNoTypeArguments())
              listener: handleType(int, null)
              listener: handleNoName())
              listener: handleFormalParameterWithoutValue())
              listener: endFormalParameter(null, null, null, ), null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
            listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
        listener: endFunctionType(Function, null)
        ensureSemicolon())
        listener: endTypedef(typedef, =, ;)
  listener: endTopLevelDeclaration(typedef)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(typedef)
      listener: endMetadataStar(0)
    parseTopLevelKeywordDeclaration(;, typedef, Instance of 'DirectiveContext')
      parseTopLevelKeywordModifiers(;, typedef)
      parseTypedef(typedef)
        listener: beginUncategorizedTopLevelDeclaration(typedef)
        listener: beginTypedef(typedef)
        ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
          listener: handleIdentifier(F, typedefDeclaration)
        listener: beginTypeVariables(<)
        parseMetadataStar(<)
          listener: beginMetadataStar(@)
          parseMetadata(<)
            listener: beginMetadata(@)
            ensureIdentifier(@, metadataReference)
              listener: handleIdentifier(foo, metadataReference)
            parseQualifiedRestOpt(foo, metadataContinuation)
              parseQualifiedRest(foo, metadataContinuation)
                ensureIdentifier(., metadataContinuation)
                  listener: handleIdentifier(bar, metadataContinuation)
                listener: handleQualified(.)
            listener: beginTypeArguments(<)
            listener: handleIdentifier(int, typeReference)
            listener: handleNoTypeArguments(>)
            listener: handleType(int, null)
            listener: endTypeArguments(1, <, >)
            ensureIdentifier(., metadataContinuationAfterTypeArguments)
              inPlainSync()
              listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
            parseArgumentsOpt(abstract)
              parseArguments(abstract)
                parseArgumentsRest(()
                  listener: beginArguments(()
                  parseExpression(()
                    parsePrecedenceExpression((, 1, true)
                      parseUnaryExpression((, true)
                        parsePrimary((, expression)
                          parseLiteralString(()
                            parseSingleLiteralString(()
                              listener: beginLiteralString("hello")
                              listener: endLiteralString(0, ))
                  listener: endArguments(1, (, ))
            listener: endMetadata(@, ., T)
          listener: endMetadataStar(1)
        ensureIdentifier(), typeVariableDeclaration)
          listener: handleIdentifier(T, typeVariableDeclaration)
        listener: beginTypeVariable(T)
        listener: handleTypeVariablesDefined(T, 1)
        listener: handleNoType(T)
        listener: endTypeVariable(>, 0, null, null)
        listener: endTypeVariables(<, >)
        listener: beginFunctionType(int)
        listener: beginTypeVariables(<)
        parseMetadataStar(<)
          listener: beginMetadataStar(@)
          parseMetadata(<)
            listener: beginMetadata(@)
            ensureIdentifier(@, metadataReference)
              listener: handleIdentifier(foo, metadataReference)
            parseQualifiedRestOpt(foo, metadataContinuation)
              parseQualifiedRest(foo, metadataContinuation)
                ensureIdentifier(., metadataContinuation)
                  listener: handleIdentifier(bar, metadataContinuation)
                listener: handleQualified(.)
            listener: beginTypeArguments(<)
            listener: handleIdentifier(int, typeReference)
            listener: handleNoTypeArguments(>)
            listener: handleType(int, null)
            listener: endTypeArguments(1, <, >)
            ensureIdentifier(., metadataContinuationAfterTypeArguments)
              inPlainSync()
              listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
            parseArgumentsOpt(abstract)
              parseArguments(abstract)
                parseArgumentsRest(()
                  listener: beginArguments(()
                  parseExpression(()
                    parsePrecedenceExpression((, 1, true)
                      parseUnaryExpression((, true)
                        parsePrimary((, expression)
                          parseLiteralString(()
                            parseSingleLiteralString(()
                              listener: beginLiteralString("hello")
                              listener: endLiteralString(0, ))
                  listener: endArguments(1, (, ))
            listener: endMetadata(@, ., X)
          listener: endMetadataStar(1)
        ensureIdentifier(), typeVariableDeclaration)
          listener: handleIdentifier(X, typeVariableDeclaration)
        listener: beginTypeVariable(X)
        listener: handleTypeVariablesDefined(X, 1)
        listener: handleNoType(X)
        listener: endTypeVariable(>, 0, null, null)
        listener: endTypeVariables(<, >)
        ensureIdentifier(=, typeReference)
          listener: handleIdentifier(int, typeReference)
        listener: handleNoTypeArguments(Function)
        listener: handleType(int, null)
        parseFormalParametersRequiredOpt(>, MemberKind.GeneralizedFunctionType)
          parseFormalParametersRest((, MemberKind.GeneralizedFunctionType)
            listener: beginFormalParameters((, MemberKind.GeneralizedFunctionType)
            parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
              parseMetadataStar(()
                listener: beginMetadataStar(@)
                parseMetadata(()
                  listener: beginMetadata(@)
                  ensureIdentifier(@, metadataReference)
                    listener: handleIdentifier(foo, metadataReference)
                  parseQualifiedRestOpt(foo, metadataContinuation)
                    parseQualifiedRest(foo, metadataContinuation)
                      ensureIdentifier(., metadataContinuation)
                        listener: handleIdentifier(bar, metadataContinuation)
                      listener: handleQualified(.)
                  listener: beginTypeArguments(<)
                  listener: handleIdentifier(int, typeReference)
                  listener: handleNoTypeArguments(>)
                  listener: handleType(int, null)
                  listener: endTypeArguments(1, <, >)
                  ensureIdentifier(., metadataContinuationAfterTypeArguments)
                    inPlainSync()
                    listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
                  parseArgumentsOpt(abstract)
                    parseArguments(abstract)
                      parseArgumentsRest(()
                        listener: beginArguments(()
                        parseExpression(()
                          parsePrecedenceExpression((, 1, true)
                            parseUnaryExpression((, true)
                              parsePrimary((, expression)
                                parseLiteralString(()
                                  parseSingleLiteralString(()
                                    listener: beginLiteralString("hello")
                                    listener: endLiteralString(0, ))
                        listener: endArguments(1, (, ))
                  listener: endMetadata(@, ., int)
                listener: endMetadataStar(1)
              listener: beginFormalParameter(int, MemberKind.GeneralizedFunctionType, null, null, null)
              listener: handleIdentifier(int, typeReference)
              listener: handleNoTypeArguments())
              listener: handleType(int, null)
              listener: handleNoName())
              listener: handleFormalParameterWithoutValue())
              listener: endFormalParameter(null, null, null, ), null, null, FormalParameterKind.mandatory, MemberKind.GeneralizedFunctionType)
            listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
        listener: endFunctionType(Function, null)
        ensureSemicolon())
        listener: endTypedef(typedef, =, ;)
  listener: endTopLevelDeclaration(@)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(@)
      parseMetadata(;)
        listener: beginMetadata(@)
        ensureIdentifier(@, metadataReference)
          inPlainSync()
          listener: handleIdentifier(abstract, metadataReference)
        parseQualifiedRestOpt(abstract, metadataContinuation)
          parseQualifiedRest(abstract, metadataContinuation)
            ensureIdentifier(., metadataContinuation)
              inPlainSync()
              listener: handleIdentifier(abstract, metadataContinuation)
            listener: handleQualified(.)
        listener: handleNoTypeArguments(@)
        parseArgumentsOpt(abstract)
          listener: handleNoArguments(@)
        listener: endMetadata(@, null, @)
      parseMetadata(abstract)
        listener: beginMetadata(@)
        ensureIdentifier(@, metadataReference)
          inPlainSync()
          listener: handleIdentifier(abstract, metadataReference)
        parseQualifiedRestOpt(abstract, metadataContinuation)
          parseQualifiedRest(abstract, metadataContinuation)
            ensureIdentifier(., metadataContinuation)
              listener: handleIdentifier(bar, metadataContinuation)
            listener: handleQualified(.)
        listener: handleNoTypeArguments(.)
        ensureIdentifier(., metadataContinuationAfterTypeArguments)
          inPlainSync()
          listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
        parseArgumentsOpt(abstract)
          listener: handleNoArguments(@)
        listener: endMetadata(@, ., @)
      parseMetadata(abstract)
        listener: beginMetadata(@)
        ensureIdentifier(@, metadataReference)
          inPlainSync()
          listener: handleIdentifier(abstract, metadataReference)
        parseQualifiedRestOpt(abstract, metadataContinuation)
        listener: handleNoTypeArguments(()
        parseArgumentsOpt(abstract)
          parseArguments(abstract)
            parseArgumentsRest(()
              listener: beginArguments(()
              parseExpression(()
                parsePrecedenceExpression((, 1, true)
                  parseUnaryExpression((, true)
                    parsePrimary((, expression)
                      parseLiteralString(()
                        parseSingleLiteralString(()
                          listener: beginLiteralString("hello")
                          listener: endLiteralString(0, ))
              listener: endArguments(1, (, ))
        listener: endMetadata(@, null, @)
      parseMetadata())
        listener: beginMetadata(@)
        ensureIdentifier(@, metadataReference)
          inPlainSync()
          listener: handleIdentifier(abstract, metadataReference)
        parseQualifiedRestOpt(abstract, metadataContinuation)
          parseQualifiedRest(abstract, metadataContinuation)
            ensureIdentifier(., metadataContinuation)
              inPlainSync()
              listener: handleIdentifier(abstract, metadataContinuation)
            listener: handleQualified(.)
        listener: handleNoTypeArguments(()
        parseArgumentsOpt(abstract)
          parseArguments(abstract)
            parseArgumentsRest(()
              listener: beginArguments(()
              parseExpression(()
                parsePrecedenceExpression((, 1, true)
                  parseUnaryExpression((, true)
                    parsePrimary((, expression)
                      parseLiteralString(()
                        parseSingleLiteralString(()
                          listener: beginLiteralString("hello")
                          listener: endLiteralString(0, ))
              listener: endArguments(1, (, ))
        listener: endMetadata(@, null, @)
      parseMetadata())
        listener: beginMetadata(@)
        ensureIdentifier(@, metadataReference)
          inPlainSync()
          listener: handleIdentifier(abstract, metadataReference)
        parseQualifiedRestOpt(abstract, metadataContinuation)
          parseQualifiedRest(abstract, metadataContinuation)
            ensureIdentifier(., metadataContinuation)
              listener: handleIdentifier(bar, metadataContinuation)
            listener: handleQualified(.)
        listener: handleNoTypeArguments(.)
        ensureIdentifier(., metadataContinuationAfterTypeArguments)
          inPlainSync()
          listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
        parseArgumentsOpt(abstract)
          parseArguments(abstract)
            parseArgumentsRest(()
              listener: beginArguments(()
              parseExpression(()
                parsePrecedenceExpression((, 1, true)
                  parseUnaryExpression((, true)
                    parsePrimary((, expression)
                      parseLiteralString(()
                        parseSingleLiteralString(()
                          listener: beginLiteralString("hello")
                          listener: endLiteralString(0, ))
              listener: endArguments(1, (, ))
        listener: endMetadata(@, ., @)
      parseMetadata())
        listener: beginMetadata(@)
        ensureIdentifier(@, metadataReference)
          inPlainSync()
          listener: handleIdentifier(abstract, metadataReference)
        parseQualifiedRestOpt(abstract, metadataContinuation)
        listener: beginTypeArguments(<)
        listener: handleIdentifier(int, typeReference)
        listener: handleNoTypeArguments(>)
        listener: handleType(int, null)
        listener: endTypeArguments(1, <, >)
        parseArgumentsOpt(>)
          parseArguments(>)
            parseArgumentsRest(()
              listener: beginArguments(()
              parseExpression(()
                parsePrecedenceExpression((, 1, true)
                  parseUnaryExpression((, true)
                    parsePrimary((, expression)
                      parseLiteralString(()
                        parseSingleLiteralString(()
                          listener: beginLiteralString("hello")
                          listener: endLiteralString(0, ))
              listener: endArguments(1, (, ))
        listener: endMetadata(@, null, @)
      parseMetadata())
        listener: beginMetadata(@)
        ensureIdentifier(@, metadataReference)
          inPlainSync()
          listener: handleIdentifier(abstract, metadataReference)
        parseQualifiedRestOpt(abstract, metadataContinuation)
        listener: beginTypeArguments(<)
        listener: handleIdentifier(int, typeReference)
        listener: handleNoTypeArguments(>)
        listener: handleType(int, null)
        listener: endTypeArguments(1, <, >)
        ensureIdentifier(., metadataContinuationAfterTypeArguments)
          inPlainSync()
          listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
        parseArgumentsOpt(abstract)
          parseArguments(abstract)
            parseArgumentsRest(()
              listener: beginArguments(()
              parseExpression(()
                parsePrecedenceExpression((, 1, true)
                  parseUnaryExpression((, true)
                    parsePrimary((, expression)
                      parseLiteralString(()
                        parseSingleLiteralString(()
                          listener: beginLiteralString("hello")
                          listener: endLiteralString(0, ))
              listener: endArguments(1, (, ))
        listener: endMetadata(@, ., @)
      parseMetadata())
        listener: beginMetadata(@)
        ensureIdentifier(@, metadataReference)
          inPlainSync()
          listener: handleIdentifier(abstract, metadataReference)
        parseQualifiedRestOpt(abstract, metadataContinuation)
          parseQualifiedRest(abstract, metadataContinuation)
            ensureIdentifier(., metadataContinuation)
              listener: handleIdentifier(bar, metadataContinuation)
            listener: handleQualified(.)
        listener: beginTypeArguments(<)
        listener: handleIdentifier(int, typeReference)
        listener: handleNoTypeArguments(>)
        listener: handleType(int, null)
        listener: endTypeArguments(1, <, >)
        parseArgumentsOpt(>)
          parseArguments(>)
            parseArgumentsRest(()
              listener: beginArguments(()
              parseExpression(()
                parsePrecedenceExpression((, 1, true)
                  parseUnaryExpression((, true)
                    parsePrimary((, expression)
                      parseLiteralString(()
                        parseSingleLiteralString(()
                          listener: beginLiteralString("hello")
                          listener: endLiteralString(0, ))
              listener: endArguments(1, (, ))
        listener: endMetadata(@, null, @)
      parseMetadata())
        listener: beginMetadata(@)
        ensureIdentifier(@, metadataReference)
          inPlainSync()
          listener: handleIdentifier(abstract, metadataReference)
        parseQualifiedRestOpt(abstract, metadataContinuation)
          parseQualifiedRest(abstract, metadataContinuation)
            ensureIdentifier(., metadataContinuation)
              listener: handleIdentifier(bar, metadataContinuation)
            listener: handleQualified(.)
        listener: beginTypeArguments(<)
        listener: handleIdentifier(int, typeReference)
        listener: handleNoTypeArguments(>)
        listener: handleType(int, null)
        listener: endTypeArguments(1, <, >)
        ensureIdentifier(., metadataContinuationAfterTypeArguments)
          inPlainSync()
          listener: handleIdentifier(abstract, metadataContinuationAfterTypeArguments)
        parseArgumentsOpt(abstract)
          parseArguments(abstract)
            parseArgumentsRest(()
              listener: beginArguments(()
              parseExpression(()
                parsePrecedenceExpression((, 1, true)
                  parseUnaryExpression((, true)
                    parsePrimary((, expression)
                      parseLiteralString(()
                        parseSingleLiteralString(()
                          listener: beginLiteralString("hello")
                          listener: endLiteralString(0, ))
              listener: endArguments(1, (, ))
        listener: endMetadata(@, ., class)
      listener: endMetadataStar(9)
    parseTopLevelKeywordDeclaration(), class, Instance of 'DirectiveContext')
      parseClassDeclarationModifiers(), class)
      parseClassOrNamedMixinApplication(null, class)
        listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
        ensureIdentifier(class, classOrMixinDeclaration)
          listener: handleIdentifier(Y, classOrMixinDeclaration)
        listener: handleNoTypeVariables({)
        listener: beginClassDeclaration(class, null, Y)
        parseClass(Y, class, class, Y)
          parseClassHeaderOpt(Y, class, class)
            parseClassExtendsOpt(Y)
              listener: handleNoType(Y)
              listener: handleClassExtends(null, 1)
            parseWithClauseOpt(Y)
              listener: handleClassNoWithClause()
            parseClassOrMixinImplementsOpt(Y)
              listener: handleClassOrMixinImplements(null, 0)
            listener: handleClassHeader(class, class, null)
          parseClassOrMixinOrExtensionBody(Y, DeclarationKind.Class, Y)
            listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
            notEofOrValue(}, })
            listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 0, {, })
          listener: endClassDeclaration(class, })
  listener: endTopLevelDeclaration()
  reportAllErrorTokens(@)
  listener: endCompilationUnit(12, )
