>>>
enum ErrorKind {
  AbstractNotSync,
  AsciiControlCharacter,
  AsyncAsIdentifier,
  AwaitAsIdentifier,
  AwaitForNotAsync,
  AwaitNotAsync,
  BuiltInIdentifierAsType,
  BuiltInIdentifierInDeclaration,
  EmptyNamedParameterList,
  EmptyOptionalParameterList,
  Encoding,
  ExpectedBlockToSkip,
  ExpectedBody,
  ExpectedButGot,
  ExpectedClassBody,

  /// This error code can be used to support non-compliant (with respect to
  /// Dart Language Specification) Dart VM native clauses. See
  /// [dart_vm_native.dart].
  ExpectedClassBodyToSkip,

  ExpectedDeclaration,
  ExpectedExpression,
  ExpectedFunctionBody,
  ExpectedHexDigit,
  ExpectedIdentifier,
  ExpectedOpenParens,
  ExpectedString,
  ExpectedType,
  ExtraneousModifier,
  ExtraneousModifierReplace,
  FactoryNotSync,
  GeneratorReturnsValue,
  InvalidAwaitFor,
  InvalidInlineFunctionType,
  InvalidSyncModifier,
  InvalidVoid,
  MissingExponent,
  NonAsciiIdentifier,
  NonAsciiWhitespace,
  OnlyTry,
  PositionalParameterWithEquals,
  RequiredParameterWithDefault,
  SetterNotSync,
  StackOverflow,
  UnexpectedDollarInString,
  UnexpectedToken,
  UnmatchedToken,
  UnsupportedPrefixPlus,
  UnterminatedComment,
  UnterminatedString,
  UnterminatedToken,
  YieldAsIdentifier,
  YieldNotGenerator,

  Unspecified,
}
<<<
### TODO(1469): Should we keep the blank lines between elements?
enum ErrorKind {
  AbstractNotSync,
  AsciiControlCharacter,
  AsyncAsIdentifier,
  AwaitAsIdentifier,
  AwaitForNotAsync,
  AwaitNotAsync,
  BuiltInIdentifierAsType,
  BuiltInIdentifierInDeclaration,
  EmptyNamedParameterList,
  EmptyOptionalParameterList,
  Encoding,
  ExpectedBlockToSkip,
  ExpectedBody,
  ExpectedButGot,
  ExpectedClassBody,

  /// This error code can be used to support non-compliant (with respect to
  /// Dart Language Specification) Dart VM native clauses. See
  /// [dart_vm_native.dart].
  ExpectedClassBodyToSkip,

  ExpectedDeclaration,
  ExpectedExpression,
  ExpectedFunctionBody,
  ExpectedHexDigit,
  ExpectedIdentifier,
  ExpectedOpenParens,
  ExpectedString,
  ExpectedType,
  ExtraneousModifier,
  ExtraneousModifierReplace,
  FactoryNotSync,
  GeneratorReturnsValue,
  InvalidAwaitFor,
  InvalidInlineFunctionType,
  InvalidSyncModifier,
  InvalidVoid,
  MissingExponent,
  NonAsciiIdentifier,
  NonAsciiWhitespace,
  OnlyTry,
  PositionalParameterWithEquals,
  RequiredParameterWithDefault,
  SetterNotSync,
  StackOverflow,
  UnexpectedDollarInString,
  UnexpectedToken,
  UnmatchedToken,
  UnsupportedPrefixPlus,
  UnterminatedComment,
  UnterminatedString,
  UnterminatedToken,
  YieldAsIdentifier,
  YieldNotGenerator,

  Unspecified,
}