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(<)
          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)
          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)
          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)
          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, 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(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.requiredPositional, 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.requiredPositional, 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, )
