>>>
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,
}
<<<
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,
}