Problems reported:

parser/error_recovery/keyword_named_top_level_fields:3:5: 'assert' can't be used as an identifier because it's a keyword.
int assert = 42;
    ^^^^^^

parser/error_recovery/keyword_named_top_level_fields:6:5: 'break' can't be used as an identifier because it's a keyword.
int break = 42;
    ^^^^^

parser/error_recovery/keyword_named_top_level_fields:7:5: 'case' can't be used as an identifier because it's a keyword.
int case = 42;
    ^^^^

parser/error_recovery/keyword_named_top_level_fields:8:5: 'catch' can't be used as an identifier because it's a keyword.
int catch = 42;
    ^^^^^

parser/error_recovery/keyword_named_top_level_fields:9:5: 'class' can't be used as an identifier because it's a keyword.
int class = 42;
    ^^^^^

parser/error_recovery/keyword_named_top_level_fields:10:5: 'const' can't be used as an identifier because it's a keyword.
int const = 42;
    ^^^^^

parser/error_recovery/keyword_named_top_level_fields:11:5: 'continue' can't be used as an identifier because it's a keyword.
int continue = 42;
    ^^^^^^^^

parser/error_recovery/keyword_named_top_level_fields:13:5: 'default' can't be used as an identifier because it's a keyword.
int default = 42;
    ^^^^^^^

parser/error_recovery/keyword_named_top_level_fields:15:5: 'do' can't be used as an identifier because it's a keyword.
int do = 42;
    ^^

parser/error_recovery/keyword_named_top_level_fields:17:5: 'else' can't be used as an identifier because it's a keyword.
int else = 42;
    ^^^^

parser/error_recovery/keyword_named_top_level_fields:18:5: 'enum' can't be used as an identifier because it's a keyword.
int enum = 42;
    ^^^^

parser/error_recovery/keyword_named_top_level_fields:20:5: 'extends' can't be used as an identifier because it's a keyword.
int extends = 42;
    ^^^^^^^

parser/error_recovery/keyword_named_top_level_fields:24:5: 'false' can't be used as an identifier because it's a keyword.
int false = 42;
    ^^^^^

parser/error_recovery/keyword_named_top_level_fields:25:5: 'final' can't be used as an identifier because it's a keyword.
int final = 42;
    ^^^^^

parser/error_recovery/keyword_named_top_level_fields:26:5: 'finally' can't be used as an identifier because it's a keyword.
int finally = 42;
    ^^^^^^^

parser/error_recovery/keyword_named_top_level_fields:27:5: 'for' can't be used as an identifier because it's a keyword.
int for = 42;
    ^^^

parser/error_recovery/keyword_named_top_level_fields:31:5: 'if' can't be used as an identifier because it's a keyword.
int if = 42;
    ^^

parser/error_recovery/keyword_named_top_level_fields:34:5: 'in' can't be used as an identifier because it's a keyword.
int in = 42;
    ^^

parser/error_recovery/keyword_named_top_level_fields:37:5: 'is' can't be used as an identifier because it's a keyword.
int is = 42;
    ^^

parser/error_recovery/keyword_named_top_level_fields:42:5: 'new' can't be used as an identifier because it's a keyword.
int new = 42;
    ^^^

parser/error_recovery/keyword_named_top_level_fields:43:5: 'null' can't be used as an identifier because it's a keyword.
int null = 42;
    ^^^^

parser/error_recovery/keyword_named_top_level_fields:51:5: 'rethrow' can't be used as an identifier because it's a keyword.
int rethrow = 42;
    ^^^^^^^

parser/error_recovery/keyword_named_top_level_fields:52:5: 'return' can't be used as an identifier because it's a keyword.
int return = 42;
    ^^^^^^

parser/error_recovery/keyword_named_top_level_fields:57:5: 'super' can't be used as an identifier because it's a keyword.
int super = 42;
    ^^^^^

parser/error_recovery/keyword_named_top_level_fields:58:5: 'switch' can't be used as an identifier because it's a keyword.
int switch = 42;
    ^^^^^^

