parseUnit(var)
  skipErrorTokens(var)
  listener: beginCompilationUnit(var)
  syntheticPreviousToken(var)
  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
    parseMetadataStar()
      listener: beginMetadataStar(var)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl()
      listener: beginTopLevelMember(var)
      parseFields(, null, null, null, null, null, var, var, Instance of 'NoType', simpleIdentifier, DeclarationKind.TopLevel, null, false)
        listener: beginFields()
        listener: handleNoType(var)
        ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
          listener: handleIdentifier(simpleIdentifier, topLevelVariableDeclaration)
        parseFieldInitializerOpt(simpleIdentifier, simpleIdentifier, null, null, null, var, DeclarationKind.TopLevel, null)
          listener: beginFieldInitializer(=)
          parseExpression(=)
            parsePrecedenceExpression(=, 1, true)
              parseUnaryExpression(=, true)
                parsePrimary(=, expression)
                  parseSendOrFunctionLiteral(=, expression)
                    parseSend(=, expression)
                      isNextIdentifier(=)
                      ensureIdentifier(=, expression)
                        listener: handleIdentifier(f, expression)
                      listener: handleNoTypeArguments(<)
                      parseArgumentsOpt(f)
                        listener: handleNoArguments(<)
                      listener: handleSend(f, <)
              listener: beginTypeArguments(<)
              listener: handleIdentifier(a, typeReference)
              listener: handleNoTypeArguments(,)
              listener: handleType(a, null)
              listener: handleIdentifier(b, typeReference)
              listener: handleNoTypeArguments(>)
              listener: handleType(b, null)
              listener: endTypeArguments(2, <, >)
              listener: handleTypeArgumentApplication(<)
          listener: endFieldInitializer(=, ;)
        listener: endTopLevelFields(null, null, null, null, var, 1, var, ;)
  listener: endTopLevelDeclaration(var)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(var)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(var)
      parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', method, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleNoType(var)
        ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
          listener: handleIdentifier(method, topLevelVariableDeclaration)
        parseFieldInitializerOpt(method, method, null, null, null, var, DeclarationKind.TopLevel, null)
          listener: beginFieldInitializer(=)
          parseExpression(=)
            parsePrecedenceExpression(=, 1, true)
              parseUnaryExpression(=, true)
                parsePrimary(=, expression)
                  parseSendOrFunctionLiteral(=, expression)
                    looksLikeFunctionBody(.)
                    parseSend(=, expression)
                      isNextIdentifier(=)
                      ensureIdentifier(=, expression)
                        listener: handleIdentifier(f, expression)
                      listener: handleNoTypeArguments(()
                      parseArgumentsOpt(f)
                        parseArguments(f)
                          parseArgumentsRest(()
                            listener: beginArguments(()
                            listener: endArguments(0, (, ))
                      listener: handleSend(f, .)
              parsePrimary(., expressionContinuation)
                parseSendOrFunctionLiteral(., expressionContinuation)
                  parseSend(., expressionContinuation)
                    isNextIdentifier(.)
                    ensureIdentifier(., expressionContinuation)
                      listener: handleIdentifier(m, expressionContinuation)
                    listener: handleNoTypeArguments(<)
                    parseArgumentsOpt(m)
                      listener: handleNoArguments(<)
                    listener: handleSend(m, <)
              listener: handleEndingBinaryExpression(.)
              listener: beginTypeArguments(<)
              listener: handleIdentifier(a, typeReference)
              listener: handleNoTypeArguments(,)
              listener: handleType(a, null)
              listener: handleIdentifier(b, typeReference)
              listener: handleNoTypeArguments(>)
              listener: handleType(b, null)
              listener: endTypeArguments(2, <, >)
              listener: handleTypeArgumentApplication(<)
          listener: endFieldInitializer(=, ;)
        listener: endTopLevelFields(null, null, null, null, var, 1, var, ;)
  listener: endTopLevelDeclaration(var)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(var)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(var)
      parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', prefixedIdentifier, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleNoType(var)
        ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
          listener: handleIdentifier(prefixedIdentifier, topLevelVariableDeclaration)
        parseFieldInitializerOpt(prefixedIdentifier, prefixedIdentifier, null, null, null, var, DeclarationKind.TopLevel, null)
          listener: beginFieldInitializer(=)
          parseExpression(=)
            parsePrecedenceExpression(=, 1, true)
              parseUnaryExpression(=, true)
                parsePrimary(=, expression)
                  parseSendOrFunctionLiteral(=, expression)
                    parseSend(=, expression)
                      isNextIdentifier(=)
                      ensureIdentifier(=, expression)
                        listener: handleIdentifier(prefix, expression)
                      listener: handleNoTypeArguments(.)
                      parseArgumentsOpt(prefix)
                        listener: handleNoArguments(.)
                      listener: handleSend(prefix, .)
              parsePrimary(., expressionContinuation)
                parseSendOrFunctionLiteral(., expressionContinuation)
                  parseSend(., expressionContinuation)
                    isNextIdentifier(.)
                    ensureIdentifier(., expressionContinuation)
                      listener: handleIdentifier(f, expressionContinuation)
                    listener: handleNoTypeArguments(<)
                    parseArgumentsOpt(f)
                      listener: handleNoArguments(<)
                    listener: handleSend(f, <)
              listener: handleEndingBinaryExpression(.)
              listener: beginTypeArguments(<)
              listener: handleIdentifier(a, typeReference)
              listener: handleNoTypeArguments(,)
              listener: handleType(a, null)
              listener: handleIdentifier(b, typeReference)
              listener: handleNoTypeArguments(>)
              listener: handleType(b, null)
              listener: endTypeArguments(2, <, >)
              listener: handleTypeArgumentApplication(<)
          listener: endFieldInitializer(=, ;)
        listener: endTopLevelFields(null, null, null, null, var, 1, var, ;)
  listener: endTopLevelDeclaration(var)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(var)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(var)
      parseFields(;, null, null, null, null, null, var, var, Instance of 'NoType', three_identifiers, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleNoType(var)
        ensureIdentifierPotentiallyRecovered(var, topLevelVariableDeclaration, false)
          listener: handleIdentifier(three_identifiers, topLevelVariableDeclaration)
        parseFieldInitializerOpt(three_identifiers, three_identifiers, null, null, null, var, DeclarationKind.TopLevel, null)
          listener: beginFieldInitializer(=)
          parseExpression(=)
            parsePrecedenceExpression(=, 1, true)
              parseUnaryExpression(=, true)
                parsePrimary(=, expression)
                  parseSendOrFunctionLiteral(=, expression)
                    parseSend(=, expression)
                      isNextIdentifier(=)
                      ensureIdentifier(=, expression)
                        listener: handleIdentifier(prefix, expression)
                      listener: handleNoTypeArguments(.)
                      parseArgumentsOpt(prefix)
                        listener: handleNoArguments(.)
                      listener: handleSend(prefix, .)
              parsePrimary(., expressionContinuation)
                parseSendOrFunctionLiteral(., expressionContinuation)
                  parseSend(., expressionContinuation)
                    isNextIdentifier(.)
                    ensureIdentifier(., expressionContinuation)
                      listener: handleIdentifier(ClassName, expressionContinuation)
                    listener: handleNoTypeArguments(.)
                    parseArgumentsOpt(ClassName)
                      listener: handleNoArguments(.)
                    listener: handleSend(ClassName, .)
              listener: handleEndingBinaryExpression(.)
              parsePrimary(., expressionContinuation)
                parseSendOrFunctionLiteral(., expressionContinuation)
                  parseSend(., expressionContinuation)
                    isNextIdentifier(.)
                    ensureIdentifier(., expressionContinuation)
                      listener: handleIdentifier(m, expressionContinuation)
                    listener: handleNoTypeArguments(<)
                    parseArgumentsOpt(m)
                      listener: handleNoArguments(<)
                    listener: handleSend(m, <)
              listener: handleEndingBinaryExpression(.)
              listener: beginTypeArguments(<)
              listener: handleIdentifier(a, typeReference)
              listener: handleNoTypeArguments(,)
              listener: handleType(a, null)
              listener: handleIdentifier(b, typeReference)
              listener: handleNoTypeArguments(>)
              listener: handleType(b, null)
              listener: endTypeArguments(2, <, >)
              listener: handleTypeArgumentApplication(<)
          listener: endFieldInitializer(=, ;)
        listener: endTopLevelFields(null, null, null, null, var, 1, var, ;)
  listener: endTopLevelDeclaration()
  reportAllErrorTokens(var)
  listener: endCompilationUnit(4, )
