parseUnit(enum)
  skipErrorTokens(enum)
  listener: beginCompilationUnit(enum)
  syntheticPreviousToken(enum)
  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
    parseMetadataStar()
      listener: beginMetadataStar(enum)
      listener: endMetadataStar(0)
    parseTopLevelKeywordDeclaration(, enum, null, Instance of 'DirectiveContext')
      parseEnum(enum)
        listener: beginUncategorizedTopLevelDeclaration(enum)
        ensureIdentifier(enum, enumDeclaration)
          listener: handleIdentifier(E, enumDeclaration)
        listener: beginEnum(enum)
        parseEnumHeaderOpt(E, enum)
          listener: beginTypeVariables(<)
          listener: beginMetadataStar(F)
          listener: endMetadataStar(0)
          listener: handleIdentifier(F, typeVariableDeclaration)
          listener: beginTypeVariable(F)
          listener: handleTypeVariablesDefined(F, 1)
          listener: handleNoType(F)
          listener: endTypeVariable(>, 0, null, null)
          listener: endTypeVariables(<, >)
          parseEnumWithClauseOpt(>)
            listener: handleEnumNoWithClause()
          parseClassOrMixinOrEnumImplementsOpt(>)
            listener: handleImplements(null, 0)
        listener: handleEnumHeader(enum, {)
        parseEnumElement({)
          parseMetadataStar({)
            listener: beginMetadataStar(v)
            listener: endMetadataStar(0)
          ensureIdentifier({, enumValueDeclaration)
            listener: handleIdentifier(v, enumValueDeclaration)
          listener: handleNoTypeNameInConstructorReference(<)
          listener: beginConstructorReference(v)
          listener: beginTypeArguments(<)
          listener: handleIdentifier(int, typeReference)
          listener: handleNoTypeArguments(>)
          listener: handleType(int, null)
          listener: endTypeArguments(1, <, >)
          ensureIdentifier(., constructorReferenceContinuationAfterTypeArguments)
            listener: handleIdentifier(foo, constructorReferenceContinuationAfterTypeArguments)
          listener: endConstructorReference(v, ., (, ConstructorReferenceContext.Const)
          parseConstructorInvocationArguments(foo)
            parseArgumentsRest(()
              listener: beginArguments(()
              listener: endArguments(0, (, ))
          listener: handleEnumElement({)
        listener: handleEnumElements(;, 1)
        notEofOrValue(}, const)
        parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Enum, E)
          parseMetadataStar(;)
            listener: beginMetadataStar(const)
            listener: endMetadataStar(0)
          listener: beginMember()
          parseMethod(;, null, null, null, null, null, null, const, const, Instance of 'NoType', null, E, DeclarationKind.Enum, E, false)
            listener: beginMethod(DeclarationKind.Enum, null, null, null, null, const, null, E)
            listener: handleNoType(const)
            ensureIdentifierPotentiallyRecovered(const, methodDeclaration, false)
              listener: handleIdentifier(E, methodDeclaration)
            parseQualifiedRestOpt(E, methodDeclarationContinuation)
            parseMethodTypeVar(E)
              listener: handleNoTypeVariables(()
            parseGetterOrFormalParameters(E, E, false, MemberKind.NonStaticMethod)
              parseFormalParameters(E, MemberKind.NonStaticMethod)
                parseFormalParametersRest((, MemberKind.NonStaticMethod)
                  listener: beginFormalParameters((, MemberKind.NonStaticMethod)
                  listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
            parseInitializersOpt())
              listener: handleNoInitializers()
            parseAsyncModifierOpt())
              listener: handleAsyncModifier(null, null)
              inPlainSync()
            inPlainSync()
            parseFunctionBody(), false, true)
              listener: handleEmptyFunctionBody(;)
            listener: endEnumConstructor(null, const, (, null, ;)
          listener: endMember()
        notEofOrValue(}, const)
        parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Enum, E)
          parseMetadataStar(;)
            listener: beginMetadataStar(const)
            listener: endMetadataStar(0)
          listener: beginMember()
          parseMethod(;, null, null, null, null, null, null, const, const, Instance of 'NoType', null, E, DeclarationKind.Enum, E, false)
            listener: beginMethod(DeclarationKind.Enum, null, null, null, null, const, null, E)
            listener: handleNoType(const)
            ensureIdentifierPotentiallyRecovered(const, methodDeclaration, false)
              listener: handleIdentifier(E, methodDeclaration)
            parseQualifiedRestOpt(E, methodDeclarationContinuation)
              parseQualifiedRest(E, methodDeclarationContinuation)
                ensureIdentifier(., methodDeclarationContinuation)
                  listener: handleIdentifier(foo, methodDeclarationContinuation)
                listener: handleQualified(.)
            parseMethodTypeVar(foo)
              listener: handleNoTypeVariables(()
            parseGetterOrFormalParameters(foo, E, false, MemberKind.NonStaticMethod)
              parseFormalParameters(foo, MemberKind.NonStaticMethod)
                parseFormalParametersRest((, MemberKind.NonStaticMethod)
                  listener: beginFormalParameters((, MemberKind.NonStaticMethod)
                  listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
            parseInitializersOpt())
              listener: handleNoInitializers()
            parseAsyncModifierOpt())
              listener: handleAsyncModifier(null, null)
              inPlainSync()
            inPlainSync()
            parseFunctionBody(), false, true)
              listener: handleEmptyFunctionBody(;)
            listener: endEnumConstructor(null, const, (, null, ;)
          listener: endMember()
        notEofOrValue(}, })
        listener: endEnum(enum, {, 2)
  listener: endTopLevelDeclaration()
  reportAllErrorTokens(enum)
  listener: endCompilationUnit(1, )
