parseUnit(int)
  skipErrorTokens(int)
  listener: beginCompilationUnit(int)
  syntheticPreviousToken(int)
  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
    parseMetadataStar()
      listener: beginMetadataStar(int)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl()
      listener: beginTopLevelMember(int)
      parseFields(, null, null, null, null, null, null, , Instance of 'SimpleType', abstract, DeclarationKind.TopLevel, null, false)
        listener: beginFields()
        listener: handleIdentifier(int, typeReference)
        listener: handleNoTypeArguments(abstract)
        listener: handleType(int, null)
        ensureIdentifierPotentiallyRecovered(int, topLevelVariableDeclaration, false)
          listener: handleIdentifier(abstract, topLevelVariableDeclaration)
        parseFieldInitializerOpt(abstract, abstract, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: beginFieldInitializer(=)
          parseExpression(=)
            parsePrecedenceExpression(=, 1, true)
              parseUnaryExpression(=, true)
                parsePrimary(=, expression)
                  parseLiteralInt(=)
                    listener: handleLiteralInt(42)
          listener: endFieldInitializer(=, ;)
        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
  listener: endTopLevelDeclaration(int)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(int)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(int)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', as, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(int, typeReference)
        listener: handleNoTypeArguments(as)
        listener: handleType(int, null)
        ensureIdentifierPotentiallyRecovered(int, topLevelVariableDeclaration, false)
          listener: handleIdentifier(as, topLevelVariableDeclaration)
        parseFieldInitializerOpt(as, as, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: beginFieldInitializer(=)
          parseExpression(=)
            parsePrecedenceExpression(=, 1, true)
              parseUnaryExpression(=, true)
                parsePrimary(=, expression)
                  parseLiteralInt(=)
                    listener: handleLiteralInt(42)
          listener: endFieldInitializer(=, ;)
        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
  listener: endTopLevelDeclaration(int)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(int)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(int)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', covariant, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(int, typeReference)
        listener: handleNoTypeArguments(covariant)
        listener: handleType(int, null)
        ensureIdentifierPotentiallyRecovered(int, topLevelVariableDeclaration, false)
          listener: handleIdentifier(covariant, topLevelVariableDeclaration)
        parseFieldInitializerOpt(covariant, covariant, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: beginFieldInitializer(=)
          parseExpression(=)
            parsePrecedenceExpression(=, 1, true)
              parseUnaryExpression(=, true)
                parsePrimary(=, expression)
                  parseLiteralInt(=)
                    listener: handleLiteralInt(42)
          listener: endFieldInitializer(=, ;)
        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
  listener: endTopLevelDeclaration(int)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(int)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(int)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', deferred, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(int, typeReference)
        listener: handleNoTypeArguments(deferred)
        listener: handleType(int, null)
        ensureIdentifierPotentiallyRecovered(int, topLevelVariableDeclaration, false)
          listener: handleIdentifier(deferred, topLevelVariableDeclaration)
        parseFieldInitializerOpt(deferred, deferred, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: beginFieldInitializer(=)
          parseExpression(=)
            parsePrecedenceExpression(=, 1, true)
              parseUnaryExpression(=, true)
                parsePrimary(=, expression)
                  parseLiteralInt(=)
                    listener: handleLiteralInt(42)
          listener: endFieldInitializer(=, ;)
        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
  listener: endTopLevelDeclaration(int)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(int)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(int)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', dynamic, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(int, typeReference)
        listener: handleNoTypeArguments(dynamic)
        listener: handleType(int, null)
        ensureIdentifierPotentiallyRecovered(int, topLevelVariableDeclaration, false)
          listener: handleIdentifier(dynamic, topLevelVariableDeclaration)
        parseFieldInitializerOpt(dynamic, dynamic, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: beginFieldInitializer(=)
          parseExpression(=)
            parsePrecedenceExpression(=, 1, true)
              parseUnaryExpression(=, true)
                parsePrimary(=, expression)
                  parseLiteralInt(=)
                    listener: handleLiteralInt(42)
          listener: endFieldInitializer(=, ;)
        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
  listener: endTopLevelDeclaration(int)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(int)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(int)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', export, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(int, typeReference)
        listener: handleNoTypeArguments(export)
        listener: handleType(int, null)
        ensureIdentifierPotentiallyRecovered(int, topLevelVariableDeclaration, false)
          listener: handleIdentifier(export, topLevelVariableDeclaration)
        parseFieldInitializerOpt(export, export, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: beginFieldInitializer(=)
          parseExpression(=)
            parsePrecedenceExpression(=, 1, true)
              parseUnaryExpression(=, true)
                parsePrimary(=, expression)
                  parseLiteralInt(=)
                    listener: handleLiteralInt(42)
          listener: endFieldInitializer(=, ;)
        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
  listener: endTopLevelDeclaration(int)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(int)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(int)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', external, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(int, typeReference)
        listener: handleNoTypeArguments(external)
        listener: handleType(int, null)
        ensureIdentifierPotentiallyRecovered(int, topLevelVariableDeclaration, false)
          listener: handleIdentifier(external, topLevelVariableDeclaration)
        parseFieldInitializerOpt(external, external, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: beginFieldInitializer(=)
          parseExpression(=)
            parsePrecedenceExpression(=, 1, true)
              parseUnaryExpression(=, true)
                parsePrimary(=, expression)
                  parseLiteralInt(=)
                    listener: handleLiteralInt(42)
          listener: endFieldInitializer(=, ;)
        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
  listener: endTopLevelDeclaration(int)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(int)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(int)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', factory, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(int, typeReference)
        listener: handleNoTypeArguments(factory)
        listener: handleType(int, null)
        ensureIdentifierPotentiallyRecovered(int, topLevelVariableDeclaration, false)
          listener: handleIdentifier(factory, topLevelVariableDeclaration)
        parseFieldInitializerOpt(factory, factory, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: beginFieldInitializer(=)
          parseExpression(=)
            parsePrecedenceExpression(=, 1, true)
              parseUnaryExpression(=, true)
                parsePrimary(=, expression)
                  parseLiteralInt(=)
                    listener: handleLiteralInt(42)
          listener: endFieldInitializer(=, ;)
        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
  listener: endTopLevelDeclaration(int)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(int)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(int)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', Function, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(int, typeReference)
        listener: handleNoTypeArguments(Function)
        listener: handleType(int, null)
        ensureIdentifierPotentiallyRecovered(int, topLevelVariableDeclaration, false)
          listener: handleIdentifier(Function, topLevelVariableDeclaration)
        parseFieldInitializerOpt(Function, Function, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: beginFieldInitializer(=)
          parseExpression(=)
            parsePrecedenceExpression(=, 1, true)
              parseUnaryExpression(=, true)
                parsePrimary(=, expression)
                  parseLiteralInt(=)
                    listener: handleLiteralInt(42)
          listener: endFieldInitializer(=, ;)
        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
  listener: endTopLevelDeclaration(int)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(int)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(int)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', get, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(int, typeReference)
        listener: handleNoTypeArguments(get)
        listener: handleType(int, null)
        ensureIdentifierPotentiallyRecovered(int, topLevelVariableDeclaration, false)
          listener: handleIdentifier(get, topLevelVariableDeclaration)
        parseFieldInitializerOpt(get, get, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: beginFieldInitializer(=)
          parseExpression(=)
            parsePrecedenceExpression(=, 1, true)
              parseUnaryExpression(=, true)
                parsePrimary(=, expression)
                  parseLiteralInt(=)
                    listener: handleLiteralInt(42)
          listener: endFieldInitializer(=, ;)
        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
  listener: endTopLevelDeclaration(int)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(int)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(int)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', implements, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(int, typeReference)
        listener: handleNoTypeArguments(implements)
        listener: handleType(int, null)
        ensureIdentifierPotentiallyRecovered(int, topLevelVariableDeclaration, false)
          listener: handleIdentifier(implements, topLevelVariableDeclaration)
        parseFieldInitializerOpt(implements, implements, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: beginFieldInitializer(=)
          parseExpression(=)
            parsePrecedenceExpression(=, 1, true)
              parseUnaryExpression(=, true)
                parsePrimary(=, expression)
                  parseLiteralInt(=)
                    listener: handleLiteralInt(42)
          listener: endFieldInitializer(=, ;)
        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
  listener: endTopLevelDeclaration(int)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(int)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(int)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', import, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(int, typeReference)
        listener: handleNoTypeArguments(import)
        listener: handleType(int, null)
        ensureIdentifierPotentiallyRecovered(int, topLevelVariableDeclaration, false)
          listener: handleIdentifier(import, topLevelVariableDeclaration)
        parseFieldInitializerOpt(import, import, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: beginFieldInitializer(=)
          parseExpression(=)
            parsePrecedenceExpression(=, 1, true)
              parseUnaryExpression(=, true)
                parsePrimary(=, expression)
                  parseLiteralInt(=)
                    listener: handleLiteralInt(42)
          listener: endFieldInitializer(=, ;)
        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
  listener: endTopLevelDeclaration(int)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(int)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(int)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', interface, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(int, typeReference)
        listener: handleNoTypeArguments(interface)
        listener: handleType(int, null)
        ensureIdentifierPotentiallyRecovered(int, topLevelVariableDeclaration, false)
          listener: handleIdentifier(interface, topLevelVariableDeclaration)
        parseFieldInitializerOpt(interface, interface, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: beginFieldInitializer(=)
          parseExpression(=)
            parsePrecedenceExpression(=, 1, true)
              parseUnaryExpression(=, true)
                parsePrimary(=, expression)
                  parseLiteralInt(=)
                    listener: handleLiteralInt(42)
          listener: endFieldInitializer(=, ;)
        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
  listener: endTopLevelDeclaration(int)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(int)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(int)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', library, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(int, typeReference)
        listener: handleNoTypeArguments(library)
        listener: handleType(int, null)
        ensureIdentifierPotentiallyRecovered(int, topLevelVariableDeclaration, false)
          listener: handleIdentifier(library, topLevelVariableDeclaration)
        parseFieldInitializerOpt(library, library, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: beginFieldInitializer(=)
          parseExpression(=)
            parsePrecedenceExpression(=, 1, true)
              parseUnaryExpression(=, true)
                parsePrimary(=, expression)
                  parseLiteralInt(=)
                    listener: handleLiteralInt(42)
          listener: endFieldInitializer(=, ;)
        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
  listener: endTopLevelDeclaration(int)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(int)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(int)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', operator, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(int, typeReference)
        listener: handleNoTypeArguments(operator)
        listener: handleType(int, null)
        ensureIdentifierPotentiallyRecovered(int, topLevelVariableDeclaration, false)
          listener: handleIdentifier(operator, topLevelVariableDeclaration)
        parseFieldInitializerOpt(operator, operator, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: beginFieldInitializer(=)
          parseExpression(=)
            parsePrecedenceExpression(=, 1, true)
              parseUnaryExpression(=, true)
                parsePrimary(=, expression)
                  parseLiteralInt(=)
                    listener: handleLiteralInt(42)
          listener: endFieldInitializer(=, ;)
        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
  listener: endTopLevelDeclaration(int)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(int)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(int)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', mixin, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(int, typeReference)
        listener: handleNoTypeArguments(mixin)
        listener: handleType(int, null)
        ensureIdentifierPotentiallyRecovered(int, topLevelVariableDeclaration, false)
          listener: handleIdentifier(mixin, topLevelVariableDeclaration)
        parseFieldInitializerOpt(mixin, mixin, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: beginFieldInitializer(=)
          parseExpression(=)
            parsePrecedenceExpression(=, 1, true)
              parseUnaryExpression(=, true)
                parsePrimary(=, expression)
                  parseLiteralInt(=)
                    listener: handleLiteralInt(42)
          listener: endFieldInitializer(=, ;)
        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
  listener: endTopLevelDeclaration(int)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(int)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(int)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', part, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(int, typeReference)
        listener: handleNoTypeArguments(part)
        listener: handleType(int, null)
        ensureIdentifierPotentiallyRecovered(int, topLevelVariableDeclaration, false)
          listener: handleIdentifier(part, topLevelVariableDeclaration)
        parseFieldInitializerOpt(part, part, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: beginFieldInitializer(=)
          parseExpression(=)
            parsePrecedenceExpression(=, 1, true)
              parseUnaryExpression(=, true)
                parsePrimary(=, expression)
                  parseLiteralInt(=)
                    listener: handleLiteralInt(42)
          listener: endFieldInitializer(=, ;)
        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
  listener: endTopLevelDeclaration(int)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(int)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(int)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', set, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(int, typeReference)
        listener: handleNoTypeArguments(set)
        listener: handleType(int, null)
        ensureIdentifierPotentiallyRecovered(int, topLevelVariableDeclaration, false)
          listener: handleIdentifier(set, topLevelVariableDeclaration)
        parseFieldInitializerOpt(set, set, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: beginFieldInitializer(=)
          parseExpression(=)
            parsePrecedenceExpression(=, 1, true)
              parseUnaryExpression(=, true)
                parsePrimary(=, expression)
                  parseLiteralInt(=)
                    listener: handleLiteralInt(42)
          listener: endFieldInitializer(=, ;)
        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
  listener: endTopLevelDeclaration(int)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(int)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(int)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', static, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(int, typeReference)
        listener: handleNoTypeArguments(static)
        listener: handleType(int, null)
        ensureIdentifierPotentiallyRecovered(int, topLevelVariableDeclaration, false)
          listener: handleIdentifier(static, topLevelVariableDeclaration)
        parseFieldInitializerOpt(static, static, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: beginFieldInitializer(=)
          parseExpression(=)
            parsePrecedenceExpression(=, 1, true)
              parseUnaryExpression(=, true)
                parsePrimary(=, expression)
                  parseLiteralInt(=)
                    listener: handleLiteralInt(42)
          listener: endFieldInitializer(=, ;)
        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
  listener: endTopLevelDeclaration(int)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(int)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(int)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', typedef, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(int, typeReference)
        listener: handleNoTypeArguments(typedef)
        listener: handleType(int, null)
        ensureIdentifierPotentiallyRecovered(int, topLevelVariableDeclaration, false)
          listener: handleIdentifier(typedef, topLevelVariableDeclaration)
        parseFieldInitializerOpt(typedef, typedef, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: beginFieldInitializer(=)
          parseExpression(=)
            parsePrecedenceExpression(=, 1, true)
              parseUnaryExpression(=, true)
                parsePrimary(=, expression)
                  parseLiteralInt(=)
                    listener: handleLiteralInt(42)
          listener: endFieldInitializer(=, ;)
        listener: endTopLevelFields(null, null, null, null, null, 1, int, ;)
  listener: endTopLevelDeclaration()
  reportAllErrorTokens(int)
  listener: endCompilationUnit(20, )