parser/error_recovery/keyword_named_top_level_fields:60:5: 'this' can't be used as an identifier because it's a keyword.
int this = 42;
    ^^^^

parser/error_recovery/keyword_named_top_level_fields:61:5: 'throw' can't be used as an identifier because it's a keyword.
int throw = 42;
    ^^^^^

parser/error_recovery/keyword_named_top_level_fields:62:5: 'true' can't be used as an identifier because it's a keyword.
int true = 42;
    ^^^^

parser/error_recovery/keyword_named_top_level_fields:63:5: 'try' can't be used as an identifier because it's a keyword.
int try = 42;
    ^^^

parser/error_recovery/keyword_named_top_level_fields:65:5: 'var' can't be used as an identifier because it's a keyword.
int var = 42;
    ^^^

parser/error_recovery/keyword_named_top_level_fields:66:5: 'void' can't be used as an identifier because it's a keyword.
int void = 42;
    ^^^^

parser/error_recovery/keyword_named_top_level_fields:67:5: 'while' can't be used as an identifier because it's a keyword.
int while = 42;
    ^^^^^

parser/error_recovery/keyword_named_top_level_fields:68:5: 'with' can't be used as an identifier because it's a keyword.
int with = 42;
    ^^^^

beginCompilationUnit(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields()
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(abstract)
      handleType(int, null)
      handleIdentifier(abstract, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(as)
      handleType(int, null)
      handleIdentifier(as, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(assert)
      handleType(int, null)
      handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'assert' 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: assert}], assert, assert)
      handleIdentifier(assert, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(async)
      handleType(int, null)
      handleIdentifier(async, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(await)
      handleType(int, null)
      handleIdentifier(await, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(break)
      handleType(int, null)
      handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'break' 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: break}], break, break)
      handleIdentifier(break, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(case)
      handleType(int, null)
      handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'case' 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: case}], case, case)
      handleIdentifier(case, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(catch)
      handleType(int, null)
      handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'catch' 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: catch}], catch, catch)
      handleIdentifier(catch, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(class)
      handleType(int, null)
      handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'class' 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: class}], class, class)
      handleIdentifier(class, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(const)
      handleType(int, null)
      handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'const' 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: const}], const, const)
      handleIdentifier(const, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(continue)
      handleType(int, null)
      handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'continue' 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: continue}], continue, continue)
      handleIdentifier(continue, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(covariant)
      handleType(int, null)
      handleIdentifier(covariant, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(default)
      handleType(int, null)
      handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'default' 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: default}], default, default)
      handleIdentifier(default, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(deferred)
      handleType(int, null)
      handleIdentifier(deferred, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(do)
      handleType(int, null)
      handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'do' 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: do}], do, do)
      handleIdentifier(do, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(dynamic)
      handleType(int, null)
      handleIdentifier(dynamic, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(else)
      handleType(int, null)
      handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'else' 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: else}], else, else)
      handleIdentifier(else, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(enum)
      handleType(int, null)
      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, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(export)
      handleType(int, null)
      handleIdentifier(export, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(extends)
      handleType(int, null)
      handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'extends' 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: extends}], extends, extends)
      handleIdentifier(extends, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(extension)
      handleType(int, null)
      handleIdentifier(extension, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(external)
      handleType(int, null)
      handleIdentifier(external, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(factory)
      handleType(int, null)
      handleIdentifier(factory, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(false)
      handleType(int, null)
      handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'false' 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: false}], false, false)
      handleIdentifier(false, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(final)
      handleType(int, null)
      handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'final' 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: final}], final, final)
      handleIdentifier(final, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(finally)
      handleType(int, null)
      handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'finally' 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: finally}], finally, finally)
      handleIdentifier(finally, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(for)
      handleType(int, null)
      handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'for' 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: for}], for, for)
      handleIdentifier(for, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(Function)
      handleType(int, null)
      handleIdentifier(Function, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(get)
      handleType(int, null)
      handleIdentifier(get, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(hide)
      handleType(int, null)
      handleIdentifier(hide, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(if)
      handleType(int, null)
      handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'if' 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: if}], if, if)
      handleIdentifier(if, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(implements)
      handleType(int, null)
      handleIdentifier(implements, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(import)
      handleType(int, null)
      handleIdentifier(import, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(in)
      handleType(int, null)
      handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'in' 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: in}], in, in)
      handleIdentifier(in, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(inout)
      handleType(int, null)
      handleIdentifier(inout, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(interface)
      handleType(int, null)
      handleIdentifier(interface, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(is)
      handleType(int, null)
      handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'is' 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: is}], is, is)
      handleIdentifier(is, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(late)
      handleType(int, null)
      handleIdentifier(late, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(library)
      handleType(int, null)
      handleIdentifier(library, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(mixin)
      handleType(int, null)
      handleIdentifier(mixin, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(native)
      handleType(int, null)
      handleIdentifier(native, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(new)
      handleType(int, null)
      handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'new' 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: new}], new, new)
      handleIdentifier(new, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(null)
      handleType(int, null)
      handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'null' 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: null}], null, null)
      handleIdentifier(null, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(of)
      handleType(int, null)
      handleIdentifier(of, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(on)
      handleType(int, null)
      handleIdentifier(on, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(operator)
      handleType(int, null)
      handleIdentifier(operator, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(out)
      handleType(int, null)
      handleIdentifier(out, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(part)
      handleType(int, null)
      handleIdentifier(part, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(patch)
      handleType(int, null)
      handleIdentifier(patch, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(required)
      handleType(int, null)
      handleIdentifier(required, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(rethrow)
      handleType(int, null)
      handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'rethrow' 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: rethrow}], rethrow, rethrow)
      handleIdentifier(rethrow, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(return)
      handleType(int, null)
      handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'return' 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: return}], return, return)
      handleIdentifier(return, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(set)
      handleType(int, null)
      handleIdentifier(set, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(show)
      handleType(int, null)
      handleIdentifier(show, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(source)
      handleType(int, null)
      handleIdentifier(source, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(static)
      handleType(int, null)
      handleIdentifier(static, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(super)
      handleType(int, null)
      handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'super' 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: super}], super, super)
      handleIdentifier(super, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(switch)
      handleType(int, null)
      handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'switch' 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: switch}], switch, switch)
      handleIdentifier(switch, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(sync)
      handleType(int, null)
      handleIdentifier(sync, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(this)
      handleType(int, null)
      handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'this' 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: this}], this, this)
      handleIdentifier(this, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(throw)
      handleType(int, null)
      handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'throw' 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: throw}], throw, throw)
      handleIdentifier(throw, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(true)
      handleType(int, null)
      handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'true' 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: true}], true, true)
      handleIdentifier(true, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(try)
      handleType(int, null)
      handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'try' 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: try}], try, try)
      handleIdentifier(try, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(typedef)
      handleType(int, null)
      handleIdentifier(typedef, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(var)
      handleType(int, null)
      handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'var' 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: var}], var, var)
      handleIdentifier(var, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(void)
      handleType(int, null)
      handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'void' 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: void}], void, void)
      handleIdentifier(void, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(while)
      handleType(int, null)
      handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'while' 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: while}], while, while)
      handleIdentifier(while, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(with)
      handleType(int, null)
      handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'with' 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: with}], with, with)
      handleIdentifier(with, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration(int)
  beginMetadataStar(int)
  endMetadataStar(0)
  beginTopLevelMember(int)
    beginFields(;)
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(yield)
      handleType(int, null)
      handleIdentifier(yield, topLevelVariableDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endTopLevelFields(null, null, null, null, null, 1, int, ;)
  endTopLevelDeclaration()
endCompilationUnit(69, )
