parseUnit(enum)
  skipErrorTokens(enum)
  listener: beginCompilationUnit(enum)
  syntheticPreviousToken(enum)
  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
    parseMetadataStar()
      listener: beginMetadataStar(enum)
      listener: endMetadataStar(0)
    parseTopLevelKeywordDeclaration(, enum, null, null, Instance of 'DirectiveContext')
      parseTopLevelKeywordModifiers(, enum)
      parseEnum(enum)
        listener: beginUncategorizedTopLevelDeclaration(enum)
        ensureIdentifier(enum, enumDeclaration)
          listener: handleIdentifier(E, enumDeclaration)
        listener: beginEnum(enum)
        parseEnumHeaderOpt(E, enum)
          listener: beginTypeVariables(<)
          parseMetadataStar(<)
            listener: beginMetadataStar(X)
            listener: endMetadataStar(0)
          ensureIdentifier(<, typeVariableDeclaration)
            listener: handleIdentifier(X, typeVariableDeclaration)
          listener: beginTypeVariable(X)
          parseMetadataStar(,)
            listener: beginMetadataStar(Y)
            listener: endMetadataStar(0)
          ensureIdentifier(,, typeVariableDeclaration)
            listener: handleIdentifier(Y, typeVariableDeclaration)
          listener: beginTypeVariable(Y)
          listener: handleTypeVariablesDefined(Y, 2)
          listener: handleNoType(Y)
          listener: endTypeVariable(>, 1, null, null)
          listener: handleNoType(X)
          listener: endTypeVariable(,, 0, null, null)
          listener: endTypeVariables(<, >)
          parseEnumWithClauseOpt(>)
            listener: handleEnumNoWithClause()
          parseClassOrMixinOrEnumImplementsOpt(>)
            listener: handleImplements(null, 0)
        listener: handleEnumHeader(enum, {)
        parseEnumElement({)
          parseMetadataStar({)
            listener: beginMetadataStar(one)
            listener: endMetadataStar(0)
          ensureIdentifier({, enumValueDeclaration)
            listener: handleIdentifier(one, enumValueDeclaration)
          parseConstructorReference(one, ConstructorReferenceContext.Const, null, true)
            listener: handleNoTypeNameInConstructorReference(<)
            listener: beginConstructorReference(one)
            listener: beginTypeArguments(<)
            listener: handleIdentifier(int, typeReference)
            listener: handleNoTypeArguments(,)
            listener: handleType(int, null)
            listener: handleIdentifier(String, typeReference)
            listener: handleNoTypeArguments(>)
            listener: handleType(String, null)
            listener: endTypeArguments(2, <, >)
            listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
            listener: endConstructorReference(one, null, (, ConstructorReferenceContext.Const)
          parseConstructorInvocationArguments(>)
            parseArgumentsRest(()
              listener: beginArguments(()
              listener: endArguments(0, (, ))
          listener: handleEnumElement({)
        parseEnumElement(,)
          parseMetadataStar(,)
            listener: beginMetadataStar(two)
            listener: endMetadataStar(0)
          ensureIdentifier(,, enumValueDeclaration)
            listener: handleIdentifier(two, enumValueDeclaration)
          parseConstructorReference(two, ConstructorReferenceContext.Const, null, true)
            listener: handleNoTypeNameInConstructorReference(<)
            listener: beginConstructorReference(two)
            listener: beginTypeArguments(<)
            listener: handleIdentifier(double, typeReference)
            listener: handleNoTypeArguments(,)
            listener: handleType(double, null)
            listener: handleIdentifier(num, typeReference)
            listener: handleNoTypeArguments(>)
            listener: handleType(num, null)
            listener: endTypeArguments(2, <, >)
            listener: handleNoConstructorReferenceContinuationAfterTypeArguments(()
            listener: endConstructorReference(two, null, (, ConstructorReferenceContext.Const)
          parseConstructorInvocationArguments(>)
            parseArgumentsRest(()
              listener: beginArguments(()
              listener: endArguments(0, (, ))
          listener: handleEnumElement(,)
        parseEnumElement(,)
          parseMetadataStar(,)
            listener: beginMetadataStar(three)
            listener: endMetadataStar(0)
          ensureIdentifier(,, enumValueDeclaration)
            listener: handleIdentifier(three, enumValueDeclaration)
          parseConstructorReference(three, ConstructorReferenceContext.Const, null, true)
            listener: handleNoTypeNameInConstructorReference(<)
            listener: beginConstructorReference(three)
            listener: beginTypeArguments(<)
            listener: handleIdentifier(int, typeReference)
            listener: handleNoTypeArguments(,)
            listener: handleType(int, null)
            listener: handleIdentifier(int, typeReference)
            listener: handleNoTypeArguments(>)
            listener: handleType(int, null)
            listener: endTypeArguments(2, <, >)
            ensureIdentifier(., constructorReferenceContinuationAfterTypeArguments)
              listener: handleIdentifier(named, constructorReferenceContinuationAfterTypeArguments)
            listener: endConstructorReference(three, ., (, ConstructorReferenceContext.Const)
          parseConstructorInvocationArguments(named)
            parseArgumentsRest(()
              listener: beginArguments(()
              parseExpression(()
                parsePrecedenceExpression((, 1, true)
                  parseUnaryExpression((, true)
                    parsePrimary((, expression)
                      parseLiteralInt(()
                        listener: handleLiteralInt(42)
              listener: endArguments(1, (, ))
          listener: handleEnumElement(,)
        listener: handleEnumElements(;, 3)
        notEofOrValue(}, const)
        parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Enum, E)
          parseMetadataStar(;)
            listener: beginMetadataStar(const)
            listener: endMetadataStar(0)
          listener: beginMember()
          parseMethod(;, null, null, null, null, null, const, const, Instance of 'NoType', null, E, DeclarationKind.Enum, E, false)
            listener: beginMethod(DeclarationKind.Enum, 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, const, const, Instance of 'NoType', null, E, DeclarationKind.Enum, E, false)
            listener: beginMethod(DeclarationKind.Enum, 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(named, methodDeclarationContinuation)
                listener: handleQualified(.)
            parseMethodTypeVar(named)
              listener: handleNoTypeVariables(()
            parseGetterOrFormalParameters(named, E, false, MemberKind.NonStaticMethod)
              parseFormalParameters(named, MemberKind.NonStaticMethod)
                parseFormalParametersRest((, MemberKind.NonStaticMethod)
                  listener: beginFormalParameters((, MemberKind.NonStaticMethod)
                  parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
                    parseMetadataStar(()
                      listener: beginMetadataStar(int)
                      listener: endMetadataStar(0)
                    listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
                    listener: handleIdentifier(int, typeReference)
                    listener: handleNoTypeArguments(value)
                    listener: handleType(int, null)
                    ensureIdentifier(int, formalParameterDeclaration)
                      listener: handleIdentifier(value, formalParameterDeclaration)
                    listener: handleFormalParameterWithoutValue())
                    listener: endFormalParameter(null, null, null, value, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
                  listener: endFormalParameters(1, (, ), 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, )
