Problems reported:

parser/error_recovery/issue_48371_prime2:1:22: 'enum' can't be used as an identifier because it's a keyword.
import "lib.dart" as enum;
                     ^^^^

beginCompilationUnit(import)
  beginMetadataStar(import)
  endMetadataStar(0)
  beginUncategorizedTopLevelDeclaration(import)
    beginImport(import)
      beginLiteralString("lib.dart")
      endLiteralString(0, as)
      beginConditionalUris(as)
      endConditionalUris(0)
      handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'enum' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: enum}], enum, enum)
      handleIdentifier(enum, importPrefixDeclaration)
      handleImportPrefix(null, as)
      beginCombinators(;)
      endCombinators(0)
    endImport(import, null, ;)
  endTopLevelDeclaration(main)
  beginMetadataStar(main)
  endMetadataStar(0)
  beginTopLevelMember(main)
    beginTopLevelMethod(;, null, null)
      handleNoType(;)
      handleIdentifier(main, topLevelFunctionDeclaration)
      handleNoTypeVariables(()
      beginFormalParameters((, MemberKind.TopLevelMethod)
      endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
      handleAsyncModifier(null, null)
      beginBlockFunctionBody({)
      endBlockFunctionBody(0, {, })
    endTopLevelMethod(main, null, })
  endTopLevelDeclaration()
endCompilationUnit(2, )
