Version 2.15.0-173.0.dev

Merge commit '4f80522fe4ddd9a043aec5b70715021bc47f0cfd' into 'dev'
diff --git a/benchmarks/SDKArtifactSizes/dart/SDKArtifactSizes.dart b/benchmarks/SDKArtifactSizes/dart/SDKArtifactSizes.dart
index 7deaa33..b7c18d1 100644
--- a/benchmarks/SDKArtifactSizes/dart/SDKArtifactSizes.dart
+++ b/benchmarks/SDKArtifactSizes/dart/SDKArtifactSizes.dart
@@ -24,7 +24,6 @@
   'dartdev',
   'dartdevc',
   'dartdoc',
-  'dartfmt',
   'dds',
   'frontend_server',
   'gen_kernel',
diff --git a/benchmarks/SDKArtifactSizes/dart2/SDKArtifactSizes.dart b/benchmarks/SDKArtifactSizes/dart2/SDKArtifactSizes.dart
index 71e5a48..f207e3a 100644
--- a/benchmarks/SDKArtifactSizes/dart2/SDKArtifactSizes.dart
+++ b/benchmarks/SDKArtifactSizes/dart2/SDKArtifactSizes.dart
@@ -26,7 +26,6 @@
   'dartdev',
   'dartdevc',
   'dartdoc',
-  'dartfmt',
   'dds',
   'frontend_server',
   'gen_kernel',
diff --git a/pkg/_fe_analyzer_shared/pubspec.yaml b/pkg/_fe_analyzer_shared/pubspec.yaml
index 8ce5731..8d97c49 100644
--- a/pkg/_fe_analyzer_shared/pubspec.yaml
+++ b/pkg/_fe_analyzer_shared/pubspec.yaml
@@ -1,5 +1,5 @@
 name: _fe_analyzer_shared
-version: 26.0.0
+version: 27.0.0
 description: Logic that is shared between the front_end and analyzer packages.
 homepage: https://github.com/dart-lang/sdk/tree/master/pkg/_fe_analyzer_shared
 
diff --git a/pkg/analyzer/CHANGELOG.md b/pkg/analyzer/CHANGELOG.md
index dd484df..7007543 100644
--- a/pkg/analyzer/CHANGELOG.md
+++ b/pkg/analyzer/CHANGELOG.md
@@ -1,4 +1,4 @@
-## 2.4.0-dev
+## 2.4.0
 * Deprecated `ResourceProvider.getModificationTimes()`.
 * Deprecated `MemoryResourceProvider.newDummyLink()`.
 * Deprecated `MemoryResourceProvider.updateFile()`.
diff --git a/pkg/analyzer/lib/src/analysis_options/error/option_codes.dart b/pkg/analyzer/lib/src/analysis_options/error/option_codes.dart
index 33ea055..56ca27b 100644
--- a/pkg/analyzer/lib/src/analysis_options/error/option_codes.dart
+++ b/pkg/analyzer/lib/src/analysis_options/error/option_codes.dart
@@ -2,214 +2,4 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analyzer/error/error.dart';
-
-/// The error codes used for errors in analysis options files. The convention
-/// for this class is for the name of the error code to indicate the problem
-/// that caused the error to be generated and for the error message to explain
-/// what is wrong and, when appropriate, how the problem can be corrected.
-class AnalysisOptionsErrorCode extends ErrorCode {
-  /// An error code indicating that there is a syntactic error in the included
-  /// file.
-  ///
-  /// Parameters:
-  /// 0: the path of the file containing the error
-  /// 1: the starting offset of the text in the file that contains the error
-  /// 2: the ending offset of the text in the file that contains the error
-  /// 3: the error message
-  static const AnalysisOptionsErrorCode INCLUDED_FILE_PARSE_ERROR =
-      AnalysisOptionsErrorCode(
-          'INCLUDED_FILE_PARSE_ERROR', '{3} in {0}({1}..{2})');
-
-  /// An error code indicating that there is a syntactic error in the file.
-  ///
-  /// Parameters:
-  /// 0: the error message from the parse error
-  static const AnalysisOptionsErrorCode PARSE_ERROR =
-      AnalysisOptionsErrorCode('PARSE_ERROR', '{0}');
-
-  /// Initialize a newly created error code to have the given [name].
-  const AnalysisOptionsErrorCode(String name, String message,
-      {String? correction})
-      : super(
-          correction: correction,
-          message: message,
-          name: name,
-          uniqueName: 'AnalysisOptionsErrorCode.$name',
-        );
-
-  @override
-  ErrorSeverity get errorSeverity => ErrorSeverity.ERROR;
-
-  @override
-  ErrorType get type => ErrorType.COMPILE_TIME_ERROR;
-}
-
-class AnalysisOptionsHintCode extends ErrorCode {
-  /// An error code indicating that the enablePreviewDart2 setting is
-  /// deprecated.
-  static const AnalysisOptionsHintCode PREVIEW_DART_2_SETTING_DEPRECATED =
-      AnalysisOptionsHintCode('PREVIEW_DART_2_SETTING_DEPRECATED',
-          "The 'enablePreviewDart2' setting is deprecated.",
-          correction: "It is no longer necessary to explicitly enable Dart 2.");
-
-  /// An error code indicating that strong-mode: true is deprecated.
-  static const AnalysisOptionsHintCode STRONG_MODE_SETTING_DEPRECATED =
-      AnalysisOptionsHintCode('STRONG_MODE_SETTING_DEPRECATED',
-          "The 'strong-mode: true' setting is deprecated.",
-          correction:
-              "It is no longer necessary to explicitly enable strong mode.");
-
-  /// An error code indicating that the enablePreviewDart2 setting is
-  /// deprecated.
-  static const AnalysisOptionsHintCode SUPER_MIXINS_SETTING_DEPRECATED =
-      AnalysisOptionsHintCode('SUPER_MIXINS_SETTING_DEPRECATED',
-          "The 'enableSuperMixins' setting is deprecated.",
-          correction:
-              "Support has been added to the language for 'mixin' based "
-              'mixins.');
-
-  /// Initialize a newly created hint code to have the given [name].
-  const AnalysisOptionsHintCode(String name, String message,
-      {String? correction})
-      : super(
-          correction: correction,
-          message: message,
-          name: name,
-          uniqueName: 'AnalysisOptionsHintCode.$name',
-        );
-
-  @override
-  ErrorSeverity get errorSeverity => ErrorSeverity.INFO;
-
-  @override
-  ErrorType get type => ErrorType.HINT;
-}
-
-/// The error codes used for warnings in analysis options files. The convention
-/// for this class is for the name of the error code to indicate the problem
-/// that caused the error to be generated and for the error message to explain
-/// what is wrong and, when appropriate, how the problem can be corrected.
-class AnalysisOptionsWarningCode extends ErrorCode {
-  /// An error code indicating that the given option is deprecated.
-  static const AnalysisOptionsWarningCode ANALYSIS_OPTION_DEPRECATED =
-      AnalysisOptionsWarningCode('ANALYSIS_OPTION_DEPRECATED',
-          "The option '{0}' is no longer supported.");
-
-  /// An error code indicating a specified include file could not be found.
-  ///
-  /// Parameters:
-  /// 0: the uri of the file to be included
-  /// 1: the path of the file containing the include directive
-  /// 2: the path of the context being analyzed
-  static const AnalysisOptionsWarningCode INCLUDE_FILE_NOT_FOUND =
-      AnalysisOptionsWarningCode('INCLUDE_FILE_NOT_FOUND',
-          "The include file '{0}' in '{1}' can't be found when analyzing '{2}'.");
-
-  /// An error code indicating a specified include file has a warning.
-  ///
-  /// Parameters:
-  /// 0: the path of the file containing the warnings
-  /// 1: the starting offset of the text in the file that contains the warning
-  /// 2: the ending offset of the text in the file that contains the warning
-  /// 3: the warning message
-  static const AnalysisOptionsWarningCode INCLUDED_FILE_WARNING =
-      AnalysisOptionsWarningCode('INCLUDED_FILE_WARNING',
-          "Warning in the included options file {0}({1}..{2}): {3}");
-
-  /// An error code indicating that a plugin is being configured with an invalid
-  /// value for an option and a detail message is provided.
-  static const AnalysisOptionsWarningCode INVALID_OPTION =
-      AnalysisOptionsWarningCode(
-          'INVALID_OPTION', "Invalid option specified for '{0}': {1}");
-
-  /// An error code indicating an invalid format for an options file section.
-  ///
-  /// Parameters:
-  /// 0: the section name
-  static const AnalysisOptionsWarningCode INVALID_SECTION_FORMAT =
-      AnalysisOptionsWarningCode(
-          'INVALID_SECTION_FORMAT', "Invalid format for the '{0}' section.");
-
-  /// An error code indicating that strong-mode: false is has been removed.
-  static const AnalysisOptionsWarningCode SPEC_MODE_REMOVED =
-      AnalysisOptionsWarningCode('SPEC_MODE_REMOVED',
-          "The option 'strong-mode: false' is no longer supported.",
-          correction:
-              "It's recommended to remove the 'strong-mode:' setting (and make "
-              "your code Dart 2 compliant).");
-
-  /// An error code indicating that an unrecognized error code is being used to
-  /// specify an error filter.
-  ///
-  /// Parameters:
-  /// 0: the unrecognized error code
-  static const AnalysisOptionsWarningCode UNRECOGNIZED_ERROR_CODE =
-      AnalysisOptionsWarningCode(
-          'UNRECOGNIZED_ERROR_CODE', "'{0}' isn't a recognized error code.");
-
-  /// An error code indicating that a plugin is being configured with an
-  /// unsupported option where there is just one legal value.
-  ///
-  /// Parameters:
-  /// 0: the plugin name
-  /// 1: the unsupported option key
-  /// 2: the legal value
-  static const AnalysisOptionsWarningCode UNSUPPORTED_OPTION_WITH_LEGAL_VALUE =
-      AnalysisOptionsWarningCode(
-          'UNSUPPORTED_OPTION_WITH_LEGAL_VALUE',
-          "The option '{1}' isn't supported by '{0}'. "
-              "Try using the only supported option: '{2}'.");
-
-  /// An error code indicating that a plugin is being configured with an
-  /// unsupported option and legal options are provided.
-  ///
-  /// Parameters:
-  /// 0: the plugin name
-  /// 1: the unsupported option key
-  /// 2: legal values
-  static const AnalysisOptionsWarningCode UNSUPPORTED_OPTION_WITH_LEGAL_VALUES =
-      AnalysisOptionsWarningCode('UNSUPPORTED_OPTION_WITH_LEGAL_VALUES',
-          "The option '{1}' isn't supported by '{0}'.",
-          correction: "Try using one of the supported options: {2}.");
-
-  /// An error code indicating that a plugin is being configured with an
-  /// unsupported option and legal options are provided.
-  ///
-  /// Parameters:
-  /// 0: the plugin name
-  /// 1: the unsupported option key
-  static const AnalysisOptionsWarningCode UNSUPPORTED_OPTION_WITHOUT_VALUES =
-      AnalysisOptionsWarningCode(
-    'UNSUPPORTED_OPTION_WITHOUT_VALUES',
-    "The option '{1}' isn't supported by '{0}'.",
-  );
-
-  /// An error code indicating that an option entry is being configured with an
-  /// unsupported value.
-  ///
-  /// Parameters:
-  /// 0: the option name
-  /// 1: the unsupported value
-  /// 2: legal values
-  static const AnalysisOptionsWarningCode UNSUPPORTED_VALUE =
-      AnalysisOptionsWarningCode(
-          'UNSUPPORTED_VALUE', "The value '{1}' isn't supported by '{0}'.",
-          correction: "Try using one of the supported options: {2}.");
-
-  /// Initialize a newly created warning code to have the given [name].
-  const AnalysisOptionsWarningCode(String name, String message,
-      {String? correction})
-      : super(
-          correction: correction,
-          message: message,
-          name: name,
-          uniqueName: 'AnalysisOptionsWarningCode.$name',
-        );
-
-  @override
-  ErrorSeverity get errorSeverity => ErrorSeverity.WARNING;
-
-  @override
-  ErrorType get type => ErrorType.STATIC_WARNING;
-}
+export 'package:analyzer/src/analysis_options/error/option_codes.g.dart';
diff --git a/pkg/analyzer/lib/src/analysis_options/error/option_codes.g.dart b/pkg/analyzer/lib/src/analysis_options/error/option_codes.g.dart
new file mode 100644
index 0000000..4c95c70
--- /dev/null
+++ b/pkg/analyzer/lib/src/analysis_options/error/option_codes.g.dart
@@ -0,0 +1,294 @@
+// Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+// THIS FILE IS GENERATED. DO NOT EDIT.
+//
+// Instead modify 'pkg/analyzer/messages.yaml' and run
+// 'dart pkg/analyzer/tool/messages/generate.dart' to update.
+
+import "package:analyzer/error/error.dart";
+
+// It is hard to visually separate each code's _doc comment_ from its published
+// _documentation comment_ when each is written as an end-of-line comment.
+// ignore_for_file: slash_for_doc_comments
+
+class AnalysisOptionsErrorCode extends ErrorCode {
+  /**
+   * An error code indicating that there is a syntactic error in the included
+   * file.
+   *
+   * Parameters:
+   * 0: the path of the file containing the error
+   * 1: the starting offset of the text in the file that contains the error
+   * 2: the ending offset of the text in the file that contains the error
+   * 3: the error message
+   */
+  static const AnalysisOptionsErrorCode INCLUDED_FILE_PARSE_ERROR =
+      AnalysisOptionsErrorCode(
+    'INCLUDED_FILE_PARSE_ERROR',
+    "{3} in {0}({1}..{2})",
+  );
+
+  /**
+   * An error code indicating that there is a syntactic error in the file.
+   *
+   * Parameters:
+   * 0: the error message from the parse error
+   */
+  static const AnalysisOptionsErrorCode PARSE_ERROR = AnalysisOptionsErrorCode(
+    'PARSE_ERROR',
+    "{0}",
+  );
+
+  /// Initialize a newly created error code to have the given [name].
+  const AnalysisOptionsErrorCode(
+    String name,
+    String message, {
+    String? correction,
+    bool hasPublishedDocs = false,
+    bool isUnresolvedIdentifier = false,
+    String? uniqueName,
+  }) : super(
+          correction: correction,
+          hasPublishedDocs: hasPublishedDocs,
+          isUnresolvedIdentifier: isUnresolvedIdentifier,
+          message: message,
+          name: name,
+          uniqueName: 'AnalysisOptionsErrorCode.${uniqueName ?? name}',
+        );
+
+  @override
+  ErrorSeverity get errorSeverity => ErrorSeverity.ERROR;
+
+  @override
+  ErrorType get type => ErrorType.COMPILE_TIME_ERROR;
+}
+
+class AnalysisOptionsHintCode extends ErrorCode {
+  /**
+   * An error code indicating that the enablePreviewDart2 setting is
+   * deprecated.
+   */
+  static const AnalysisOptionsHintCode PREVIEW_DART_2_SETTING_DEPRECATED =
+      AnalysisOptionsHintCode(
+    'PREVIEW_DART_2_SETTING_DEPRECATED',
+    "The 'enablePreviewDart2' setting is deprecated.",
+    correction: "It is no longer necessary to explicitly enable Dart 2.",
+  );
+
+  /**
+   * An error code indicating that strong-mode: true is deprecated.
+   */
+  static const AnalysisOptionsHintCode STRONG_MODE_SETTING_DEPRECATED =
+      AnalysisOptionsHintCode(
+    'STRONG_MODE_SETTING_DEPRECATED',
+    "The 'strong-mode: true' setting is deprecated.",
+    correction: "It is no longer necessary to explicitly enable strong mode.",
+  );
+
+  /**
+   * An error code indicating that the enablePreviewDart2 setting is
+   * deprecated.
+   */
+  static const AnalysisOptionsHintCode SUPER_MIXINS_SETTING_DEPRECATED =
+      AnalysisOptionsHintCode(
+    'SUPER_MIXINS_SETTING_DEPRECATED',
+    "The 'enableSuperMixins' setting is deprecated.",
+    correction:
+        "Support has been added to the language for 'mixin' based mixins.",
+  );
+
+  /// Initialize a newly created error code to have the given [name].
+  const AnalysisOptionsHintCode(
+    String name,
+    String message, {
+    String? correction,
+    bool hasPublishedDocs = false,
+    bool isUnresolvedIdentifier = false,
+    String? uniqueName,
+  }) : super(
+          correction: correction,
+          hasPublishedDocs: hasPublishedDocs,
+          isUnresolvedIdentifier: isUnresolvedIdentifier,
+          message: message,
+          name: name,
+          uniqueName: 'AnalysisOptionsHintCode.${uniqueName ?? name}',
+        );
+
+  @override
+  ErrorSeverity get errorSeverity => ErrorSeverity.INFO;
+
+  @override
+  ErrorType get type => ErrorType.HINT;
+}
+
+class AnalysisOptionsWarningCode extends ErrorCode {
+  /**
+   * An error code indicating that the given option is deprecated.
+   */
+  static const AnalysisOptionsWarningCode ANALYSIS_OPTION_DEPRECATED =
+      AnalysisOptionsWarningCode(
+    'ANALYSIS_OPTION_DEPRECATED',
+    "The option '{0}' is no longer supported.",
+  );
+
+  /**
+   * An error code indicating a specified include file has a warning.
+   *
+   * Parameters:
+   * 0: the path of the file containing the warnings
+   * 1: the starting offset of the text in the file that contains the warning
+   * 2: the ending offset of the text in the file that contains the warning
+   * 3: the warning message
+   */
+  static const AnalysisOptionsWarningCode INCLUDED_FILE_WARNING =
+      AnalysisOptionsWarningCode(
+    'INCLUDED_FILE_WARNING',
+    "Warning in the included options file {0}({1}..{2}): {3}",
+  );
+
+  /**
+   * An error code indicating a specified include file could not be found.
+   *
+   * Parameters:
+   * 0: the uri of the file to be included
+   * 1: the path of the file containing the include directive
+   * 2: the path of the context being analyzed
+   */
+  static const AnalysisOptionsWarningCode INCLUDE_FILE_NOT_FOUND =
+      AnalysisOptionsWarningCode(
+    'INCLUDE_FILE_NOT_FOUND',
+    "The include file '{0}' in '{1}' can't be found when analyzing '{2}'.",
+  );
+
+  /**
+   * An error code indicating that a plugin is being configured with an invalid
+   * value for an option and a detail message is provided.
+   */
+  static const AnalysisOptionsWarningCode INVALID_OPTION =
+      AnalysisOptionsWarningCode(
+    'INVALID_OPTION',
+    "Invalid option specified for '{0}': {1}",
+  );
+
+  /**
+   * An error code indicating an invalid format for an options file section.
+   *
+   * Parameters:
+   * 0: the section name
+   */
+  static const AnalysisOptionsWarningCode INVALID_SECTION_FORMAT =
+      AnalysisOptionsWarningCode(
+    'INVALID_SECTION_FORMAT',
+    "Invalid format for the '{0}' section.",
+  );
+
+  /**
+   * An error code indicating that strong-mode: false is has been removed.
+   */
+  static const AnalysisOptionsWarningCode SPEC_MODE_REMOVED =
+      AnalysisOptionsWarningCode(
+    'SPEC_MODE_REMOVED',
+    "The option 'strong-mode: false' is no longer supported.",
+    correction:
+        "It's recommended to remove the 'strong-mode:' setting (and make your code Dart 2 compliant).",
+  );
+
+  /**
+   * An error code indicating that an unrecognized error code is being used to
+   * specify an error filter.
+   *
+   * Parameters:
+   * 0: the unrecognized error code
+   */
+  static const AnalysisOptionsWarningCode UNRECOGNIZED_ERROR_CODE =
+      AnalysisOptionsWarningCode(
+    'UNRECOGNIZED_ERROR_CODE',
+    "'{0}' isn't a recognized error code.",
+  );
+
+  /**
+   * An error code indicating that a plugin is being configured with an
+   * unsupported option and legal options are provided.
+   *
+   * Parameters:
+   * 0: the plugin name
+   * 1: the unsupported option key
+   */
+  static const AnalysisOptionsWarningCode UNSUPPORTED_OPTION_WITHOUT_VALUES =
+      AnalysisOptionsWarningCode(
+    'UNSUPPORTED_OPTION_WITHOUT_VALUES',
+    "The option '{1}' isn't supported by '{0}'.",
+  );
+
+  /**
+   * An error code indicating that a plugin is being configured with an
+   * unsupported option where there is just one legal value.
+   *
+   * Parameters:
+   * 0: the plugin name
+   * 1: the unsupported option key
+   * 2: the legal value
+   */
+  static const AnalysisOptionsWarningCode UNSUPPORTED_OPTION_WITH_LEGAL_VALUE =
+      AnalysisOptionsWarningCode(
+    'UNSUPPORTED_OPTION_WITH_LEGAL_VALUE',
+    "The option '{1}' isn't supported by '{0}'. Try using the only supported option: '{2}'.",
+  );
+
+  /**
+   * An error code indicating that a plugin is being configured with an
+   * unsupported option and legal options are provided.
+   *
+   * Parameters:
+   * 0: the plugin name
+   * 1: the unsupported option key
+   * 2: legal values
+   */
+  static const AnalysisOptionsWarningCode UNSUPPORTED_OPTION_WITH_LEGAL_VALUES =
+      AnalysisOptionsWarningCode(
+    'UNSUPPORTED_OPTION_WITH_LEGAL_VALUES',
+    "The option '{1}' isn't supported by '{0}'.",
+    correction: "Try using one of the supported options: {2}.",
+  );
+
+  /**
+   * An error code indicating that an option entry is being configured with an
+   * unsupported value.
+   *
+   * Parameters:
+   * 0: the option name
+   * 1: the unsupported value
+   * 2: legal values
+   */
+  static const AnalysisOptionsWarningCode UNSUPPORTED_VALUE =
+      AnalysisOptionsWarningCode(
+    'UNSUPPORTED_VALUE',
+    "The value '{1}' isn't supported by '{0}'.",
+    correction: "Try using one of the supported options: {2}.",
+  );
+
+  /// Initialize a newly created error code to have the given [name].
+  const AnalysisOptionsWarningCode(
+    String name,
+    String message, {
+    String? correction,
+    bool hasPublishedDocs = false,
+    bool isUnresolvedIdentifier = false,
+    String? uniqueName,
+  }) : super(
+          correction: correction,
+          hasPublishedDocs: hasPublishedDocs,
+          isUnresolvedIdentifier: isUnresolvedIdentifier,
+          message: message,
+          name: name,
+          uniqueName: 'AnalysisOptionsWarningCode.${uniqueName ?? name}',
+        );
+
+  @override
+  ErrorSeverity get errorSeverity => ErrorSeverity.WARNING;
+
+  @override
+  ErrorType get type => ErrorType.STATIC_WARNING;
+}
diff --git a/pkg/analyzer/lib/src/dart/error/ffi_code.dart b/pkg/analyzer/lib/src/dart/error/ffi_code.dart
index 8896d3e..07984a3 100644
--- a/pkg/analyzer/lib/src/dart/error/ffi_code.dart
+++ b/pkg/analyzer/lib/src/dart/error/ffi_code.dart
@@ -2,414 +2,4 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analyzer/error/error.dart';
-import 'package:analyzer/src/error/analyzer_error_code.dart';
-
-// It is hard to visually separate each code's _doc comment_ from its published
-// _documentation comment_ when each is written as an end-of-line comment.
-// ignore_for_file: slash_for_doc_comments
-
-/// The diagnostic codes associated with `dart:ffi`.
-class FfiCode extends AnalyzerErrorCode {
-  /**
-   * No parameters.
-   */
-  static const FfiCode ANNOTATION_ON_POINTER_FIELD = FfiCode(
-      name: 'ANNOTATION_ON_POINTER_FIELD',
-      message:
-          "Fields in a struct class whose type is 'Pointer' should not have "
-          "any annotations.",
-      correction: "Try removing the annotation.");
-
-  /**
-   * Parameters:
-   * 0: the name of the argument
-   */
-  static const FfiCode ARGUMENT_MUST_BE_A_CONSTANT = FfiCode(
-      name: 'ARGUMENT_MUST_BE_A_CONSTANT',
-      message: "Argument '{0}' must be a constant.",
-      correction: "Try replacing the value with a literal or const.");
-
-  /**
-   * No parameters.
-   */
-  static const FfiCode CREATION_OF_STRUCT_OR_UNION = FfiCode(
-    name: 'CREATION_OF_STRUCT_OR_UNION',
-    message: "Subclasses of 'Struct' and 'Union' are backed by native memory, "
-        "and can't be instantiated by a generative constructor.",
-    correction: "Try allocating it via allocation, or load from a 'Pointer'.",
-  );
-
-  /**
-   * Parameters:
-   * 0: the name of the struct class
-   */
-  static const FfiCode EMPTY_STRUCT = FfiCode(
-      name: 'EMPTY_STRUCT',
-      message: "Struct '{0}' is empty. Empty structs are undefined behavior.",
-      correction: "Try adding a field to '{0}' or use a different Struct.");
-
-  /**
-   * No parameters.
-   */
-  static const FfiCode EXTRA_ANNOTATION_ON_STRUCT_FIELD = FfiCode(
-      name: 'EXTRA_ANNOTATION_ON_STRUCT_FIELD',
-      message: "Fields in a struct class must have exactly one annotation "
-          "indicating the native type.",
-      correction: "Try removing the extra annotation.");
-
-  /**
-   * No parameters.
-   */
-  static const FfiCode EXTRA_SIZE_ANNOTATION_CARRAY = FfiCode(
-      name: 'EXTRA_SIZE_ANNOTATION_CARRAY',
-      message: "'Array's must have exactly one 'Array' annotation.",
-      correction: "Try removing the extra annotation.");
-
-  /**
-   * No parameters.
-   */
-  static const FfiCode FFI_NATIVE_ONLY_STATIC = FfiCode(
-      name: 'FFI_NATIVE_ONLY_STATIC',
-      message: "FfiNative annotations can only be used on static functions.",
-      correction: "Change the method to static.");
-
-  /**
-   * No parameters.
-   */
-  static const FfiCode FIELD_IN_STRUCT_WITH_INITIALIZER = FfiCode(
-      name: 'FIELD_IN_STRUCT_WITH_INITIALIZER',
-      message:
-          "Fields in subclasses of 'Struct' and 'Union' can't have initializers.",
-      correction:
-          "Try removing the initializer and marking the field as external.");
-
-  /**
-   * No parameters.
-   */
-  static const FfiCode FIELD_INITIALIZER_IN_STRUCT = FfiCode(
-      name: 'FIELD_INITIALIZER_IN_STRUCT',
-      message:
-          "Constructors in subclasses of 'Struct' and 'Union' can't have field "
-          "initializers.",
-      correction: "Try removing the field initializer and marking the field as"
-          " external.");
-
-  /**
-   * No parameters.
-   */
-  static const FfiCode FIELD_MUST_BE_EXTERNAL_IN_STRUCT = FfiCode(
-      name: 'FIELD_MUST_BE_EXTERNAL_IN_STRUCT',
-      message:
-          "Fields of 'Struct' and 'Union' subclasses must be marked external.",
-      correction: "Try adding the 'external' modifier.");
-
-  /**
-   * Parameters:
-   * 0: the name of the struct class
-   */
-  static const FfiCode GENERIC_STRUCT_SUBCLASS = FfiCode(
-      name: 'GENERIC_STRUCT_SUBCLASS',
-      message:
-          "The class '{0}' can't extend 'Struct' or 'Union' because it is generic.",
-      correction: "Try removing the type parameters from '{0}'.");
-
-  /**
-   * No parameters.
-   */
-  static const FfiCode INVALID_EXCEPTION_VALUE = FfiCode(
-      name: 'INVALID_EXCEPTION_VALUE',
-      message:
-          "The method 'Pointer.fromFunction' must not have an exceptional return "
-          "value (the second argument) when the return type of the function is "
-          "either 'void', 'Handle' or 'Pointer'.",
-      correction: "Try removing the exceptional return value.");
-
-  /**
-   * Parameters:
-   * 0: the type of the field
-   */
-  static const FfiCode INVALID_FIELD_TYPE_IN_STRUCT = FfiCode(
-      name: 'INVALID_FIELD_TYPE_IN_STRUCT',
-      message:
-          "Fields in struct classes can't have the type '{0}'. They can only "
-          "be declared as 'int', 'double', 'Array', 'Pointer', or subtype of "
-          "'Struct' or 'Union'.",
-      correction:
-          "Try using 'int', 'double', 'Array', 'Pointer', or subtype of "
-          "'Struct' or 'Union'.");
-
-  /**
-   * No parameters.
-   */
-  static const FfiCode LEAF_CALL_MUST_NOT_RETURN_HANDLE = FfiCode(
-      name: 'LEAF_CALL_MUST_NOT_RETURN_HANDLE',
-      message: "FFI leaf call must not return a Handle.",
-      correction: "Try changing the return type to primitive or struct.");
-
-  /**
-   * No parameters.
-   */
-  static const FfiCode LEAF_CALL_MUST_NOT_TAKE_HANDLE = FfiCode(
-      name: 'LEAF_CALL_MUST_NOT_TAKE_HANDLE',
-      message: "FFI leaf call must not take arguments of type Handle.",
-      correction: "Try changing the argument type to primitive or struct.");
-
-  /**
-   * No parameters.
-   */
-  static const FfiCode MISMATCHED_ANNOTATION_ON_STRUCT_FIELD = FfiCode(
-      name: 'MISMATCHED_ANNOTATION_ON_STRUCT_FIELD',
-      message: "The annotation does not match the declared type of the field.",
-      correction: "Try using a different annotation or changing the declared "
-          "type to match.");
-
-  /**
-   * No parameters.
-   */
-  static const FfiCode MISSING_ANNOTATION_ON_STRUCT_FIELD = FfiCode(
-      name: 'MISSING_ANNOTATION_ON_STRUCT_FIELD',
-      message:
-          "Fields in a struct class must either have the type 'Pointer' or an "
-          "annotation indicating the native type.",
-      correction: "Try adding an annotation.");
-
-  /**
-   * No parameters.
-   */
-  static const FfiCode MISSING_EXCEPTION_VALUE = FfiCode(
-      name: 'MISSING_EXCEPTION_VALUE',
-      message:
-          "The method 'Pointer.fromFunction' must have an exceptional return "
-          "value (the second argument) when the return type of the function is "
-          "neither 'void', 'Handle' or 'Pointer'.",
-      correction: "Try adding an exceptional return value.");
-
-  /**
-   * Parameters:
-   * 0: the type of the field
-   */
-  static const FfiCode MISSING_FIELD_TYPE_IN_STRUCT = FfiCode(
-      name: 'MISSING_FIELD_TYPE_IN_STRUCT',
-      message:
-          "Fields in struct classes must have an explicitly declared type of "
-          "'int', 'double' or 'Pointer'.",
-      correction: "Try using 'int', 'double' or 'Pointer'.");
-
-  /**
-   * No parameters.
-   */
-  static const FfiCode MISSING_SIZE_ANNOTATION_CARRAY = FfiCode(
-      name: 'MISSING_SIZE_ANNOTATION_CARRAY',
-      message: "'Array's must have exactly one 'Array' annotation.",
-      correction: "Try adding a 'Array' annotation.");
-
-  /**
-   * Parameters:
-   * 0: the type that should be a valid dart:ffi native type.
-   * 1: the name of the function whose invocation depends on this relationship
-   */
-  static const FfiCode MUST_BE_A_NATIVE_FUNCTION_TYPE = FfiCode(
-      name: 'MUST_BE_A_NATIVE_FUNCTION_TYPE',
-      message:
-          "The type '{0}' given to '{1}' must be a valid 'dart:ffi' native "
-          "function type.",
-      correction: "Try changing the type to only use members for 'dart:ffi'.");
-
-  /**
-   * Parameters:
-   * 0: the type that should be a subtype
-   * 1: the supertype that the subtype is compared to
-   * 2: the name of the function whose invocation depends on this relationship
-   */
-  static const FfiCode MUST_BE_A_SUBTYPE = FfiCode(
-      name: 'MUST_BE_A_SUBTYPE',
-      message: "The type '{0}' must be a subtype of '{1}' for '{2}'.",
-      correction: "Try changing one or both of the type arguments.");
-
-  /**
-   * Parameters:
-   * 0: the name of the function, method, or constructor having type arguments
-   */
-  static const FfiCode NON_CONSTANT_TYPE_ARGUMENT = FfiCode(
-      name: 'NON_CONSTANT_TYPE_ARGUMENT',
-      message:
-          "The type arguments to '{0}' must be compile time constants but type "
-          "parameters are not constants.",
-      correction: "Try changing the type argument to be a constant type.");
-
-  /**
-   * Parameters:
-   * 0: the type that should be a valid dart:ffi native type.
-   */
-  static const FfiCode NON_NATIVE_FUNCTION_TYPE_ARGUMENT_TO_POINTER = FfiCode(
-      name: 'NON_NATIVE_FUNCTION_TYPE_ARGUMENT_TO_POINTER',
-      message: "The type argument for the pointer '{0}' must be a "
-          "'NativeFunction' in order to use 'asFunction'.",
-      correction: "Try changing the type argument to be a 'NativeFunction'.");
-
-  /**
-   * No parameters.
-   */
-  static const FfiCode NON_POSITIVE_ARRAY_DIMENSION = FfiCode(
-      name: 'NON_POSITIVE_ARRAY_DIMENSION',
-      message: "Array dimensions must be positive numbers.",
-      correction: "Try changing the input to a positive number.");
-
-  /**
-   * Parameters:
-   * 0: the type of the field
-   */
-  static const FfiCode NON_SIZED_TYPE_ARGUMENT = FfiCode(
-      name: 'NON_SIZED_TYPE_ARGUMENT',
-      message:
-          "Type arguments to '{0}' can't have the type '{1}'. They can only "
-          "be declared as native integer, 'Float', 'Double', 'Pointer', or "
-          "subtype of 'Struct' or 'Union'.",
-      correction: "Try using a native integer, 'Float', 'Double', 'Pointer', "
-          "or subtype of 'Struct' or 'Union'.");
-
-  /**
-   * No parameters.
-   */
-  static const FfiCode PACKED_ANNOTATION = FfiCode(
-      name: 'PACKED_ANNOTATION',
-      message: "Structs must have at most one 'Packed' annotation.",
-      correction: "Try removing extra 'Packed' annotations.");
-
-  /**
-   * No parameters.
-   */
-  static const FfiCode PACKED_ANNOTATION_ALIGNMENT = FfiCode(
-      name: 'PACKED_ANNOTATION_ALIGNMENT',
-      message: "Only packing to 1, 2, 4, 8, and 16 bytes is supported.",
-      correction:
-          "Try changing the 'Packed' annotation alignment to 1, 2, 4, 8, or 16.");
-
-  /**
-   * Parameters:
-   * 0: the name of the outer struct
-   * 1: the name of the struct being nested
-   */
-  static const FfiCode PACKED_NESTING_NON_PACKED = FfiCode(
-      name: 'PACKED_NESTING_NON_PACKED',
-      message:
-          "Nesting the non-packed or less tightly packed struct '{0}' in a packed struct '{1}' is not supported.",
-      correction:
-          "Try packing the nested struct or packing the nested struct more tightly.");
-
-  /**
-   * No parameters.
-   */
-  static const FfiCode SIZE_ANNOTATION_DIMENSIONS = FfiCode(
-      name: 'SIZE_ANNOTATION_DIMENSIONS',
-      message:
-          "'Array's must have an 'Array' annotation that matches the dimensions.",
-      correction: "Try adjusting the arguments in the 'Array' annotation.");
-
-  /**
-   * Parameters:
-   * 0: the name of the subclass
-   * 1: the name of the class being extended, implemented, or mixed in
-   */
-  static const FfiCode SUBTYPE_OF_FFI_CLASS_IN_EXTENDS = FfiCode(
-    name: 'SUBTYPE_OF_FFI_CLASS',
-    message: "The class '{0}' can't extend '{1}'.",
-    correction: "Try extending 'Struct' or 'Union'.",
-    uniqueName: 'SUBTYPE_OF_FFI_CLASS_IN_EXTENDS',
-  );
-
-  /**
-   * Parameters:
-   * 0: the name of the subclass
-   * 1: the name of the class being extended, implemented, or mixed in
-   */
-  static const FfiCode SUBTYPE_OF_FFI_CLASS_IN_IMPLEMENTS = FfiCode(
-    name: 'SUBTYPE_OF_FFI_CLASS',
-    message: "The class '{0}' can't implement '{1}'.",
-    correction: "Try extending 'Struct' or 'Union'.",
-    uniqueName: 'SUBTYPE_OF_FFI_CLASS_IN_IMPLEMENTS',
-  );
-
-  /**
-   * Parameters:
-   * 0: the name of the subclass
-   * 1: the name of the class being extended, implemented, or mixed in
-   */
-  static const FfiCode SUBTYPE_OF_FFI_CLASS_IN_WITH = FfiCode(
-    name: 'SUBTYPE_OF_FFI_CLASS',
-    message: "The class '{0}' can't mix in '{1}'.",
-    correction: "Try extending 'Struct' or 'Union'.",
-    uniqueName: 'SUBTYPE_OF_FFI_CLASS_IN_WITH',
-  );
-
-  /**
-   * Parameters:
-   * 0: the name of the subclass
-   * 1: the name of the class being extended, implemented, or mixed in
-   */
-  static const FfiCode SUBTYPE_OF_STRUCT_CLASS_IN_EXTENDS = FfiCode(
-    name: 'SUBTYPE_OF_STRUCT_CLASS',
-    message: "The class '{0}' can't extend '{1}' because '{1}' is a subtype of "
-        "'Struct' or 'Union'.",
-    correction: "Try extending 'Struct' or 'Union' directly.",
-    uniqueName: 'SUBTYPE_OF_STRUCT_CLASS_IN_EXTENDS',
-  );
-
-  /**
-   * Parameters:
-   * 0: the name of the subclass
-   * 1: the name of the class being extended, implemented, or mixed in
-   */
-  static const FfiCode SUBTYPE_OF_STRUCT_CLASS_IN_IMPLEMENTS = FfiCode(
-    name: 'SUBTYPE_OF_STRUCT_CLASS',
-    message:
-        "The class '{0}' can't implement '{1}' because '{1}' is a subtype of "
-        "'Struct' or 'Union'.",
-    correction: "Try extending 'Struct' or 'Union' directly.",
-    uniqueName: 'SUBTYPE_OF_STRUCT_CLASS_IN_IMPLEMENTS',
-  );
-
-  /**
-   * Parameters:
-   * 0: the name of the subclass
-   * 1: the name of the class being extended, implemented, or mixed in
-   */
-  static const FfiCode SUBTYPE_OF_STRUCT_CLASS_IN_WITH = FfiCode(
-    name: 'SUBTYPE_OF_STRUCT_CLASS',
-    message: "The class '{0}' can't mix in '{1}' because '{1}' is a subtype of "
-        "'Struct' or 'Union'.",
-    correction: "Try extending 'Struct' or 'Union' directly.",
-    uniqueName: 'SUBTYPE_OF_STRUCT_CLASS_IN_WITH',
-  );
-
-  /// Initialize a newly created error code to have the given [name]. If
-  /// [uniqueName] is provided, then it will be used to construct the unique
-  /// name for the code, otherwise the name will be used to construct the unique
-  /// name.
-  ///
-  /// The message associated with the error will be created from the given
-  /// [message] template. The correction associated with the error will be
-  /// created from the given [correction] template.
-  ///
-  /// If [hasPublishedDocs] is `true` then a URL for the docs will be generated.
-  const FfiCode({
-    String? correction,
-    bool hasPublishedDocs = false,
-    required String message,
-    required String name,
-    String? uniqueName,
-  }) : super(
-          correction: correction,
-          hasPublishedDocs: hasPublishedDocs,
-          message: message,
-          name: name,
-          uniqueName: 'FfiCode.${uniqueName ?? name}',
-        );
-
-  @override
-  ErrorSeverity get errorSeverity => type.severity;
-
-  @override
-  ErrorType get type => ErrorType.COMPILE_TIME_ERROR;
-}
+export 'package:analyzer/src/dart/error/ffi_code.g.dart';
diff --git a/pkg/analyzer/lib/src/dart/error/ffi_code.g.dart b/pkg/analyzer/lib/src/dart/error/ffi_code.g.dart
new file mode 100644
index 0000000..8edc5cf
--- /dev/null
+++ b/pkg/analyzer/lib/src/dart/error/ffi_code.g.dart
@@ -0,0 +1,404 @@
+// Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+// THIS FILE IS GENERATED. DO NOT EDIT.
+//
+// Instead modify 'pkg/analyzer/messages.yaml' and run
+// 'dart pkg/analyzer/tool/messages/generate.dart' to update.
+
+import "package:analyzer/error/error.dart";
+import "package:analyzer/src/error/analyzer_error_code.dart";
+
+// It is hard to visually separate each code's _doc comment_ from its published
+// _documentation comment_ when each is written as an end-of-line comment.
+// ignore_for_file: slash_for_doc_comments
+
+class FfiCode extends AnalyzerErrorCode {
+  /**
+   * No parameters.
+   */
+  static const FfiCode ANNOTATION_ON_POINTER_FIELD = FfiCode(
+    'ANNOTATION_ON_POINTER_FIELD',
+    "Fields in a struct class whose type is 'Pointer' should not have any annotations.",
+    correction: "Try removing the annotation.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the argument
+   */
+  static const FfiCode ARGUMENT_MUST_BE_A_CONSTANT = FfiCode(
+    'ARGUMENT_MUST_BE_A_CONSTANT',
+    "Argument '{0}' must be a constant.",
+    correction: "Try replacing the value with a literal or const.",
+  );
+
+  /**
+   * No parameters.
+   */
+  static const FfiCode CREATION_OF_STRUCT_OR_UNION = FfiCode(
+    'CREATION_OF_STRUCT_OR_UNION',
+    "Subclasses of 'Struct' and 'Union' are backed by native memory, and can't be instantiated by a generative constructor.",
+    correction: "Try allocating it via allocation, or load from a 'Pointer'.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the struct class
+   */
+  static const FfiCode EMPTY_STRUCT = FfiCode(
+    'EMPTY_STRUCT',
+    "Struct '{0}' is empty. Empty structs are undefined behavior.",
+    correction: "Try adding a field to '{0}' or use a different Struct.",
+  );
+
+  /**
+   * No parameters.
+   */
+  static const FfiCode EXTRA_ANNOTATION_ON_STRUCT_FIELD = FfiCode(
+    'EXTRA_ANNOTATION_ON_STRUCT_FIELD',
+    "Fields in a struct class must have exactly one annotation indicating the native type.",
+    correction: "Try removing the extra annotation.",
+  );
+
+  /**
+   * No parameters.
+   */
+  static const FfiCode EXTRA_SIZE_ANNOTATION_CARRAY = FfiCode(
+    'EXTRA_SIZE_ANNOTATION_CARRAY',
+    "'Array's must have exactly one 'Array' annotation.",
+    correction: "Try removing the extra annotation.",
+  );
+
+  /**
+   * No parameters.
+   */
+  static const FfiCode FFI_NATIVE_ONLY_STATIC = FfiCode(
+    'FFI_NATIVE_ONLY_STATIC',
+    "FfiNative annotations can only be used on static functions.",
+    correction: "Change the method to static.",
+  );
+
+  /**
+   * No parameters.
+   */
+  static const FfiCode FIELD_INITIALIZER_IN_STRUCT = FfiCode(
+    'FIELD_INITIALIZER_IN_STRUCT',
+    "Constructors in subclasses of 'Struct' and 'Union' can't have field initializers.",
+    correction:
+        "Try removing the field initializer and marking the field as external.",
+  );
+
+  /**
+   * No parameters.
+   */
+  static const FfiCode FIELD_IN_STRUCT_WITH_INITIALIZER = FfiCode(
+    'FIELD_IN_STRUCT_WITH_INITIALIZER',
+    "Fields in subclasses of 'Struct' and 'Union' can't have initializers.",
+    correction:
+        "Try removing the initializer and marking the field as external.",
+  );
+
+  /**
+   * No parameters.
+   */
+  static const FfiCode FIELD_MUST_BE_EXTERNAL_IN_STRUCT = FfiCode(
+    'FIELD_MUST_BE_EXTERNAL_IN_STRUCT',
+    "Fields of 'Struct' and 'Union' subclasses must be marked external.",
+    correction: "Try adding the 'external' modifier.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the struct class
+   */
+  static const FfiCode GENERIC_STRUCT_SUBCLASS = FfiCode(
+    'GENERIC_STRUCT_SUBCLASS',
+    "The class '{0}' can't extend 'Struct' or 'Union' because it is generic.",
+    correction: "Try removing the type parameters from '{0}'.",
+  );
+
+  /**
+   * No parameters.
+   */
+  static const FfiCode INVALID_EXCEPTION_VALUE = FfiCode(
+    'INVALID_EXCEPTION_VALUE',
+    "The method 'Pointer.fromFunction' must not have an exceptional return value (the second argument) when the return type of the function is either 'void', 'Handle' or 'Pointer'.",
+    correction: "Try removing the exceptional return value.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the type of the field
+   */
+  static const FfiCode INVALID_FIELD_TYPE_IN_STRUCT = FfiCode(
+    'INVALID_FIELD_TYPE_IN_STRUCT',
+    "Fields in struct classes can't have the type '{0}'. They can only be declared as 'int', 'double', 'Array', 'Pointer', or subtype of 'Struct' or 'Union'.",
+    correction:
+        "Try using 'int', 'double', 'Array', 'Pointer', or subtype of 'Struct' or 'Union'.",
+  );
+
+  /**
+   * No parameters.
+   */
+  static const FfiCode LEAF_CALL_MUST_NOT_RETURN_HANDLE = FfiCode(
+    'LEAF_CALL_MUST_NOT_RETURN_HANDLE',
+    "FFI leaf call must not return a Handle.",
+    correction: "Try changing the return type to primitive or struct.",
+  );
+
+  /**
+   * No parameters.
+   */
+  static const FfiCode LEAF_CALL_MUST_NOT_TAKE_HANDLE = FfiCode(
+    'LEAF_CALL_MUST_NOT_TAKE_HANDLE',
+    "FFI leaf call must not take arguments of type Handle.",
+    correction: "Try changing the argument type to primitive or struct.",
+  );
+
+  /**
+   * No parameters.
+   */
+  static const FfiCode MISMATCHED_ANNOTATION_ON_STRUCT_FIELD = FfiCode(
+    'MISMATCHED_ANNOTATION_ON_STRUCT_FIELD',
+    "The annotation does not match the declared type of the field.",
+    correction:
+        "Try using a different annotation or changing the declared type to match.",
+  );
+
+  /**
+   * No parameters.
+   */
+  static const FfiCode MISSING_ANNOTATION_ON_STRUCT_FIELD = FfiCode(
+    'MISSING_ANNOTATION_ON_STRUCT_FIELD',
+    "Fields in a struct class must either have the type 'Pointer' or an annotation indicating the native type.",
+    correction: "Try adding an annotation.",
+  );
+
+  /**
+   * No parameters.
+   */
+  static const FfiCode MISSING_EXCEPTION_VALUE = FfiCode(
+    'MISSING_EXCEPTION_VALUE',
+    "The method 'Pointer.fromFunction' must have an exceptional return value (the second argument) when the return type of the function is neither 'void', 'Handle' or 'Pointer'.",
+    correction: "Try adding an exceptional return value.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the type of the field
+   */
+  static const FfiCode MISSING_FIELD_TYPE_IN_STRUCT = FfiCode(
+    'MISSING_FIELD_TYPE_IN_STRUCT',
+    "Fields in struct classes must have an explicitly declared type of 'int', 'double' or 'Pointer'.",
+    correction: "Try using 'int', 'double' or 'Pointer'.",
+  );
+
+  /**
+   * No parameters.
+   */
+  static const FfiCode MISSING_SIZE_ANNOTATION_CARRAY = FfiCode(
+    'MISSING_SIZE_ANNOTATION_CARRAY',
+    "'Array's must have exactly one 'Array' annotation.",
+    correction: "Try adding a 'Array' annotation.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the type that should be a valid dart:ffi native type.
+   * 1: the name of the function whose invocation depends on this relationship
+   */
+  static const FfiCode MUST_BE_A_NATIVE_FUNCTION_TYPE = FfiCode(
+    'MUST_BE_A_NATIVE_FUNCTION_TYPE',
+    "The type '{0}' given to '{1}' must be a valid 'dart:ffi' native function type.",
+    correction: "Try changing the type to only use members for 'dart:ffi'.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the type that should be a subtype
+   * 1: the supertype that the subtype is compared to
+   * 2: the name of the function whose invocation depends on this relationship
+   */
+  static const FfiCode MUST_BE_A_SUBTYPE = FfiCode(
+    'MUST_BE_A_SUBTYPE',
+    "The type '{0}' must be a subtype of '{1}' for '{2}'.",
+    correction: "Try changing one or both of the type arguments.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the function, method, or constructor having type arguments
+   */
+  static const FfiCode NON_CONSTANT_TYPE_ARGUMENT = FfiCode(
+    'NON_CONSTANT_TYPE_ARGUMENT',
+    "The type arguments to '{0}' must be compile time constants but type parameters are not constants.",
+    correction: "Try changing the type argument to be a constant type.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the type that should be a valid dart:ffi native type.
+   */
+  static const FfiCode NON_NATIVE_FUNCTION_TYPE_ARGUMENT_TO_POINTER = FfiCode(
+    'NON_NATIVE_FUNCTION_TYPE_ARGUMENT_TO_POINTER',
+    "The type argument for the pointer '{0}' must be a 'NativeFunction' in order to use 'asFunction'.",
+    correction: "Try changing the type argument to be a 'NativeFunction'.",
+  );
+
+  /**
+   * No parameters.
+   */
+  static const FfiCode NON_POSITIVE_ARRAY_DIMENSION = FfiCode(
+    'NON_POSITIVE_ARRAY_DIMENSION',
+    "Array dimensions must be positive numbers.",
+    correction: "Try changing the input to a positive number.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the type of the field
+   */
+  static const FfiCode NON_SIZED_TYPE_ARGUMENT = FfiCode(
+    'NON_SIZED_TYPE_ARGUMENT',
+    "Type arguments to '{0}' can't have the type '{1}'. They can only be declared as native integer, 'Float', 'Double', 'Pointer', or subtype of 'Struct' or 'Union'.",
+    correction:
+        "Try using a native integer, 'Float', 'Double', 'Pointer', or subtype of 'Struct' or 'Union'.",
+  );
+
+  /**
+   * No parameters.
+   */
+  static const FfiCode PACKED_ANNOTATION = FfiCode(
+    'PACKED_ANNOTATION',
+    "Structs must have at most one 'Packed' annotation.",
+    correction: "Try removing extra 'Packed' annotations.",
+  );
+
+  /**
+   * No parameters.
+   */
+  static const FfiCode PACKED_ANNOTATION_ALIGNMENT = FfiCode(
+    'PACKED_ANNOTATION_ALIGNMENT',
+    "Only packing to 1, 2, 4, 8, and 16 bytes is supported.",
+    correction:
+        "Try changing the 'Packed' annotation alignment to 1, 2, 4, 8, or 16.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the outer struct
+   * 1: the name of the struct being nested
+   */
+  static const FfiCode PACKED_NESTING_NON_PACKED = FfiCode(
+    'PACKED_NESTING_NON_PACKED',
+    "Nesting the non-packed or less tightly packed struct '{0}' in a packed struct '{1}' is not supported.",
+    correction:
+        "Try packing the nested struct or packing the nested struct more tightly.",
+  );
+
+  /**
+   * No parameters.
+   */
+  static const FfiCode SIZE_ANNOTATION_DIMENSIONS = FfiCode(
+    'SIZE_ANNOTATION_DIMENSIONS',
+    "'Array's must have an 'Array' annotation that matches the dimensions.",
+    correction: "Try adjusting the arguments in the 'Array' annotation.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the subclass
+   * 1: the name of the class being extended, implemented, or mixed in
+   */
+  static const FfiCode SUBTYPE_OF_FFI_CLASS_IN_EXTENDS = FfiCode(
+    'SUBTYPE_OF_FFI_CLASS',
+    "The class '{0}' can't extend '{1}'.",
+    correction: "Try extending 'Struct' or 'Union'.",
+    uniqueName: 'SUBTYPE_OF_FFI_CLASS_IN_EXTENDS',
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the subclass
+   * 1: the name of the class being extended, implemented, or mixed in
+   */
+  static const FfiCode SUBTYPE_OF_FFI_CLASS_IN_IMPLEMENTS = FfiCode(
+    'SUBTYPE_OF_FFI_CLASS',
+    "The class '{0}' can't implement '{1}'.",
+    correction: "Try extending 'Struct' or 'Union'.",
+    uniqueName: 'SUBTYPE_OF_FFI_CLASS_IN_IMPLEMENTS',
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the subclass
+   * 1: the name of the class being extended, implemented, or mixed in
+   */
+  static const FfiCode SUBTYPE_OF_FFI_CLASS_IN_WITH = FfiCode(
+    'SUBTYPE_OF_FFI_CLASS',
+    "The class '{0}' can't mix in '{1}'.",
+    correction: "Try extending 'Struct' or 'Union'.",
+    uniqueName: 'SUBTYPE_OF_FFI_CLASS_IN_WITH',
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the subclass
+   * 1: the name of the class being extended, implemented, or mixed in
+   */
+  static const FfiCode SUBTYPE_OF_STRUCT_CLASS_IN_EXTENDS = FfiCode(
+    'SUBTYPE_OF_STRUCT_CLASS',
+    "The class '{0}' can't extend '{1}' because '{1}' is a subtype of 'Struct' or 'Union'.",
+    correction: "Try extending 'Struct' or 'Union' directly.",
+    uniqueName: 'SUBTYPE_OF_STRUCT_CLASS_IN_EXTENDS',
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the subclass
+   * 1: the name of the class being extended, implemented, or mixed in
+   */
+  static const FfiCode SUBTYPE_OF_STRUCT_CLASS_IN_IMPLEMENTS = FfiCode(
+    'SUBTYPE_OF_STRUCT_CLASS',
+    "The class '{0}' can't implement '{1}' because '{1}' is a subtype of 'Struct' or 'Union'.",
+    correction: "Try extending 'Struct' or 'Union' directly.",
+    uniqueName: 'SUBTYPE_OF_STRUCT_CLASS_IN_IMPLEMENTS',
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the subclass
+   * 1: the name of the class being extended, implemented, or mixed in
+   */
+  static const FfiCode SUBTYPE_OF_STRUCT_CLASS_IN_WITH = FfiCode(
+    'SUBTYPE_OF_STRUCT_CLASS',
+    "The class '{0}' can't mix in '{1}' because '{1}' is a subtype of 'Struct' or 'Union'.",
+    correction: "Try extending 'Struct' or 'Union' directly.",
+    uniqueName: 'SUBTYPE_OF_STRUCT_CLASS_IN_WITH',
+  );
+
+  /// Initialize a newly created error code to have the given [name].
+  const FfiCode(
+    String name,
+    String message, {
+    String? correction,
+    bool hasPublishedDocs = false,
+    bool isUnresolvedIdentifier = false,
+    String? uniqueName,
+  }) : super(
+          correction: correction,
+          hasPublishedDocs: hasPublishedDocs,
+          isUnresolvedIdentifier: isUnresolvedIdentifier,
+          message: message,
+          name: name,
+          uniqueName: 'FfiCode.${uniqueName ?? name}',
+        );
+
+  @override
+  ErrorSeverity get errorSeverity => ErrorType.COMPILE_TIME_ERROR.severity;
+
+  @override
+  ErrorType get type => ErrorType.COMPILE_TIME_ERROR;
+}
diff --git a/pkg/analyzer/lib/src/dart/error/hint_codes.dart b/pkg/analyzer/lib/src/dart/error/hint_codes.dart
index f881032..2ef3842 100644
--- a/pkg/analyzer/lib/src/dart/error/hint_codes.dart
+++ b/pkg/analyzer/lib/src/dart/error/hint_codes.dart
@@ -2,3881 +2,4 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analyzer/error/error.dart';
-import 'package:analyzer/src/error/analyzer_error_code.dart';
-
-// It is hard to visually separate each code's _doc comment_ from its published
-// _documentation comment_ when each is written as an end-of-line comment.
-// ignore_for_file: slash_for_doc_comments
-
-/**
- * The hints and coding recommendations for best practices which are not
- * mentioned in the Dart Language Specification.
- */
-class HintCode extends AnalyzerErrorCode {
-  /**
-   * Parameters:
-   * 0: the name of the actual argument type
-   * 1: the name of the expected function return type
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an invocation of
-  // `Future.catchError` has an argument that is a function whose parameters
-  // aren't compatible with the arguments that will be passed to the function
-  // when it's invoked. The static type of the first argument to `catchError`
-  // is just `Function`, even though the function that is passed in is expected
-  // to have either a single parameter of type `Object` or two parameters of
-  // type `Object` and `StackTrace`.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the closure being
-  // passed to `catchError` doesn't take any parameters, but the function is
-  // required to take at least one parameter:
-  //
-  // ```dart
-  // void f(Future<int> f) {
-  //   f.catchError([!() => 0!]);
-  // }
-  // ```
-  //
-  // The following code produces this diagnostic because the closure being
-  // passed to `catchError` takes three parameters, but it can't have more than
-  // two required parameters:
-  //
-  // ```dart
-  // void f(Future<int> f) {
-  //   f.catchError([!(one, two, three) => 0!]);
-  // }
-  // ```
-  //
-  // The following code produces this diagnostic because even though the closure
-  // being passed to `catchError` takes one parameter, the closure doesn't have
-  // a type that is compatible with `Object`:
-  //
-  // ```dart
-  // void f(Future<int> f) {
-  //   f.catchError([!(String error) => 0!]);
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Change the function being passed to `catchError` so that it has either one
-  // or two required parameters, and the parameters have the required types:
-  //
-  // ```dart
-  // void f(Future<int> f) {
-  //   f.catchError((Object error) => 0);
-  // }
-  // ```
-  static const HintCode ARGUMENT_TYPE_NOT_ASSIGNABLE_TO_ERROR_HANDLER =
-      HintCode(
-          'ARGUMENT_TYPE_NOT_ASSIGNABLE_TO_ERROR_HANDLER',
-          "The argument type '{0}' can't be assigned to the parameter type "
-              "'{1} Function(Object)' or '{1} Function(Object, StackTrace)'.",
-          hasPublishedDocs: true);
-
-  /**
-   * Users should not assign values marked `@doNotStore`.
-   */
-  static const HintCode ASSIGNMENT_OF_DO_NOT_STORE = HintCode(
-      'ASSIGNMENT_OF_DO_NOT_STORE',
-      "'{0}' is marked 'doNotStore' and shouldn't be assigned to a field or top-level variable.",
-      correction: "Try removing the assignment.");
-
-  /**
-   * When the target expression uses '?.' operator, it can be `null`, so all the
-   * subsequent invocations should also use '?.' operator.
-   */
-  static const HintCode CAN_BE_NULL_AFTER_NULL_AWARE = HintCode(
-      'CAN_BE_NULL_AFTER_NULL_AWARE',
-      "The receiver uses '?.', so its value can be null.",
-      correction: "Replace the '.' with a '?.' in the invocation.");
-
-  /**
-   * Dead code is code that is never reached, this can happen for instance if a
-   * statement follows a return statement.
-   *
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when code is found that won't be
-  // executed because execution will never reach the code.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because the invocation of
-  // `print` occurs after the function has returned:
-  //
-  // ```dart
-  // void f() {
-  //   return;
-  //   [!print('here');!]
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the code isn't needed, then remove it:
-  //
-  // ```dart
-  // void f() {
-  //   return;
-  // }
-  // ```
-  //
-  // If the code needs to be executed, then either move the code to a place
-  // where it will be executed:
-  //
-  // ```dart
-  // void f() {
-  //   print('here');
-  //   return;
-  // }
-  // ```
-  //
-  // Or, rewrite the code before it, so that it can be reached:
-  //
-  // ```dart
-  // void f({bool skipPrinting = true}) {
-  //   if (skipPrinting) {
-  //     return;
-  //   }
-  //   print('here');
-  // }
-  // ```
-  static const HintCode DEAD_CODE = HintCode('DEAD_CODE', "Dead code.",
-      correction: "Try removing the code, or "
-          "fixing the code before it so that it can be reached.",
-      hasPublishedDocs: true);
-
-  /**
-   * Dead code is code that is never reached. This case covers cases where the
-   * user has catch clauses after `catch (e)` or `on Object catch (e)`.
-   *
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a `catch` clause is found that
-  // can't be executed because it’s after a `catch` clause of the form
-  // `catch (e)` or `on Object catch (e)`. The first `catch` clause that matches
-  // the thrown object is selected, and both of those forms will match any
-  // object, so no `catch` clauses that follow them will be selected.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic:
-  //
-  // ```dart
-  // void f() {
-  //   try {
-  //   } catch (e) {
-  //   } [!on String {
-  //   }!]
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the clause should be selectable, then move the clause before the general
-  // clause:
-  //
-  // ```dart
-  // void f() {
-  //   try {
-  //   } on String {
-  //   } catch (e) {
-  //   }
-  // }
-  // ```
-  //
-  // If the clause doesn't need to be selectable, then remove it:
-  //
-  // ```dart
-  // void f() {
-  //   try {
-  //   } catch (e) {
-  //   }
-  // }
-  // ```
-  static const HintCode DEAD_CODE_CATCH_FOLLOWING_CATCH = HintCode(
-      'DEAD_CODE_CATCH_FOLLOWING_CATCH',
-      "Dead code: Catch clauses after a 'catch (e)' or an "
-          "'on Object catch (e)' are never reached.",
-      correction:
-          "Try reordering the catch clauses so that they can be reached, or "
-          "removing the unreachable catch clauses.",
-      hasPublishedDocs: true);
-
-  /**
-   * Dead code is code that is never reached. This case covers cases where the
-   * user has an on-catch clause such as `on A catch (e)`, where a supertype of
-   * `A` was already caught.
-   *
-   * Parameters:
-   * 0: name of the subtype
-   * 1: name of the supertype
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a `catch` clause is found that
-  // can't be executed because it is after a `catch` clause that catches either
-  // the same type or a supertype of the clause's type. The first `catch` clause
-  // that matches the thrown object is selected, and the earlier clause always
-  // matches anything matchable by the highlighted clause, so the highlighted
-  // clause will never be selected.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic:
-  //
-  // ```dart
-  // void f() {
-  //   try {
-  //   } on num {
-  //   } [!on int {
-  //   }!]
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the clause should be selectable, then move the clause before the general
-  // clause:
-  //
-  // ```dart
-  // void f() {
-  //   try {
-  //   } on int {
-  //   } on num {
-  //   }
-  // }
-  // ```
-  //
-  // If the clause doesn't need to be selectable, then remove it:
-  //
-  // ```dart
-  // void f() {
-  //   try {
-  //   } on num {
-  //   }
-  // }
-  // ```
-  static const HintCode DEAD_CODE_ON_CATCH_SUBTYPE = HintCode(
-      'DEAD_CODE_ON_CATCH_SUBTYPE',
-      "Dead code: This on-catch block won’t be executed because '{0}' is a "
-          "subtype of '{1}' and hence will have been caught already.",
-      correction:
-          "Try reordering the catch clauses so that this block can be reached, "
-          "or removing the unreachable catch clause.",
-      hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the class `Function` is used in
-  // either the `extends`, `implements`, or `with` clause of a class or mixin.
-  // Using the class `Function` in this way has no semantic value, so it's
-  // effectively dead code.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because `Function` is used as
-  // the superclass of `F`:
-  //
-  // ```dart
-  // class F extends [!Function!] {}
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Remove the class `Function` from whichever clause it's in, and remove the
-  // whole clause if `Function` is the only type in the clause:
-  //
-  // ```dart
-  // class F {}
-  // ```
-  static const HintCode DEPRECATED_EXTENDS_FUNCTION = HintCode(
-      'DEPRECATED_SUBTYPE_OF_FUNCTION', "Extending 'Function' is deprecated.",
-      correction: "Try removing 'Function' from the 'extends' clause.",
-      hasPublishedDocs: true,
-      uniqueName: 'DEPRECATED_EXTENDS_FUNCTION');
-
-  /**
-   * Users should not create a class named `Function` anymore.
-   */
-  static const HintCode DEPRECATED_FUNCTION_CLASS_DECLARATION = HintCode(
-      'DEPRECATED_FUNCTION_CLASS_DECLARATION',
-      "Declaring a class named 'Function' is deprecated.",
-      correction: "Try renaming the class.");
-
-  /**
-   * No parameters.
-   */
-  static const HintCode DEPRECATED_IMPLEMENTS_FUNCTION = HintCode(
-      'DEPRECATED_SUBTYPE_OF_FUNCTION',
-      "Implementing 'Function' has no effect.",
-      correction: "Try removing 'Function' from the 'implements' clause.",
-      hasPublishedDocs: true,
-      uniqueName: 'DEPRECATED_IMPLEMENTS_FUNCTION');
-
-  /**
-   * Parameters:
-   * 0: the name of the member
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a deprecated library or class
-  // member is used in a different package.
-  //
-  // #### Examples
-  //
-  // If the method `m` in the class `C` is annotated with `@deprecated`, then
-  // the following code produces this diagnostic:
-  //
-  // ```dart
-  // void f(C c) {
-  //   c.[!m!]();
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // The documentation for declarations that are annotated with `@deprecated`
-  // should indicate what code to use in place of the deprecated code.
-  static const HintCode DEPRECATED_MEMBER_USE = HintCode(
-      'DEPRECATED_MEMBER_USE', "'{0}' is deprecated and shouldn't be used.",
-      correction: "Try replacing the use of the deprecated member with the "
-          "replacement.",
-      hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the member
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a deprecated library member or
-  // class member is used in the same package in which it's declared.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `x` is deprecated:
-  //
-  // ```dart
-  // @deprecated
-  // var x = 0;
-  // var y = [!x!];
-  // ```
-  //
-  // #### Common fixes
-  //
-  // The fix depends on what's been deprecated and what the replacement is. The
-  // documentation for deprecated declarations should indicate what code to use
-  // in place of the deprecated code.
-  static const HintCode DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE = HintCode(
-      'DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE',
-      "'{0}' is deprecated and shouldn't be used.",
-      correction: "Try replacing the use of the deprecated member with the "
-          "replacement.",
-      hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the member
-   * 1: message details
-   */
-  static const HintCode DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE_WITH_MESSAGE =
-      HintCode(
-    'DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE',
-    "'{0}' is deprecated and shouldn't be used. {1}.",
-    correction: "Try replacing the use of the deprecated member with the "
-        "replacement.",
-    hasPublishedDocs: true,
-    uniqueName: 'DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE_WITH_MESSAGE',
-  );
-
-  /**
-   * Parameters:
-   * 0: the name of the member
-   * 1: message details
-   */
-  static const HintCode DEPRECATED_MEMBER_USE_WITH_MESSAGE = HintCode(
-    'DEPRECATED_MEMBER_USE',
-    "'{0}' is deprecated and shouldn't be used. {1}.",
-    correction: "Try replacing the use of the deprecated member with the "
-        "replacement.",
-    hasPublishedDocs: true,
-    uniqueName: 'DEPRECATED_MEMBER_USE_WITH_MESSAGE',
-  );
-
-  /**
-   * No parameters.
-   */
-  static const HintCode DEPRECATED_MIXIN_FUNCTION = HintCode(
-      'DEPRECATED_SUBTYPE_OF_FUNCTION', "Mixing in 'Function' is deprecated.",
-      correction: "Try removing 'Function' from the 'with' clause.",
-      hasPublishedDocs: true,
-      uniqueName: 'DEPRECATED_MIXIN_FUNCTION');
-
-  /**
-   * Hint to use the ~/ operator.
-   */
-  static const HintCode DIVISION_OPTIMIZATION = HintCode(
-      'DIVISION_OPTIMIZATION',
-      "The operator x ~/ y is more efficient than (x / y).toInt().",
-      correction: "Try re-writing the expression to use the '~/' operator.");
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a name occurs multiple times in
-  // a `hide` clause. Repeating the name is unnecessary.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the name `min` is
-  // hidden more than once:
-  //
-  // ```dart
-  // import 'dart:math' hide min, [!min!];
-  //
-  // var x = pi;
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the name was mistyped in one or more places, then correct the mistyped
-  // names:
-  //
-  // ```dart
-  // import 'dart:math' hide max, min;
-  //
-  // var x = pi;
-  // ```
-  //
-  // If the name wasn't mistyped, then remove the unnecessary name from the
-  // list:
-  //
-  // ```dart
-  // import 'dart:math' hide min;
-  //
-  // var x = pi;
-  // ```
-  static const HintCode DUPLICATE_HIDDEN_NAME =
-      HintCode('DUPLICATE_HIDDEN_NAME', "Duplicate hidden name.",
-          correction: "Try removing the repeated name from the list of hidden "
-              "members.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the diagnostic being ignored
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a diagnostic name appears in an
-  // `ignore` comment, but the diagnostic is already being ignored, either
-  // because it's already included in the same `ignore` comment or because it
-  // appears in an `ignore-in-file` comment.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the diagnostic named
-  // `unused_local_variable` is already being ignored for the whole file so it
-  // doesn't need to be ignored on a specific line:
-  //
-  // ```dart
-  // // ignore_for_file: unused_local_variable
-  // void f() {
-  //   // ignore: [!unused_local_variable!]
-  //   var x = 0;
-  // }
-  // ```
-  //
-  // The following code produces this diagnostic because the diagnostic named
-  // `unused_local_variable` is being ignored twice on the same line:
-  //
-  // ```dart
-  // void f() {
-  //   // ignore: unused_local_variable, [!unused_local_variable!]
-  //   var x = 0;
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Remove the ignore comment, or remove the unnecessary diagnostic name if the
-  // ignore comment is ignoring more than one diagnostic:
-  //
-  // ```dart
-  // // ignore_for_file: unused_local_variable
-  // void f() {
-  //   var x = 0;
-  // }
-  // ```
-  static const HintCode DUPLICATE_IGNORE = HintCode(
-      'DUPLICATE_IGNORE',
-      "The diagnostic '{0}' doesn't need to be ignored here because it's "
-          "already being ignored.",
-      correction:
-          "Try removing the name from the list, or removing the whole comment "
-          "if this is the only name in the list.",
-      hasPublishedDocs: true);
-
-  /**
-   * Duplicate imports.
-   *
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an import directive is found
-  // that is the same as an import before it in the file. The second import
-  // doesn’t add value and should be removed.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic:
-  //
-  // ```dart
-  // import 'package:meta/meta.dart';
-  // import [!'package:meta/meta.dart'!];
-  //
-  // @sealed class C {}
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Remove the unnecessary import:
-  //
-  // ```dart
-  // import 'package:meta/meta.dart';
-  //
-  // @sealed class C {}
-  // ```
-  static const HintCode DUPLICATE_IMPORT = HintCode(
-      'DUPLICATE_IMPORT', "Duplicate import.",
-      correction: "Try removing all but one import of the library.",
-      hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a name occurs multiple times in
-  // a `show` clause. Repeating the name is unnecessary.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the name `min` is shown
-  // more than once:
-  //
-  // ```dart
-  // import 'dart:math' show min, [!min!];
-  //
-  // var x = min(2, min(0, 1));
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the name was mistyped in one or more places, then correct the mistyped
-  // names:
-  //
-  // ```dart
-  // import 'dart:math' show max, min;
-  //
-  // var x = max(2, min(0, 1));
-  // ```
-  //
-  // If the name wasn't mistyped, then remove the unnecessary name from the
-  // list:
-  //
-  // ```dart
-  // import 'dart:math' show min;
-  //
-  // var x = min(2, min(0, 1));
-  // ```
-  static const HintCode DUPLICATE_SHOWN_NAME =
-      HintCode('DUPLICATE_SHOWN_NAME', "Duplicate shown name.",
-          correction: "Try removing the repeated name from the list of shown "
-              "members.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an element in a non-constant set
-  // is the same as a previous element in the same set. If two elements are the
-  // same, then the second value is ignored, which makes having both elements
-  // pointless and likely signals a bug.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the element `1` appears
-  // twice:
-  //
-  // ```dart
-  // const a = 1;
-  // const b = 1;
-  // var s = <int>{a, [!b!]};
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If both elements should be included in the set, then change one of the
-  // elements:
-  //
-  // ```dart
-  // const a = 1;
-  // const b = 2;
-  // var s = <int>{a, b};
-  // ```
-  //
-  // If only one of the elements is needed, then remove the one that isn't
-  // needed:
-  //
-  // ```dart
-  // const a = 1;
-  // var s = <int>{a};
-  // ```
-  //
-  // Note that literal sets preserve the order of their elements, so the choice
-  // of which element to remove might affect the order in which elements are
-  // returned by an iterator.
-  static const HintCode EQUAL_ELEMENTS_IN_SET = HintCode(
-      'EQUAL_ELEMENTS_IN_SET',
-      "Two elements in a set literal shouldn't be equal.",
-      correction: "Change or remove the duplicate element.",
-      hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a key in a non-constant map is
-  // the same as a previous key in the same map. If two keys are the same, then
-  // the second value overwrites the first value, which makes having both pairs
-  // pointless and likely signals a bug.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the keys `a` and `b`
-  // have the same value:
-  //
-  // ```dart
-  // const a = 1;
-  // const b = 1;
-  // var m = <int, String>{a: 'a', [!b!]: 'b'};
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If both entries should be included in the map, then change one of the keys:
-  //
-  // ```dart
-  // const a = 1;
-  // const b = 2;
-  // var m = <int, String>{a: 'a', b: 'b'};
-  // ```
-  //
-  // If only one of the entries is needed, then remove the one that isn't
-  // needed:
-  //
-  // ```dart
-  // const a = 1;
-  // var m = <int, String>{a: 'a'};
-  // ```
-  //
-  // Note that literal maps preserve the order of their entries, so the choice
-  // of which entry to remove might affect the order in which the keys and
-  // values are returned by an iterator.
-  static const HintCode EQUAL_KEYS_IN_MAP = HintCode(
-      'EQUAL_KEYS_IN_MAP', "Two keys in a map literal shouldn't be equal.",
-      correction: "Change or remove the duplicate key.",
-      hasPublishedDocs: true);
-
-  /**
-   * It is a bad practice for a source file in a package "lib" directory
-   * hierarchy to traverse outside that directory hierarchy. For example, a
-   * source file in the "lib" directory should not contain a directive such as
-   * `import '../web/some.dart'` which references a file outside the lib
-   * directory.
-   */
-  static const HintCode FILE_IMPORT_INSIDE_LIB_REFERENCES_FILE_OUTSIDE =
-      HintCode(
-          'FILE_IMPORT_INSIDE_LIB_REFERENCES_FILE_OUTSIDE',
-          "A file in the 'lib' directory shouldn't import a file outside the "
-              "'lib' directory.",
-          correction: "Try removing the import, or "
-              "moving the imported file inside the 'lib' directory.");
-
-  /**
-   * It is a bad practice for a source file ouside a package "lib" directory
-   * hierarchy to traverse into that directory hierarchy. For example, a source
-   * file in the "web" directory should not contain a directive such as
-   * `import '../lib/some.dart'` which references a file inside the lib
-   * directory.
-   */
-  static const HintCode FILE_IMPORT_OUTSIDE_LIB_REFERENCES_FILE_INSIDE =
-      HintCode(
-          'FILE_IMPORT_OUTSIDE_LIB_REFERENCES_FILE_INSIDE',
-          "A file outside the 'lib' directory shouldn't reference a file "
-              "inside the 'lib' directory using a relative path.",
-          correction: "Try using a package: URI instead.");
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a library that declares a
-  // function named `loadLibrary` is imported using a deferred import. A
-  // deferred import introduces an implicit function named `loadLibrary`. This
-  // function is used to load the contents of the deferred library, and the
-  // implicit function hides the explicit declaration in the deferred library.
-  //
-  // For more information, see the language tour's coverage of
-  // [deferred loading](https://dart.dev/guides/language/language-tour#lazily-loading-a-library).
-  //
-  // #### Example
-  //
-  // Given a file (`a.dart`) that defines a function named `loadLibrary`:
-  //
-  // ```dart
-  // %uri="lib/a.dart"
-  // void loadLibrary(Library library) {}
-  //
-  // class Library {}
-  // ```
-  //
-  // The following code produces this diagnostic because the implicit
-  // declaration of `a.loadLibrary` is hiding the explicit declaration of
-  // `loadLibrary` in `a.dart`:
-  //
-  // ```dart
-  // [!import 'a.dart' deferred as a;!]
-  //
-  // void f() {
-  //   a.Library();
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the imported library isn't required to be deferred, then remove the
-  // keyword `deferred`:
-  //
-  // ```dart
-  // import 'a.dart' as a;
-  //
-  // void f() {
-  //   a.Library();
-  // }
-  // ```
-  //
-  // If the imported library is required to be deferred and you need to
-  // reference the imported function, then rename the function in the imported
-  // library:
-  //
-  // ```dart
-  // void populateLibrary(Library library) {}
-  //
-  // class Library {}
-  // ```
-  //
-  // If the imported library is required to be deferred and you don't need to
-  // reference the imported function, then add a `hide` clause:
-  //
-  // ```dart
-  // import 'a.dart' deferred as a hide loadLibrary;
-  //
-  // void f() {
-  //   a.Library();
-  // }
-  // ```
-  //
-  // If type arguments shouldn't be required for the class, then mark the class
-  // with the `@optionalTypeArgs` annotation (from `package:meta`):
-  static const HintCode IMPORT_DEFERRED_LIBRARY_WITH_LOAD_FUNCTION = HintCode(
-      'IMPORT_DEFERRED_LIBRARY_WITH_LOAD_FUNCTION',
-      "The imported library defines a top-level function named 'loadLibrary' "
-          "that is hidden by deferring this library.",
-      correction: "Try changing the import to not be deferred, or "
-          "rename the function in the imported library.",
-      hasPublishedDocs: true);
-
-  /**
-   * https://github.com/dart-lang/sdk/issues/44063
-   */
-  static const HintCode IMPORT_OF_LEGACY_LIBRARY_INTO_NULL_SAFE = HintCode(
-    'IMPORT_OF_LEGACY_LIBRARY_INTO_NULL_SAFE',
-    "The library '{0}' is legacy, and should not be imported into "
-        "a null safe library.",
-    correction: "Try migrating the imported library.",
-  );
-
-  /**
-   * When "strict-inference" is enabled, collection literal types must be
-   * inferred via the context type, or have type arguments.
-   */
-  static const HintCode INFERENCE_FAILURE_ON_COLLECTION_LITERAL = HintCode(
-      'INFERENCE_FAILURE_ON_COLLECTION_LITERAL',
-      "The type argument(s) of '{0}' can't be inferred.",
-      correction: "Use explicit type argument(s) for '{0}'.");
-
-  /**
-   * When "strict-inference" is enabled, types in function invocations must be
-   * inferred via the context type, or have type arguments.
-   */
-  static const HintCode INFERENCE_FAILURE_ON_FUNCTION_INVOCATION = HintCode(
-      'INFERENCE_FAILURE_ON_FUNCTION_INVOCATION',
-      "The type argument(s) of the function '{0}' can't be inferred.",
-      correction: "Use explicit type argument(s) for '{0}'.");
-
-  /**
-   * When "strict-inference" is enabled, recursive local functions, top-level
-   * functions, methods, and function-typed function parameters must all
-   * specify a return type. See the strict-inference resource:
-   *
-   * https://github.com/dart-lang/language/blob/master/resources/type-system/strict-inference.md
-   */
-  static const HintCode INFERENCE_FAILURE_ON_FUNCTION_RETURN_TYPE = HintCode(
-      'INFERENCE_FAILURE_ON_FUNCTION_RETURN_TYPE',
-      "The return type of '{0}' cannot be inferred.",
-      correction: "Declare the return type of '{0}'.");
-
-  /**
-   * When "strict-inference" is enabled, types in function invocations must be
-   * inferred via the context type, or have type arguments.
-   */
-  static const HintCode INFERENCE_FAILURE_ON_GENERIC_INVOCATION = HintCode(
-      'INFERENCE_FAILURE_ON_GENERIC_INVOCATION',
-      "The type argument(s) of the generic function type '{0}' can't be "
-          "inferred.",
-      correction: "Use explicit type argument(s) for '{0}'.");
-
-  /**
-   * When "strict-inference" is enabled, types in instance creation
-   * (constructor calls) must be inferred via the context type, or have type
-   * arguments.
-   */
-  static const HintCode INFERENCE_FAILURE_ON_INSTANCE_CREATION = HintCode(
-      'INFERENCE_FAILURE_ON_INSTANCE_CREATION',
-      "The type argument(s) of the constructor '{0}' can't be inferred.",
-      correction: "Use explicit type argument(s) for '{0}'.");
-
-  /**
-   * When "strict-inference" in enabled, uninitialized variables must be
-   * declared with a specific type.
-   */
-  static const HintCode INFERENCE_FAILURE_ON_UNINITIALIZED_VARIABLE = HintCode(
-      'INFERENCE_FAILURE_ON_UNINITIALIZED_VARIABLE',
-      "The type of {0} can't be inferred without either a type or "
-          "initializer.",
-      correction: "Try specifying the type of the variable.");
-
-  /**
-   * When "strict-inference" in enabled, function parameters must be
-   * declared with a specific type, or inherit a type.
-   */
-  static const HintCode INFERENCE_FAILURE_ON_UNTYPED_PARAMETER = HintCode(
-      'INFERENCE_FAILURE_ON_UNTYPED_PARAMETER',
-      "The type of {0} can't be inferred; a type must be explicitly provided.",
-      correction: "Try specifying the type of the parameter.");
-
-  /**
-   * Parameters:
-   * 0: the name of the annotation
-   * 1: the list of valid targets
-   */
-  static const HintCode INVALID_ANNOTATION_TARGET = HintCode(
-      'INVALID_ANNOTATION_TARGET',
-      "The annotation '{0}' can only be used on {1}");
-
-  /**
-   * This hint is generated anywhere where an element annotated with `@internal`
-   * is exported as a part of a package's public API.
-   *
-   * Parameters:
-   * 0: the name of the element
-   */
-  static const HintCode INVALID_EXPORT_OF_INTERNAL_ELEMENT = HintCode(
-      'INVALID_EXPORT_OF_INTERNAL_ELEMENT',
-      "The member '{0}' can't be exported as a part of a package's public "
-          "API.",
-      correction: "Try using a hide clause to hide '{0}'.");
-
-  /**
-   * This hint is generated anywhere where an element annotated with `@internal`
-   * is exported indirectly as a part of a package's public API.
-   *
-   * Parameters:
-   * 0: the name of the element
-   */
-  static const HintCode INVALID_EXPORT_OF_INTERNAL_ELEMENT_INDIRECTLY = HintCode(
-      'INVALID_EXPORT_OF_INTERNAL_ELEMENT_INDIRECTLY',
-      "The member '{0}' can't be exported as a part of a package's public "
-          "API, but is indirectly exported as part of the signature of '{1}'.",
-      correction: "Try using a hide clause to hide '{0}'.");
-
-  /**
-   * This hint is generated anywhere a @factory annotation is associated with
-   * anything other than a method.
-   */
-  static const HintCode INVALID_FACTORY_ANNOTATION = HintCode(
-      'INVALID_FACTORY_ANNOTATION',
-      "Only methods can be annotated as factories.");
-
-  /**
-   * This hint is generated anywhere a @factory annotation is associated with
-   * a method that does not declare a return type.
-   */
-  static const HintCode INVALID_FACTORY_METHOD_DECL = HintCode(
-      'INVALID_FACTORY_METHOD_DECL',
-      "Factory method '{0}' must have a return type.");
-
-  /**
-   * This hint is generated anywhere a @factory annotation is associated with
-   * a non-abstract method that can return anything other than a newly allocated
-   * object.
-   *
-   * Parameters:
-   * 0: the name of the method
-   */
-  static const HintCode INVALID_FACTORY_METHOD_IMPL = HintCode(
-      'INVALID_FACTORY_METHOD_IMPL',
-      "Factory method '{0}' doesn't return a newly allocated object.");
-
-  /**
-   * This hint is generated anywhere an @immutable annotation is associated with
-   * anything other than a class.
-   */
-  static const HintCode INVALID_IMMUTABLE_ANNOTATION = HintCode(
-      'INVALID_IMMUTABLE_ANNOTATION',
-      "Only classes can be annotated as being immutable.");
-
-  /**
-   * This hint is generated anywhere a @internal annotation is associated with
-   * an element found in a package's public API.
-   */
-  static const HintCode INVALID_INTERNAL_ANNOTATION = HintCode(
-      'INVALID_INTERNAL_ANNOTATION',
-      "Only public elements in a package's private API can be annotated as "
-          "being internal.");
-
-  /// Invalid Dart language version comments don't follow the specification [1].
-  /// If a comment begins with "@dart" or "dart" (letters in any case),
-  /// followed by optional whitespace, followed by optional non-alphanumeric,
-  /// non-whitespace characters, followed by optional whitespace, followed by
-  /// an optional alphabetical character, followed by a digit, then the
-  /// comment is considered to be an attempt at a language version override
-  /// comment. If this attempted language version override comment is not a
-  /// valid language version override comment, it is reported.
-  ///
-  /// [1] https://github.com/dart-lang/language/blob/master/accepted/future-releases/language-versioning/feature-specification.md#individual-library-language-version-override
-  static const HintCode INVALID_LANGUAGE_VERSION_OVERRIDE_AT_SIGN = HintCode(
-    'INVALID_LANGUAGE_VERSION_OVERRIDE',
-    "The Dart language version override number must begin with '@dart'",
-    correction: "Specify a Dart language version override with a comment "
-        "like '// @dart = 2.0'.",
-    uniqueName: 'INVALID_LANGUAGE_VERSION_OVERRIDE_AT_SIGN',
-  );
-
-  /// Invalid Dart language version comments don't follow the specification [1].
-  /// If a comment begins with "@dart" or "dart" (letters in any case),
-  /// followed by optional whitespace, followed by optional non-alphanumeric,
-  /// non-whitespace characters, followed by optional whitespace, followed by
-  /// an optional alphabetical character, followed by a digit, then the
-  /// comment is considered to be an attempt at a language version override
-  /// comment. If this attempted language version override comment is not a
-  /// valid language version override comment, it is reported.
-  ///
-  /// [1] https://github.com/dart-lang/language/blob/master/accepted/future-releases/language-versioning/feature-specification.md#individual-library-language-version-override
-  static const HintCode INVALID_LANGUAGE_VERSION_OVERRIDE_EQUALS = HintCode(
-    'INVALID_LANGUAGE_VERSION_OVERRIDE',
-    "The Dart language version override comment must be specified with "
-        "an '=' character",
-    correction: "Specify a Dart language version override with a comment "
-        "like '// @dart = 2.0'.",
-    uniqueName: 'INVALID_LANGUAGE_VERSION_OVERRIDE_EQUALS',
-  );
-
-  static const HintCode INVALID_LANGUAGE_VERSION_OVERRIDE_GREATER = HintCode(
-    'INVALID_LANGUAGE_VERSION_OVERRIDE',
-    "The language version override can't specify a version greater than the "
-        "latest known language version: {0}.{1}",
-    correction: "Try removing the language version override.",
-    uniqueName: 'INVALID_LANGUAGE_VERSION_OVERRIDE_GREATER',
-  );
-
-  static const HintCode INVALID_LANGUAGE_VERSION_OVERRIDE_LOCATION = HintCode(
-    'INVALID_LANGUAGE_VERSION_OVERRIDE',
-    "The language version override must be before any declaration or "
-        "directive.",
-    correction:
-        "Try moving the language version override to the top of the file.",
-    uniqueName: 'INVALID_LANGUAGE_VERSION_OVERRIDE_LOCATION',
-  );
-
-  /// Invalid Dart language version comments don't follow the specification [1].
-  /// If a comment begins with "@dart" or "dart" (letters in any case),
-  /// followed by optional whitespace, followed by optional non-alphanumeric,
-  /// non-whitespace characters, followed by optional whitespace, followed by
-  /// an optional alphabetical character, followed by a digit, then the
-  /// comment is considered to be an attempt at a language version override
-  /// comment. If this attempted language version override comment is not a
-  /// valid language version override comment, it is reported.
-  ///
-  /// [1] https://github.com/dart-lang/language/blob/master/accepted/future-releases/language-versioning/feature-specification.md#individual-library-language-version-override
-  static const HintCode INVALID_LANGUAGE_VERSION_OVERRIDE_LOWER_CASE = HintCode(
-    'INVALID_LANGUAGE_VERSION_OVERRIDE',
-    "The Dart language version override comment must be specified with "
-        "the word 'dart' in all lower case",
-    correction: "Specify a Dart language version override with a comment "
-        "like '// @dart = 2.0'.",
-    uniqueName: 'INVALID_LANGUAGE_VERSION_OVERRIDE_LOWER_CASE',
-  );
-
-  /// Invalid Dart language version comments don't follow the specification [1].
-  /// If a comment begins with "@dart" or "dart" (letters in any case),
-  /// followed by optional whitespace, followed by optional non-alphanumeric,
-  /// non-whitespace characters, followed by optional whitespace, followed by
-  /// an optional alphabetical character, followed by a digit, then the
-  /// comment is considered to be an attempt at a language version override
-  /// comment. If this attempted language version override comment is not a
-  /// valid language version override comment, it is reported.
-  ///
-  /// [1] https://github.com/dart-lang/language/blob/master/accepted/future-releases/language-versioning/feature-specification.md#individual-library-language-version-override
-  static const HintCode INVALID_LANGUAGE_VERSION_OVERRIDE_NUMBER = HintCode(
-    'INVALID_LANGUAGE_VERSION_OVERRIDE',
-    "The Dart language version override comment must be specified with a "
-        "version number, like '2.0', after the '=' character.",
-    correction: "Specify a Dart language version override with a comment "
-        "like '// @dart = 2.0'.",
-    uniqueName: 'INVALID_LANGUAGE_VERSION_OVERRIDE_NUMBER',
-  );
-
-  /// Invalid Dart language version comments don't follow the specification [1].
-  /// If a comment begins with "@dart" or "dart" (letters in any case),
-  /// followed by optional whitespace, followed by optional non-alphanumeric,
-  /// non-whitespace characters, followed by optional whitespace, followed by
-  /// an optional alphabetical character, followed by a digit, then the
-  /// comment is considered to be an attempt at a language version override
-  /// comment. If this attempted language version override comment is not a
-  /// valid language version override comment, it is reported.
-  ///
-  /// [1] https://github.com/dart-lang/language/blob/master/accepted/future-releases/language-versioning/feature-specification.md#individual-library-language-version-override
-  static const HintCode INVALID_LANGUAGE_VERSION_OVERRIDE_PREFIX = HintCode(
-    'INVALID_LANGUAGE_VERSION_OVERRIDE',
-    "The Dart language version override number can't be prefixed with "
-        "a letter",
-    correction: "Specify a Dart language version override with a comment "
-        "like '// @dart = 2.0'.",
-    uniqueName: 'INVALID_LANGUAGE_VERSION_OVERRIDE_PREFIX',
-  );
-
-  /// Invalid Dart language version comments don't follow the specification [1].
-  /// If a comment begins with "@dart" or "dart" (letters in any case),
-  /// followed by optional whitespace, followed by optional non-alphanumeric,
-  /// non-whitespace characters, followed by optional whitespace, followed by
-  /// an optional alphabetical character, followed by a digit, then the
-  /// comment is considered to be an attempt at a language version override
-  /// comment. If this attempted language version override comment is not a
-  /// valid language version override comment, it is reported.
-  ///
-  /// [1] https://github.com/dart-lang/language/blob/master/accepted/future-releases/language-versioning/feature-specification.md#individual-library-language-version-override
-  static const HintCode INVALID_LANGUAGE_VERSION_OVERRIDE_TRAILING_CHARACTERS =
-      HintCode(
-    'INVALID_LANGUAGE_VERSION_OVERRIDE',
-    "The Dart language version override comment can't be followed by "
-        "any non-whitespace characters",
-    correction: "Specify a Dart language version override with a comment "
-        "like '// @dart = 2.0'.",
-    uniqueName: 'INVALID_LANGUAGE_VERSION_OVERRIDE_TRAILING_CHARACTERS',
-  );
-
-  /// Invalid Dart language version comments don't follow the specification [1].
-  /// If a comment begins with "@dart" or "dart" (letters in any case),
-  /// followed by optional whitespace, followed by optional non-alphanumeric,
-  /// non-whitespace characters, followed by optional whitespace, followed by
-  /// an optional alphabetical character, followed by a digit, then the
-  /// comment is considered to be an attempt at a language version override
-  /// comment. If this attempted language version override comment is not a
-  /// valid language version override comment, it is reported.
-  ///
-  /// [1] https://github.com/dart-lang/language/blob/master/accepted/future-releases/language-versioning/feature-specification.md#individual-library-language-version-override
-  static const HintCode INVALID_LANGUAGE_VERSION_OVERRIDE_TWO_SLASHES =
-      HintCode(
-    'INVALID_LANGUAGE_VERSION_OVERRIDE',
-    'The Dart language version override comment must be specified with '
-        'exactly two slashes.',
-    correction: "Specify a Dart language version override with a comment "
-        "like '// @dart = 2.0'.",
-    uniqueName: 'INVALID_LANGUAGE_VERSION_OVERRIDE_TWO_SLASHES',
-  );
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the `@literal` annotation is
-  // applied to anything other than a const constructor.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because the constructor isn't
-  // a `const` constructor:
-  //
-  // ```dart
-  // import 'package:meta/meta.dart';
-  //
-  // class C {
-  //   [!@literal!]
-  //   C();
-  // }
-  // ```
-  //
-  // The following code produces this diagnostic because `x` isn't a
-  // constructor:
-  //
-  // ```dart
-  // import 'package:meta/meta.dart';
-  //
-  // [!@literal!]
-  // var x;
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the annotation is on a constructor and the constructor should always be
-  // invoked with `const`, when possible, then mark the constructor with the
-  // `const` keyword:
-  //
-  // ```dart
-  // import 'package:meta/meta.dart';
-  //
-  // class C {
-  //   @literal
-  //   const C();
-  // }
-  // ```
-  //
-  // If the constructor can't be marked as `const`, then remove the annotation.
-  //
-  // If the annotation is on anything other than a constructor, then remove the
-  // annotation:
-  //
-  // ```dart
-  // var x;
-  // ```
-  static const HintCode INVALID_LITERAL_ANNOTATION = HintCode(
-      'INVALID_LITERAL_ANNOTATION',
-      "Only const constructors can have the `@literal` annotation.",
-      hasPublishedDocs: true);
-
-  /**
-   * This hint is generated anywhere where `@nonVirtual` annotates something
-   * other than a non-abstract instance member in a class or mixin.
-   *
-   * Parameters:
-   * 0: the name of the member
-   */
-  static const HintCode INVALID_NON_VIRTUAL_ANNOTATION = HintCode(
-      'INVALID_NON_VIRTUAL_ANNOTATION',
-      "The member '{0}' can't be '@nonVirtual' because it isn't a concrete "
-          "instance member.",
-      correction: "Try removing @nonVirtual.");
-
-  /**
-   * This hint is generated anywhere where an instance member annotated with
-   * `@nonVirtual` is overridden in a subclass.
-   *
-   * Parameters:
-   * 0: the name of the member
-   * 1: the name of the defining class
-   */
-  static const HintCode INVALID_OVERRIDE_OF_NON_VIRTUAL_MEMBER = HintCode(
-      'INVALID_OVERRIDE_OF_NON_VIRTUAL_MEMBER',
-      "The member '{0}' is declared non-virtual in '{1}' and can't be "
-          "overridden in subclasses.");
-
-  /**
-   * This hint is generated anywhere where `@required` annotates a named
-   * parameter with a default value.
-   *
-   * Parameters:
-   * 0: the name of the member
-   */
-  static const HintCode INVALID_REQUIRED_NAMED_PARAM = HintCode(
-      'INVALID_REQUIRED_NAMED_PARAM',
-      "The type parameter '{0}' is annotated with @required but only named "
-          "parameters without a default value can be annotated with it.",
-      correction: "Remove @required.");
-
-  /**
-   * This hint is generated anywhere where `@required` annotates an optional
-   * positional parameter.
-   *
-   * Parameters:
-   * 0: the name of the member
-   */
-  static const HintCode INVALID_REQUIRED_OPTIONAL_POSITIONAL_PARAM = HintCode(
-      'INVALID_REQUIRED_OPTIONAL_POSITIONAL_PARAM',
-      "Incorrect use of the annotation @required on the optional "
-          "positional parameter '{0}'. Optional positional parameters "
-          "cannot be required.",
-      correction: "Remove @required.");
-
-  /**
-   * This hint is generated anywhere where `@required` annotates a non named
-   * parameter or a named parameter with default value.
-   *
-   * Parameters:
-   * 0: the name of the member
-   *
-   * Deprecated: Use the more specific [INVALID_REQUIRED_NAMED_PARAM],
-   * [INVALID_REQUIRED_OPTIONAL_POSITION_PARAM], and
-   * [INVALID_REQUIRED_POSITION_PARAM]
-   */
-  @deprecated
-  static const HintCode INVALID_REQUIRED_PARAM = HintCode(
-      'INVALID_REQUIRED_PARAM',
-      "The type parameter '{0}' is annotated with @required but only named "
-          "parameters without default value can be annotated with it.",
-      correction: "Remove @required.");
-
-  /**
-   * This hint is generated anywhere where `@required` annotates a non optional
-   * positional parameter.
-   *
-   * Parameters:
-   * 0: the name of the member
-   */
-  static const HintCode INVALID_REQUIRED_POSITIONAL_PARAM = HintCode(
-      'INVALID_REQUIRED_POSITIONAL_PARAM',
-      "Redundant use of the annotation @required on the required positional "
-          "parameter '{0}'.",
-      correction: "Remove @required.");
-
-  /**
-   * This hint is generated anywhere where `@sealed` annotates something other
-   * than a class.
-   *
-   * Parameters:
-   * 0: the name of the member
-   */
-  static const HintCode INVALID_SEALED_ANNOTATION = HintCode(
-      'INVALID_SEALED_ANNOTATION',
-      "The member '{0}' is annotated with '@sealed' but only classes can be "
-          "annotated with it.",
-      correction: "Remove @sealed.");
-
-  /**
-   * This hint is generated anywhere where a member annotated with `@internal`
-   * is used outside of the package in which it is declared.
-   *
-   * Parameters:
-   * 0: the name of the member
-   */
-  static const HintCode INVALID_USE_OF_INTERNAL_MEMBER = HintCode(
-      'INVALID_USE_OF_INTERNAL_MEMBER',
-      "The member '{0}' can only be used within its package.");
-
-  /**
-   * This hint is generated anywhere where a member annotated with `@protected`
-   * is used outside of an instance member of a subclass.
-   *
-   * Parameters:
-   * 0: the name of the member
-   * 1: the name of the defining class
-   */
-  static const HintCode INVALID_USE_OF_PROTECTED_MEMBER = HintCode(
-      'INVALID_USE_OF_PROTECTED_MEMBER',
-      "The member '{0}' can only be used within instance members of subclasses "
-          "of '{1}'.");
-
-  /**
-   * Parameters:
-   * 0: the name of the member
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an instance member that is
-  // annotated with `visibleForOverriding` is referenced outside the library in
-  // which it's declared for any reason other than to override it.
-  //
-  // #### Example
-  //
-  // Given a file named `a.dart` containing the following declaration:
-  //
-  // ```dart
-  // %uri="lib/a.dart"
-  // import 'package:meta/meta.dart';
-  //
-  // class A {
-  //   @visibleForOverriding
-  //   void a() {}
-  // }
-  // ```
-  //
-  // The following code produces this diagnostic because the method `m` is being
-  // invoked even though the only reason it's public is to allow it to be
-  // overridden:
-  //
-  // ```dart
-  // import 'a.dart';
-  //
-  // class B extends A {
-  //   void b() {
-  //     [!a!]();
-  //   }
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Remove the invalid use of the member.
-  static const HintCode INVALID_USE_OF_VISIBLE_FOR_OVERRIDING_MEMBER = HintCode(
-      'INVALID_USE_OF_VISIBLE_FOR_OVERRIDING_MEMBER',
-      "The member '{0}' can only be used for overriding.");
-
-  /**
-   * This hint is generated anywhere where a member annotated with
-   * `@visibleForTemplate` is used outside of a "template" Dart file.
-   *
-   * Parameters:
-   * 0: the name of the member
-   * 1: the name of the defining class
-   */
-  static const HintCode INVALID_USE_OF_VISIBLE_FOR_TEMPLATE_MEMBER = HintCode(
-      'INVALID_USE_OF_VISIBLE_FOR_TEMPLATE_MEMBER',
-      "The member '{0}' can only be used within '{1}' or a template "
-          "library.");
-
-  /**
-   * This hint is generated anywhere where a member annotated with
-   * `@visibleForTesting` is used outside the defining library, or a test.
-   *
-   * Parameters:
-   * 0: the name of the member
-   * 1: the name of the defining class
-   */
-  static const HintCode INVALID_USE_OF_VISIBLE_FOR_TESTING_MEMBER = HintCode(
-      'INVALID_USE_OF_VISIBLE_FOR_TESTING_MEMBER',
-      "The member '{0}' can only be used within '{1}' or a test.");
-
-  /**
-   * This hint is generated anywhere where a private declaration is annotated
-   * with `@visibleForTemplate` or `@visibleForTesting`.
-   *
-   * Parameters:
-   * 0: the name of the member
-   * 1: the name of the annotation
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when either the `@visibleForTemplate`
-  // or `@visibleForTesting` annotation is applied to a non-public declaration.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic:
-  //
-  // ```dart
-  // import 'package:meta/meta.dart';
-  //
-  // [!@visibleForTesting!]
-  // void _someFunction() {}
-  //
-  // void f() => _someFunction();
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the declaration doesn't need to be used by test code, then remove the
-  // annotation:
-  //
-  // ```dart
-  // void _someFunction() {}
-  //
-  // void f() => _someFunction();
-  // ```
-  //
-  // If it does, then make it public:
-  //
-  // ```dart
-  // import 'package:meta/meta.dart';
-  //
-  // @visibleForTesting
-  // void someFunction() {}
-  //
-  // void f() => someFunction();
-  // ```
-  static const HintCode INVALID_VISIBILITY_ANNOTATION = HintCode(
-      'INVALID_VISIBILITY_ANNOTATION',
-      "The member '{0}' is annotated with '{1}', but this annotation is only "
-          "meaningful on declarations of public members.",
-      hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when anything other than a public
-  // instance member of a class is annotated with `visibleForOverriding`.
-  // Because only public instance members can be overridden outside the defining
-  // library, there's no value to annotating any other declarations.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the annotation is on a
-  // class, and classes can't be overridden:
-  //
-  // ```dart
-  // import 'package:meta/meta.dart';
-  //
-  // [!@visibleForOverriding!]
-  // class C {}
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Remove the annotation:
-  //
-  // ```dart
-  // class C {}
-  // ```
-  static const HintCode INVALID_VISIBLE_FOR_OVERRIDING_ANNOTATION = HintCode(
-    'INVALID_VISIBLE_FOR_OVERRIDING_ANNOTATION',
-    "The declaration '{0}' is annotated with 'visibleForOverriding'. Because "
-        "'{0}' isn't an interface member that could be overridden, the "
-        "annotation is meaningless.",
-  );
-
-  /**
-   * Generate a hint for an element that is annotated with `@JS(...)` whose
-   * library declaration is not similarly annotated.
-   */
-  static const HintCode MISSING_JS_LIB_ANNOTATION = HintCode(
-      'MISSING_JS_LIB_ANNOTATION',
-      "The @JS() annotation can only be used if it is also declared on the "
-          "library directive.",
-      correction: "Try adding the annotation to the library directive.");
-
-  /**
-   * Generate a hint for a constructor, function or method invocation where a
-   * required parameter is missing.
-   *
-   * Parameters:
-   * 0: the name of the parameter
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a method or function with a
-  // named parameter that is annotated as being required is invoked without
-  // providing a value for the parameter.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because the named parameter `x`
-  // is required:
-  //
-  // ```dart
-  // %language=2.9
-  // import 'package:meta/meta.dart';
-  //
-  // void f({@required int x}) {}
-  //
-  // void g() {
-  //   [!f!]();
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Provide the required value:
-  //
-  // ```dart
-  // %language=2.9
-  // import 'package:meta/meta.dart';
-  //
-  // void f({@required int x}) {}
-  //
-  // void g() {
-  //   f(x: 2);
-  // }
-  // ```
-  static const HintCode MISSING_REQUIRED_PARAM = HintCode(
-      'MISSING_REQUIRED_PARAM', "The parameter '{0}' is required.",
-      hasPublishedDocs: true);
-
-  /**
-   * Generate a hint for a constructor, function or method invocation where a
-   * required parameter is missing.
-   *
-   * Parameters:
-   * 0: the name of the parameter
-   * 1: message details
-   */
-  static const HintCode MISSING_REQUIRED_PARAM_WITH_DETAILS = HintCode(
-    'MISSING_REQUIRED_PARAM',
-    "The parameter '{0}' is required. {1}.",
-    hasPublishedDocs: true,
-    uniqueName: 'MISSING_REQUIRED_PARAM_WITH_DETAILS',
-  );
-
-  /**
-   * Parameters:
-   * 0: the name of the declared return type
-   */
-  // #### Description
-  //
-  // Any function or method that doesn't end with either an explicit return or a
-  // throw implicitly returns `null`. This is rarely the desired behavior. The
-  // analyzer produces this diagnostic when it finds an implicit return.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `f` doesn't end with a
-  // return:
-  //
-  // ```dart
-  // %language=2.9
-  // int [!f!](int x) {
-  //   if (x < 0) {
-  //     return 0;
-  //   }
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Add a `return` statement that makes the return value explicit, even if
-  // `null` is the appropriate value.
-  static const HintCode MISSING_RETURN = HintCode(
-      'MISSING_RETURN',
-      "This function has a return type of '{0}', but doesn't end with a "
-          "return statement.",
-      correction: "Try adding a return statement, "
-          "or changing the return type to 'void'.",
-      hasPublishedDocs: true);
-
-  /**
-   * This hint is generated anywhere where a `@sealed` class is used as a
-   * a superclass constraint of a mixin.
-   *
-   * Parameters:
-   * 0: the name of the sealed class
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the superclass constraint of a
-  // mixin is a class from a different package that was marked as `@sealed`.
-  // Classes that are sealed can't be extended, implemented, mixed in, or used
-  // as a superclass constraint.
-  //
-  // #### Examples
-  //
-  // If the package `p` defines a sealed class:
-  //
-  // ```dart
-  // %uri="package:p/p.dart"
-  // import 'package:meta/meta.dart';
-  //
-  // @sealed
-  // class C {}
-  // ```
-  //
-  // Then, the following code, when in a package other than `p`, produces this
-  // diagnostic:
-  //
-  // ```dart
-  // import 'package:p/p.dart';
-  //
-  // [!mixin M on C {}!]
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the classes that use the mixin don't need to be subclasses of the sealed
-  // class, then consider adding a field and delegating to the wrapped instance
-  // of the sealed class.
-  static const HintCode MIXIN_ON_SEALED_CLASS = HintCode(
-      'MIXIN_ON_SEALED_CLASS',
-      "The class '{0}' shouldn't be used as a mixin constraint because it is "
-          "sealed, and any class mixing in this mixin must have '{0}' as a "
-          "superclass.",
-      correction:
-          "Try composing with this class, or refer to its documentation for "
-          "more information.",
-      hasPublishedDocs: true);
-
-  /**
-   * Generate a hint for classes that inherit from classes annotated with
-   * `@immutable` but that are not immutable.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an immutable class defines one
-  // or more instance fields that aren't final. A class is immutable if it's
-  // marked as being immutable using the annotation `@immutable` or if it's a
-  // subclass of an immutable class.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because the field `x` isn't
-  // final:
-  //
-  // ```dart
-  // import 'package:meta/meta.dart';
-  //
-  // @immutable
-  // class [!C!] {
-  //   int x;
-  //
-  //   C(this.x);
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If instances of the class should be immutable, then add the keyword `final`
-  // to all non-final field declarations:
-  //
-  // ```dart
-  // import 'package:meta/meta.dart';
-  //
-  // @immutable
-  // class C {
-  //   final int x;
-  //
-  //   C(this.x);
-  // }
-  // ```
-  //
-  // If the instances of the class should be mutable, then remove the
-  // annotation, or choose a different superclass if the annotation is
-  // inherited:
-  //
-  // ```dart
-  // class C {
-  //   int x;
-  //
-  //   C(this.x);
-  // }
-  // ```
-  static const HintCode MUST_BE_IMMUTABLE = HintCode(
-      'MUST_BE_IMMUTABLE',
-      "This class (or a class that this class inherits from) is marked as "
-          "'@immutable', but one or more of its instance fields aren't final: "
-          "{0}",
-      hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the class declaring the overridden method
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a method that overrides a method
-  // that is annotated as `@mustCallSuper` doesn't invoke the overridden method
-  // as required.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because the method `m` in `B`
-  // doesn't invoke the overridden method `m` in `A`:
-  //
-  // ```dart
-  // import 'package:meta/meta.dart';
-  //
-  // class A {
-  //   @mustCallSuper
-  //   m() {}
-  // }
-  //
-  // class B extends A {
-  //   @override
-  //   [!m!]() {}
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Add an invocation of the overridden method in the overriding method:
-  //
-  // ```dart
-  // import 'package:meta/meta.dart';
-  //
-  // class A {
-  //   @mustCallSuper
-  //   m() {}
-  // }
-  //
-  // class B extends A {
-  //   @override
-  //   m() {
-  //     super.m();
-  //   }
-  // }
-  // ```
-  static const HintCode MUST_CALL_SUPER = HintCode(
-      'MUST_CALL_SUPER',
-      "This method overrides a method annotated as '@mustCallSuper' in '{0}', "
-          "but doesn't invoke the overridden method.",
-      hasPublishedDocs: true);
-
-  /**
-   * Generate a hint for non-const instance creation using a constructor
-   * annotated with `@literal`.
-   *
-   * Parameters:
-   * 0: the name of the class defining the annotated constructor
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a constructor that has the
-  // `@literal` annotation is invoked without using the `const` keyword, but all
-  // of the arguments to the constructor are constants. The annotation indicates
-  // that the constructor should be used to create a constant value whenever
-  // possible.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic:
-  //
-  // ```dart
-  // import 'package:meta/meta.dart';
-  //
-  // class C {
-  //   @literal
-  //   const C();
-  // }
-  //
-  // C f() => [!C()!];
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Add the keyword `const` before the constructor invocation:
-  //
-  // ```dart
-  // import 'package:meta/meta.dart';
-  //
-  // class C {
-  //   @literal
-  //   const C();
-  // }
-  //
-  // void f() => const C();
-  // ```
-  static const HintCode NON_CONST_CALL_TO_LITERAL_CONSTRUCTOR = HintCode(
-      'NON_CONST_CALL_TO_LITERAL_CONSTRUCTOR',
-      "This instance creation must be 'const', because the {0} constructor is "
-          "marked as '@literal'.",
-      correction: "Try adding a 'const' keyword.",
-      hasPublishedDocs: true);
-
-  /**
-   * Generate a hint for non-const instance creation (with the `new` keyword)
-   * using a constructor annotated with `@literal`.
-   *
-   * Parameters:
-   * 0: the name of the class defining the annotated constructor
-   */
-  static const HintCode NON_CONST_CALL_TO_LITERAL_CONSTRUCTOR_USING_NEW =
-      HintCode(
-    'NON_CONST_CALL_TO_LITERAL_CONSTRUCTOR',
-    "This instance creation must be 'const', because the {0} constructor "
-        "is marked as '@literal'.",
-    correction: "Try replacing the 'new' keyword with 'const'.",
-    hasPublishedDocs: true,
-    uniqueName: 'NON_CONST_CALL_TO_LITERAL_CONSTRUCTOR_USING_NEW',
-  );
-
-  /**
-   * Parameters:
-   * 0: the name of the method being invoked
-   * 1: the type argument associated with the method
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when `null` is passed to either the
-  // constructor `Future.value` or the method `Completer.complete` when the type
-  // argument used to create the instance was non-nullable. Even though the type
-  // system can't express this restriction, passing in a `null` results in a
-  // runtime exception.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because `null` is being passed
-  // to the constructor `Future.value` even though the type argument is the
-  // non-nullable type `String`:
-  //
-  // ```dart
-  // Future<String> f() {
-  //   return Future.value([!null!]);
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Pass in a non-null value:
-  //
-  // ```dart
-  // Future<String> f() {
-  //   return Future.value('');
-  // }
-  // ```
-  static const HintCode NULL_ARGUMENT_TO_NON_NULL_TYPE = HintCode(
-      'NULL_ARGUMENT_TO_NON_NULL_TYPE',
-      "'{0}' shouldn't be called with a null argument for the non-nullable "
-          "type argument '{1}'.",
-      correction: 'Try adding a non-null argument.');
-
-  /**
-   * When the left operand of a binary expression uses '?.' operator, it can be
-   * `null`.
-   */
-  static const HintCode NULL_AWARE_BEFORE_OPERATOR = HintCode(
-      'NULL_AWARE_BEFORE_OPERATOR',
-      "The left operand uses '?.', so its value can be null.");
-
-  /**
-   * A condition in a control flow statement could evaluate to `null` because it
-   * uses the null-aware '?.' operator.
-   */
-  static const HintCode NULL_AWARE_IN_CONDITION = HintCode(
-      'NULL_AWARE_IN_CONDITION',
-      "The value of the '?.' operator can be 'null', which isn't appropriate "
-          "in a condition.",
-      correction:
-          "Try replacing the '?.' with a '.', testing the left-hand side for "
-          "null if necessary.");
-
-  /**
-   * A condition in operands of a logical operator could evaluate to `null`
-   * because it uses the null-aware '?.' operator.
-   */
-  static const HintCode NULL_AWARE_IN_LOGICAL_OPERATOR = HintCode(
-      'NULL_AWARE_IN_LOGICAL_OPERATOR',
-      "The value of the '?.' operator can be 'null', which isn't appropriate "
-          "as an operand of a logical operator.");
-
-  /**
-   * This hint indicates that a null literal is null-checked with `!`, but null
-   * is never not null.
-   */
-  static const HintCode NULL_CHECK_ALWAYS_FAILS = HintCode(
-      'NULL_CHECK_ALWAYS_FAILS',
-      "This null-check will always throw an exception because the expression "
-          "will always evaluate to 'null'.");
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the type following `on` in a
-  // `catch` clause is a nullable type. It isn't valid to specify a nullable
-  // type because it isn't possible to catch `null` (because it's a runtime
-  // error to throw `null`).
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the exception type is
-  // specified to allow `null` when `null` can't be thrown:
-  //
-  // ```dart
-  // void f() {
-  //   try {
-  //     // ...
-  //   } on [!FormatException?!] {
-  //   }
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Remove the question mark from the type:
-  //
-  // ```dart
-  // void f() {
-  //   try {
-  //     // ...
-  //   } on FormatException {
-  //   }
-  // }
-  // ```
-  static const HintCode NULLABLE_TYPE_IN_CATCH_CLAUSE = HintCode(
-      'NULLABLE_TYPE_IN_CATCH_CLAUSE',
-      "A potentially nullable type can't be used in an 'on' clause because it "
-          "isn't valid to throw a nullable expression.",
-      correction: "Try using a non-nullable type.",
-      hasPublishedDocs: true);
-
-  /**
-   * A field with the override annotation does not override a getter or setter.
-   *
-   * No parameters.
-   */
-  static const HintCode OVERRIDE_ON_NON_OVERRIDING_FIELD = HintCode(
-    'OVERRIDE_ON_NON_OVERRIDING_MEMBER',
-    "The field doesn't override an inherited getter or setter.",
-    correction: "Try updating this class to match the superclass, or "
-        "removing the override annotation.",
-    hasPublishedDocs: true,
-    uniqueName: 'OVERRIDE_ON_NON_OVERRIDING_FIELD',
-  );
-
-  /**
-   * A getter with the override annotation does not override an existing getter.
-   *
-   * No parameters.
-   */
-  static const HintCode OVERRIDE_ON_NON_OVERRIDING_GETTER = HintCode(
-    'OVERRIDE_ON_NON_OVERRIDING_MEMBER',
-    "The getter doesn't override an inherited getter.",
-    correction: "Try updating this class to match the superclass, or "
-        "removing the override annotation.",
-    hasPublishedDocs: true,
-    uniqueName: 'OVERRIDE_ON_NON_OVERRIDING_GETTER',
-  );
-
-  /**
-   * A method with the override annotation does not override an existing method.
-   *
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a class member is annotated with
-  // the `@override` annotation, but the member isn’t declared in any of the
-  // supertypes of the class.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `m` isn't declared in
-  // any of the supertypes of `C`:
-  //
-  // ```dart
-  // class C {
-  //   @override
-  //   String [!m!]() => '';
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the member is intended to override a member with a different name, then
-  // update the member to have the same name:
-  //
-  // ```dart
-  // class C {
-  //   @override
-  //   String toString() => '';
-  // }
-  // ```
-  //
-  // If the member is intended to override a member that was removed from the
-  // superclass, then consider removing the member from the subclass.
-  //
-  // If the member can't be removed, then remove the annotation.
-  static const HintCode OVERRIDE_ON_NON_OVERRIDING_METHOD = HintCode(
-    'OVERRIDE_ON_NON_OVERRIDING_MEMBER',
-    "The method doesn't override an inherited method.",
-    correction: "Try updating this class to match the superclass, or "
-        "removing the override annotation.",
-    hasPublishedDocs: true,
-    uniqueName: 'OVERRIDE_ON_NON_OVERRIDING_METHOD',
-  );
-
-  /**
-   * A setter with the override annotation does not override an existing setter.
-   *
-   * No parameters.
-   */
-  static const HintCode OVERRIDE_ON_NON_OVERRIDING_SETTER = HintCode(
-    'OVERRIDE_ON_NON_OVERRIDING_MEMBER',
-    "The setter doesn't override an inherited setter.",
-    correction: "Try updating this class to match the superclass, or "
-        "removing the override annotation.",
-    hasPublishedDocs: true,
-    uniqueName: 'OVERRIDE_ON_NON_OVERRIDING_SETTER',
-  );
-
-  /**
-   * It is a bad practice for a package import to reference anything outside the
-   * given package, or more generally, it is bad practice for a package import
-   * to contain a "..". For example, a source file should not contain a
-   * directive such as `import 'package:foo/../some.dart'`.
-   */
-  static const HintCode PACKAGE_IMPORT_CONTAINS_DOT_DOT = HintCode(
-      'PACKAGE_IMPORT_CONTAINS_DOT_DOT',
-      "A package import shouldn't contain '..'.");
-
-  /**
-   * It is not an error to call or tear-off a method, setter, or getter, or to
-   * read or write a field, on a receiver of static type `Never`.
-   * Implementations that provide feedback about dead or unreachable code are
-   * encouraged to indicate that any arguments to the invocation are
-   * unreachable.
-   *
-   * It is not an error to apply an expression of type `Never` in the function
-   * position of a function call. Implementations that provide feedback about
-   * dead or unreachable code are encouraged to indicate that any arguments to
-   * the call are unreachable.
-   *
-   * Parameters: none
-   */
-  static const HintCode RECEIVER_OF_TYPE_NEVER = HintCode(
-      'RECEIVER_OF_TYPE_NEVER',
-      "The receiver is of type 'Never', and will never complete with a value.",
-      correction: "Try checking for throw expressions or type errors in the "
-          "receiver");
-
-  /**
-   * Users should not return values marked `@doNotStore` from functions,
-   * methods or getters not marked `@doNotStore`.
-   */
-  static const HintCode RETURN_OF_DO_NOT_STORE = HintCode(
-      'RETURN_OF_DO_NOT_STORE',
-      "'{0}' is annotated with 'doNotStore' and shouldn't be returned unless "
-          "'{1}' is also annotated.",
-      correction: "Annotate '{1}' with 'doNotStore'.");
-
-  /**
-   * Parameters:
-   * 0: the return type as declared in the return statement
-   * 1: the expected return type as defined by the type of the Future
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an invocation of
-  // `Future.catchError` has an argument whose return type isn't compatible with
-  // the type returned by the instance of `Future`. At runtime, the method
-  // `catchError` attempts to return the value from the callback as the result
-  // of the future, which results in another exception being thrown.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because `future` is declared to
-  // return an `int` while `callback` is declared to return a `String`, and
-  // `String` isn't a subtype of `int`:
-  //
-  // ```dart
-  // void f(Future<int> future, String Function(dynamic, StackTrace) callback) {
-  //   future.catchError([!callback!]);
-  // }
-  // ```
-  //
-  // The following code produces this diagnostic because the closure being
-  // passed to `catchError` returns an `int` while `future` is declared to
-  // return a `String`:
-  //
-  // ```dart
-  // void f(Future<String> future) {
-  //   future.catchError((error, stackTrace) => [!3!]);
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the instance of `Future` is declared correctly, then change the callback
-  // to match:
-  //
-  // ```dart
-  // void f(Future<int> future, int Function(dynamic, StackTrace) callback) {
-  //   future.catchError(callback);
-  // }
-  // ```
-  //
-  // If the declaration of the instance of `Future` is wrong, then change it to
-  // match the callback:
-  //
-  // ```dart
-  // void f(Future<String> future, String Function(dynamic, StackTrace) callback) {
-  //   future.catchError(callback);
-  // }
-  // ```
-  static const HintCode RETURN_OF_INVALID_TYPE_FROM_CATCH_ERROR = HintCode(
-      'INVALID_RETURN_TYPE_FOR_CATCH_ERROR',
-      "A value of type '{0}' can't be returned by the 'onError' handler "
-          "because it must be assignable to '{1}'.",
-      hasPublishedDocs: true,
-      uniqueName: 'RETURN_OF_INVALID_TYPE_FROM_CATCH_ERROR');
-
-  /**
-   * Parameters:
-   * 0: the return type of the function
-   * 1: the expected return type as defined by the type of the Future
-   */
-  static const HintCode RETURN_TYPE_INVALID_FOR_CATCH_ERROR = HintCode(
-      'INVALID_RETURN_TYPE_FOR_CATCH_ERROR',
-      "The return type '{0}' isn't assignable to '{1}', as required by "
-          "'Future.catchError'.",
-      hasPublishedDocs: true,
-      uniqueName: 'RETURN_TYPE_INVALID_FOR_CATCH_ERROR');
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an `as` expression inside a
-  // [constant context][] is found in code that has an SDK constraint whose
-  // lower bound is less than 2.3.2. Using an `as` expression in a
-  // [constant context][] wasn't supported in earlier versions, so this code
-  // won't be able to run against earlier versions of the SDK.
-  //
-  // #### Examples
-  //
-  // Here's an example of a pubspec that defines an SDK constraint with a lower
-  // bound of less than 2.3.2:
-  //
-  // ```yaml
-  // %uri="pubspec.yaml"
-  // environment:
-  //   sdk: '>=2.1.0 <2.4.0'
-  // ```
-  //
-  // In the package that has that pubspec, code like the following produces
-  // this diagnostic:
-  //
-  // ```dart
-  // const num n = 3;
-  // const int i = [!n as int!];
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you don't need to support older versions of the SDK, then you can
-  // increase the SDK constraint to allow the expression to be used:
-  //
-  // ```yaml
-  // environment:
-  //   sdk: '>=2.3.2 <2.4.0'
-  // ```
-  //
-  // If you need to support older versions of the SDK, then either rewrite the
-  // code to not use an `as` expression, or change the code so that the `as`
-  // expression isn't in a [constant context][]:
-  //
-  // ```dart
-  // num x = 3;
-  // int y = x as int;
-  // ```
-  static const HintCode SDK_VERSION_AS_EXPRESSION_IN_CONST_CONTEXT = HintCode(
-      'SDK_VERSION_AS_EXPRESSION_IN_CONST_CONTEXT',
-      "The use of an as expression in a constant expression wasn't "
-          "supported until version 2.3.2, but this code is required to be able "
-          "to run on earlier versions.",
-      correction: "Try updating the SDK constraints.",
-      hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when either the class `Future` or
-  // `Stream` is referenced in a library that doesn't import `dart:async` in
-  // code that has an SDK constraint whose lower bound is less than 2.1.0. In
-  // earlier versions, these classes weren't defined in `dart:core`, so the
-  // import was necessary.
-  //
-  // #### Examples
-  //
-  // Here's an example of a pubspec that defines an SDK constraint with a lower
-  // bound of less than 2.1.0:
-  //
-  // ```yaml
-  // %uri="pubspec.yaml"
-  // environment:
-  //   sdk: '>=2.0.0 <2.4.0'
-  // ```
-  //
-  // In the package that has that pubspec, code like the following produces this
-  // diagnostic:
-  //
-  // ```dart
-  // void f([!Future!] f) {}
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you don't need to support older versions of the SDK, then you can
-  // increase the SDK constraint to allow the classes to be referenced:
-  //
-  // ```yaml
-  // environment:
-  //   sdk: '>=2.1.0 <2.4.0'
-  // ```
-  //
-  // If you need to support older versions of the SDK, then import the
-  // `dart:async` library.
-  //
-  // ```dart
-  // import 'dart:async';
-  //
-  // void f(Future f) {}
-  // ```
-  static const HintCode SDK_VERSION_ASYNC_EXPORTED_FROM_CORE = HintCode(
-      'SDK_VERSION_ASYNC_EXPORTED_FROM_CORE',
-      "The class '{0}' wasn't exported from 'dart:core' until version 2.1, "
-          "but this code is required to be able to run on earlier versions.",
-      correction:
-          "Try either importing 'dart:async' or updating the SDK constraints.",
-      hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when any use of the `&`, `|`, or `^`
-  // operators on the class `bool` inside a [constant context][] is found in
-  // code that has an SDK constraint whose lower bound is less than 2.3.2. Using
-  // these operators in a [constant context][] wasn't supported in earlier
-  // versions, so this code won't be able to run against earlier versions of the
-  // SDK.
-  //
-  // #### Examples
-  //
-  // Here's an example of a pubspec that defines an SDK constraint with a lower
-  // bound of less than 2.3.2:
-  //
-  // ```yaml
-  // %uri="pubspec.yaml"
-  // environment:
-  //   sdk: '>=2.1.0 <2.4.0'
-  // ```
-  //
-  // In the package that has that pubspec, code like the following produces this
-  // diagnostic:
-  //
-  // ```dart
-  // const bool a = true;
-  // const bool b = false;
-  // const bool c = a [!&!] b;
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you don't need to support older versions of the SDK, then you can
-  // increase the SDK constraint to allow the operators to be used:
-  //
-  // ```yaml
-  // environment:
-  //  sdk: '>=2.3.2 <2.4.0'
-  // ```
-  //
-  // If you need to support older versions of the SDK, then either rewrite the
-  // code to not use these operators, or change the code so that the expression
-  // isn't in a [constant context][]:
-  //
-  // ```dart
-  // const bool a = true;
-  // const bool b = false;
-  // bool c = a & b;
-  // ```
-  static const HintCode SDK_VERSION_BOOL_OPERATOR_IN_CONST_CONTEXT = HintCode(
-      'SDK_VERSION_BOOL_OPERATOR_IN_CONST_CONTEXT',
-      "The use of the operator '{0}' for 'bool' operands in a constant context "
-          "wasn't supported until version 2.3.2, but this code is required to "
-          "be able to run on earlier versions.",
-      correction: "Try updating the SDK constraints.",
-      hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   *
-   * There is also a [ParserError.EXPERIMENT_NOT_ENABLED] code which catches
-   * some cases of constructor tearoff features (like `List<int>.filled;`).
-   * Other constructor tearoff cases are not realized until resolution
-   * (like `List.filled;`).
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a constructor tear-off is found
-  // in code that has an SDK constraint whose lower bound is less than 2.15.
-  // Constructor tear-offs weren't supported in earlier versions, so this code
-  // won't be able to run against earlier versions of the SDK.
-  //
-  // #### Example
-  //
-  // Here's an example of a pubspec that defines an SDK constraint with a lower
-  // bound of less than 2.15:
-  //
-  // ```yaml
-  // %uri="pubspec.yaml"
-  // environment:
-  //   sdk: '>=2.9.0 <2.15.0'
-  // ```
-  //
-  // In the package that has that pubspec, code like the following produces this
-  // diagnostic:
-  //
-  // ```dart
-  // %language=2.14
-  // var setConstructor = [!Set.identity!];
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you don't need to support older versions of the SDK, then you can
-  // increase the SDK constraint to allow the operator to be used:
-  //
-  // ```yaml
-  // environment:
-  //   sdk: '>=2.15.0 <2.16.0'
-  // ```
-  //
-  // If you need to support older versions of the SDK, then rewrite the code to
-  // not use constructor tear-offs:
-  //
-  // ```dart
-  // %language=2.14
-  // var setConstructor = () => Set.identity();
-  // ```
-  static const HintCode SDK_VERSION_CONSTRUCTOR_TEAROFFS = HintCode(
-      'SDK_VERSION_CONSTRUCTOR_TEAROFFS',
-      "Tearing off a constructor requires the 'constructor-tearoffs' "
-          "language feature.",
-      correction: "Try updating your pubspec.yaml to set the minimum SDK "
-          "constraint to 2.15 or higher, and running 'pub get'.");
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the operator `==` is used on a
-  // non-primitive type inside a [constant context][] is found in code that has
-  // an SDK constraint whose lower bound is less than 2.3.2. Using this operator
-  // in a [constant context][] wasn't supported in earlier versions, so this
-  // code won't be able to run against earlier versions of the SDK.
-  //
-  // #### Examples
-  //
-  // Here's an example of a pubspec that defines an SDK constraint with a lower
-  // bound of less than 2.3.2:
-  //
-  // ```yaml
-  // %uri="pubspec.yaml"
-  // environment:
-  //   sdk: '>=2.1.0 <2.4.0'
-  // ```
-  //
-  // In the package that has that pubspec, code like the following produces this
-  // diagnostic:
-  //
-  // ```dart
-  // %language=2.9
-  // class C {}
-  // const C a = null;
-  // const C b = null;
-  // const bool same = a [!==!] b;
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you don't need to support older versions of the SDK, then you can
-  // increase the SDK constraint to allow the operator to be used:
-  //
-  // ```yaml
-  // environment:
-  //   sdk: '>=2.3.2 <2.4.0'
-  // ```
-  //
-  // If you need to support older versions of the SDK, then either rewrite the
-  // code to not use the `==` operator, or change the code so that the
-  // expression isn't in a [constant context][]:
-  //
-  // ```dart
-  // %language=2.9
-  // class C {}
-  // const C a = null;
-  // const C b = null;
-  // bool same = a == b;
-  // ```
-  static const HintCode SDK_VERSION_EQ_EQ_OPERATOR_IN_CONST_CONTEXT = HintCode(
-      'SDK_VERSION_EQ_EQ_OPERATOR_IN_CONST_CONTEXT',
-      "Using the operator '==' for non-primitive types wasn't supported "
-          "until version 2.3.2, but this code is required to be able to "
-          "run on earlier versions.",
-      correction: "Try updating the SDK constraints.",
-      hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an extension declaration or an
-  // extension override is found in code that has an SDK constraint whose lower
-  // bound is less than 2.6.0. Using extensions wasn't supported in earlier
-  // versions, so this code won't be able to run against earlier versions of the
-  // SDK.
-  //
-  // #### Examples
-  //
-  // Here's an example of a pubspec that defines an SDK constraint with a lower
-  // bound of less than 2.6.0:
-  //
-  // ```yaml
-  // %uri="pubspec.yaml"
-  // environment:
-  //  sdk: '>=2.4.0 <2.7.0'
-  // ```
-  //
-  // In the package that has that pubspec, code like the following produces
-  // this diagnostic:
-  //
-  // ```dart
-  // [!extension!] E on String {
-  //   void sayHello() {
-  //     print('Hello $this');
-  //   }
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you don't need to support older versions of the SDK, then you can
-  // increase the SDK constraint to allow the syntax to be used:
-  //
-  // ```yaml
-  // environment:
-  //   sdk: '>=2.6.0 <2.7.0'
-  // ```
-  //
-  // If you need to support older versions of the SDK, then rewrite the code to
-  // not make use of extensions. The most common way to do this is to rewrite
-  // the members of the extension as top-level functions (or methods) that take
-  // the value that would have been bound to `this` as a parameter:
-  //
-  // ```dart
-  // void sayHello(String s) {
-  //   print('Hello $s');
-  // }
-  // ```
-  static const HintCode SDK_VERSION_EXTENSION_METHODS = HintCode(
-      'SDK_VERSION_EXTENSION_METHODS',
-      "Extension methods weren't supported until version 2.6.0, "
-          "but this code is required to be able to run on earlier versions.",
-      correction: "Try updating the SDK constraints.",
-      hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the operator `>>>` is used in
-  // code that has an SDK constraint whose lower bound is less than 2.14.0. This
-  // operator wasn't supported in earlier versions, so this code won't be able
-  // to run against earlier versions of the SDK.
-  //
-  // #### Examples
-  //
-  // Here's an example of a pubspec that defines an SDK constraint with a lower
-  // bound of less than 2.14.0:
-  //
-  // ```yaml
-  // %uri="pubspec.yaml"
-  // environment:
-  //  sdk: '>=2.0.0 <2.15.0'
-  // ```
-  //
-  // In the package that has that pubspec, code like the following produces this
-  // diagnostic:
-  //
-  // ```dart
-  // int x = 3 [!>>>!] 4;
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you don't need to support older versions of the SDK, then you can
-  // increase the SDK constraint to allow the operator to be used:
-  //
-  // ```yaml
-  // environment:
-  //   sdk: '>=2.14.0 <2.15.0'
-  // ```
-  //
-  // If you need to support older versions of the SDK, then rewrite the code to
-  // not use the `>>>` operator:
-  //
-  // ```dart
-  // int x = logicalShiftRight(3, 4);
-  //
-  // int logicalShiftRight(int leftOperand, int rightOperand) {
-  //   int divisor = 1 << rightOperand;
-  //   if (divisor == 0) {
-  //     return 0;
-  //   }
-  //   return leftOperand ~/ divisor;
-  // }
-  // ```
-  static const HintCode SDK_VERSION_GT_GT_GT_OPERATOR = HintCode(
-      'SDK_VERSION_GT_GT_GT_OPERATOR',
-      "The operator '>>>' wasn't supported until version 2.14.0, but this code "
-          "is required to be able to run on earlier versions.",
-      correction: "Try updating the SDK constraints.");
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an `is` expression inside a
-  // [constant context][] is found in code that has an SDK constraint whose
-  // lower bound is less than 2.3.2. Using an `is` expression in a
-  // [constant context][] wasn't supported in earlier versions, so this code
-  // won't be able to run against earlier versions of the SDK.
-  //
-  // #### Examples
-  //
-  // Here's an example of a pubspec that defines an SDK constraint with a lower
-  // bound of less than 2.3.2:
-  //
-  // ```yaml
-  // %uri="pubspec.yaml"
-  // environment:
-  //   sdk: '>=2.1.0 <2.4.0'
-  // ```
-  //
-  // In the package that has that pubspec, code like the following produces
-  // this diagnostic:
-  //
-  // ```dart
-  // const Object x = 4;
-  // const y = [!x is int!] ? 0 : 1;
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you don't need to support older versions of the SDK, then you can
-  // increase the SDK constraint to allow the expression to be used:
-  //
-  // ```yaml
-  // environment:
-  //   sdk: '>=2.3.2 <2.4.0'
-  // ```
-  //
-  // If you need to support older versions of the SDK, then either rewrite the
-  // code to not use the `is` operator, or, if that isn't possible, change the
-  // code so that the `is` expression isn't in a
-  // [constant context][]:
-  //
-  // ```dart
-  // const Object x = 4;
-  // var y = x is int ? 0 : 1;
-  // ```
-  static const HintCode SDK_VERSION_IS_EXPRESSION_IN_CONST_CONTEXT = HintCode(
-      'SDK_VERSION_IS_EXPRESSION_IN_CONST_CONTEXT',
-      "The use of an is expression in a constant context wasn't supported "
-          "until version 2.3.2, but this code is required to be able to run on "
-          "earlier versions.",
-      correction: "Try updating the SDK constraints.",
-      hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a reference to the class `Never`
-  // is found in code that has an SDK constraint whose lower bound is less than
-  // 2.12.0. This class wasn't defined in earlier versions, so this code won't
-  // be able to run against earlier versions of the SDK.
-  //
-  // #### Examples
-  //
-  // Here's an example of a pubspec that defines an SDK constraint with a lower
-  // bound of less than 2.12.0:
-  //
-  // ```yaml
-  // %uri="pubspec.yaml"
-  // environment:
-  //   sdk: '>=2.5.0 <2.6.0'
-  // ```
-  //
-  // In the package that has that pubspec, code like the following produces this
-  // diagnostic:
-  //
-  // ```dart
-  // %language=2.9
-  // [!Never!] n;
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you don't need to support older versions of the SDK, then you can
-  // increase the SDK constraint to allow the type to be used:
-  //
-  // ```yaml
-  // environment:
-  //   sdk: '>=2.12.0 <2.13.0'
-  // ```
-  //
-  // If you need to support older versions of the SDK, then rewrite the code to
-  // not reference this class:
-  //
-  // ```dart
-  // dynamic x;
-  // ```
-  static const HintCode SDK_VERSION_NEVER = HintCode(
-      'SDK_VERSION_NEVER',
-      "The type 'Never' wasn't supported until version 2.12.0, but this code "
-          "is required to be able to run on earlier versions.",
-      correction: "Try updating the SDK constraints.",
-      hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a set literal is found in code
-  // that has an SDK constraint whose lower bound is less than 2.2.0. Set
-  // literals weren't supported in earlier versions, so this code won't be able
-  // to run against earlier versions of the SDK.
-  //
-  // #### Examples
-  //
-  // Here's an example of a pubspec that defines an SDK constraint with a lower
-  // bound of less than 2.2.0:
-  //
-  // ```yaml
-  // %uri="pubspec.yaml"
-  // environment:
-  //   sdk: '>=2.1.0 <2.4.0'
-  // ```
-  //
-  // In the package that has that pubspec, code like the following produces this
-  // diagnostic:
-  //
-  // ```dart
-  // var s = [!<int>{}!];
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you don't need to support older versions of the SDK, then you can
-  // increase the SDK constraint to allow the syntax to be used:
-  //
-  // ```yaml
-  // environment:
-  //   sdk: '>=2.2.0 <2.4.0'
-  // ```
-  //
-  // If you do need to support older versions of the SDK, then replace the set
-  // literal with code that creates the set without the use of a literal:
-  //
-  // ```dart
-  // var s = new Set<int>();
-  // ```
-  static const HintCode SDK_VERSION_SET_LITERAL = HintCode(
-      'SDK_VERSION_SET_LITERAL',
-      "Set literals weren't supported until version 2.2, but this code is "
-          "required to be able to run on earlier versions.",
-      correction: "Try updating the SDK constraints.",
-      hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a for, if, or spread element is
-  // found in code that has an SDK constraint whose lower bound is less than
-  // 2.3.0. Using a for, if, or spread element wasn't supported in earlier
-  // versions, so this code won't be able to run against earlier versions of the
-  // SDK.
-  //
-  // #### Examples
-  //
-  // Here's an example of a pubspec that defines an SDK constraint with a lower
-  // bound of less than 2.3.0:
-  //
-  // ```yaml
-  // %uri="pubspec.yaml"
-  // environment:
-  //   sdk: '>=2.2.0 <2.4.0'
-  // ```
-  //
-  // In the package that has that pubspec, code like the following produces
-  // this diagnostic:
-  //
-  // ```dart
-  // var digits = [[!for (int i = 0; i < 10; i++) i!]];
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you don't need to support older versions of the SDK, then you can
-  // increase the SDK constraint to allow the syntax to be used:
-  //
-  // ```yaml
-  // environment:
-  //   sdk: '>=2.3.0 <2.4.0'
-  // ```
-  //
-  // If you need to support older versions of the SDK, then rewrite the code to
-  // not make use of those elements:
-  //
-  // ```dart
-  // var digits = _initializeDigits();
-  //
-  // List<int> _initializeDigits() {
-  //   var digits = <int>[];
-  //   for (int i = 0; i < 10; i++) {
-  //     digits.add(i);
-  //   }
-  //   return digits;
-  // }
-  // ```
-  static const HintCode SDK_VERSION_UI_AS_CODE = HintCode(
-      'SDK_VERSION_UI_AS_CODE',
-      "The for, if, and spread elements weren't supported until version 2.3.0, "
-          "but this code is required to be able to run on earlier versions.",
-      correction: "Try updating the SDK constraints.",
-      hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an if or spread element inside
-  // a [constant context][] is found in code that has an SDK constraint whose
-  // lower bound is less than 2.5.0. Using an if or spread element inside a
-  // [constant context][] wasn't supported in earlier versions, so this code
-  // won't be able to run against earlier versions of the SDK.
-  //
-  // #### Examples
-  //
-  // Here's an example of a pubspec that defines an SDK constraint with a lower
-  // bound of less than 2.5.0:
-  //
-  // ```yaml
-  // %uri="pubspec.yaml"
-  // environment:
-  //   sdk: '>=2.4.0 <2.6.0'
-  // ```
-  //
-  // In the package that has that pubspec, code like the following produces
-  // this diagnostic:
-  //
-  // ```dart
-  // const a = [1, 2];
-  // const b = [[!...a!]];
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you don't need to support older versions of the SDK, then you can
-  // increase the SDK constraint to allow the syntax to be used:
-  //
-  // ```yaml
-  // environment:
-  //   sdk: '>=2.5.0 <2.6.0'
-  // ```
-  //
-  // If you need to support older versions of the SDK, then rewrite the code to
-  // not make use of those elements:
-  //
-  // ```dart
-  // const a = [1, 2];
-  // const b = [1, 2];
-  // ```
-  //
-  // If that isn't possible, change the code so that the element isn't in a
-  // [constant context][]:
-  //
-  // ```dart
-  // const a = [1, 2];
-  // var b = [...a];
-  // ```
-  static const HintCode SDK_VERSION_UI_AS_CODE_IN_CONST_CONTEXT = HintCode(
-      'SDK_VERSION_UI_AS_CODE_IN_CONST_CONTEXT',
-      "The if and spread elements weren't supported in constant expressions "
-          "until version 2.5.0, but this code is required to be able to run on "
-          "earlier versions.",
-      correction: "Try updating the SDK constraints.",
-      hasPublishedDocs: true);
-
-  /**
-   * When "strict-raw-types" is enabled, "raw types" must have type arguments.
-   *
-   * A "raw type" is a type name that does not use inference to fill in missing
-   * type arguments; instead, each type argument is instantiated to its bound.
-   */
-  static const HintCode STRICT_RAW_TYPE = HintCode('STRICT_RAW_TYPE',
-      "The generic type '{0}' should have explicit type arguments but doesn't.",
-      correction: "Use explicit type arguments for '{0}'.");
-
-  /**
-   * Parameters:
-   * 0: the name of the sealed class
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a sealed class (one that either
-  // has the `@sealed` annotation or inherits or mixes in a sealed class) is
-  // referenced in either the `extends`, `implements`, or `with` clause of a
-  // class or mixin declaration if the declaration isn't in the same package as
-  // the sealed class.
-  //
-  // #### Example
-  //
-  // Given a library in a package other than the package being analyzed that
-  // contains the following:
-  //
-  // ```dart
-  // %uri="package:a/a.dart"
-  // import 'package:meta/meta.dart';
-  //
-  // class A {}
-  //
-  // @sealed
-  // class B {}
-  // ```
-  //
-  // The following code produces this diagnostic because `C`, which isn't in the
-  // same package as `B`, is extending the sealed class `B`:
-  //
-  // ```dart
-  // import 'package:a/a.dart';
-  //
-  // [!class C extends B {}!]
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the class doesn't need to be a subtype of the sealed class, then change
-  // the declaration so that it isn't:
-  //
-  // ```dart
-  // import 'package:a/a.dart';
-  //
-  // class B extends A {}
-  // ```
-  //
-  // If the class needs to be a subtype of the sealed class, then either change
-  // the sealed class so that it's no longer sealed or move the subclass into
-  // the same package as the sealed class.
-  static const HintCode SUBTYPE_OF_SEALED_CLASS = HintCode(
-      'SUBTYPE_OF_SEALED_CLASS',
-      "The class '{0}' shouldn't be extended, mixed in, or implemented because "
-          "it's sealed.",
-      correction:
-          "Try composing instead of inheriting, or refer to the documentation "
-          "of '{0}' for more information.",
-      hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when there's a type check (using the
-  // `as` operator) where the type is `Null`. There's only one value whose type
-  // is `Null`, so the code is both more readable and more performant when it
-  // tests for `null` explicitly.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the code is testing to
-  // see whether the value of `s` is `null` by using a type check:
-  //
-  // ```dart
-  // void f(String? s) {
-  //   if ([!s is Null!]) {
-  //     return;
-  //   }
-  //   print(s);
-  // }
-  // ```
-  //
-  // The following code produces this diagnostic because the code is testing to
-  // see whether the value of `s` is something other than `null` by using a type
-  // check:
-  //
-  // ```dart
-  // void f(String? s) {
-  //   if ([!s is! Null!]) {
-  //     print(s);
-  //   }
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Replace the type check with the equivalent comparison with `null`:
-  //
-  // ```dart
-  // void f(String? s) {
-  //   if (s == null) {
-  //     return;
-  //   }
-  //   print(s);
-  // }
-  // ```
-  static const HintCode TYPE_CHECK_IS_NOT_NULL = HintCode(
-      'TYPE_CHECK_WITH_NULL',
-      "Tests for non-null should be done with '!= null'.",
-      correction: "Try replacing the 'is! Null' check with '!= null'.",
-      hasPublishedDocs: true,
-      uniqueName: 'TYPE_CHECK_IS_NOT_NULL');
-
-  /**
-   * No parameters.
-   */
-  static const HintCode TYPE_CHECK_IS_NULL = HintCode(
-      'TYPE_CHECK_WITH_NULL', "Tests for null should be done with '== null'.",
-      correction: "Try replacing the 'is Null' check with '== null'.",
-      hasPublishedDocs: true,
-      uniqueName: 'TYPE_CHECK_IS_NULL');
-
-  /**
-   * Parameters:
-   * 0: the name of the library being imported
-   * 1: the name in the hide clause that isn't defined in the library
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a hide combinator includes a
-  // name that isn't defined by the library being imported.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `dart:math` doesn't
-  // define the name `String`:
-  //
-  // ```dart
-  // import 'dart:math' hide [!String!], max;
-  //
-  // var x = min(0, 1);
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If a different name should be hidden, then correct the name. Otherwise,
-  // remove the name from the list:
-  //
-  // ```dart
-  // import 'dart:math' hide max;
-  //
-  // var x = min(0, 1);
-  // ```
-  static const HintCode UNDEFINED_HIDDEN_NAME = HintCode(
-      'UNDEFINED_HIDDEN_NAME',
-      "The library '{0}' doesn't export a member with the hidden name '{1}'.",
-      correction: "Try removing the name from the list of hidden members.",
-      hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the undefined parameter
-   * 1: the name of the targeted member
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an annotation of the form
-  // `@UnusedResult.unless(parameterDefined: parameterName)` specifies a
-  // parameter name that isn't defined by the annotated function.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the function `f`
-  // doesn't have a parameter named `b`:
-  //
-  // ```dart
-  // import 'package:meta/meta.dart';
-  //
-  // @UseResult.unless(parameterDefined: [!'b'!])
-  // int f([int? a]) => a ?? 0;
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Change the argument named `parameterDefined` to match the name of one of
-  // the parameters to the function:
-  //
-  // ```dart
-  // import 'package:meta/meta.dart';
-  //
-  // @UseResult.unless(parameterDefined: 'a')
-  // int f([int? a]) => a ?? 0;
-  // ```
-  static const HintCode UNDEFINED_REFERENCED_PARAMETER = HintCode(
-      'UNDEFINED_REFERENCED_PARAMETER',
-      "The parameter '{0}' is not defined by '{1}'.");
-
-  /**
-   * Parameters:
-   * 0: the name of the library being imported
-   * 1: the name in the show clause that isn't defined in the library
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a show combinator includes a
-  // name that isn't defined by the library being imported.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `dart:math` doesn't
-  // define the name `String`:
-  //
-  // ```dart
-  // import 'dart:math' show min, [!String!];
-  //
-  // var x = min(0, 1);
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If a different name should be shown, then correct the name. Otherwise,
-  // remove the name from the list:
-  //
-  // ```dart
-  // import 'dart:math' show min;
-  //
-  // var x = min(0, 1);
-  // ```
-  static const HintCode UNDEFINED_SHOWN_NAME = HintCode('UNDEFINED_SHOWN_NAME',
-      "The library '{0}' doesn't export a member with the shown name '{1}'.",
-      correction: "Try removing the name from the list of shown members.",
-      hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the non-diagnostic being ignored
-   */
-  static const HintCode UNIGNORABLE_IGNORE = HintCode(
-      'UNIGNORABLE_IGNORE', "The diagnostic '{0}' can't be ignored.",
-      correction:
-          "Try removing the name from the list, or removing the whole comment "
-          "if this is the only name in the list.");
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the value being cast is already
-  // known to be of the type that it's being cast to.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `n` is already known to
-  // be an `int` as a result of the `is` test:
-  //
-  // ```dart
-  // void f(num n) {
-  //   if (n is int) {
-  //     ([!n as int!]).isEven;
-  //   }
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Remove the unnecessary cast:
-  //
-  // ```dart
-  // void f(num n) {
-  //   if (n is int) {
-  //     n.isEven;
-  //   }
-  // }
-  // ```
-  static const HintCode UNNECESSARY_CAST = HintCode(
-      'UNNECESSARY_CAST', "Unnecessary cast.",
-      correction: "Try removing the cast.", hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the diagnostic being ignored
-   */
-  static const HintCode UNNECESSARY_IGNORE = HintCode(
-      'UNNECESSARY_IGNORE',
-      "The diagnostic '{0}' isn't produced at this location so it doesn't "
-          "need to be ignored.",
-      correction:
-          "Try removing the name from the list, or removing the whole comment "
-          "if this is the only name in the list.");
-
-  /**
-   * Parameters:
-   * 0: the uri that is not necessary
-   * 1: the uri that makes it unnecessary
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an import isn't needed because
-  // all of the names that are imported and referenced within the importing
-  // library are also visible through another import.
-  //
-  // #### Example
-  //
-  // Given a file named `a.dart` that contains the following:
-  //
-  // ```dart
-  // %uri="lib/a.dart"
-  // class A {}
-  // ```
-  //
-  // And, given a file named `b.dart` that contains the following:
-  //
-  // ```dart
-  // %uri="lib/b.dart"
-  // export 'a.dart';
-  //
-  // class B {}
-  // ```
-  //
-  // The following code produces this diagnostic because the class `A`, which is
-  // imported from `a.dart`, is also imported from `b.dart`. Removing the import
-  // of `a.dart` leaves the semantics unchanged:
-  //
-  // ```dart
-  // import [!'a.dart'!];
-  // import 'b.dart';
-  //
-  // void f(A a, B b) {}
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the import isn't needed, then remove it.
-  //
-  // If some of the names imported by this import are intended to be used but
-  // aren't yet, and if those names aren't imported by other imports, then add
-  // the missing references to those names.
-  static const HintCode UNNECESSARY_IMPORT = HintCode(
-      'UNNECESSARY_IMPORT',
-      "The import of '{0}' is unnecessary because all of the used elements are "
-          "also provided by the import of '{1}'.",
-      correction: 'Try removing the import directive.');
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when there's a declaration of
-  // `noSuchMethod`, the only thing the declaration does is invoke the
-  // overridden declaration, and the overridden declaration isn't the
-  // declaration in `Object`.
-  //
-  // Overriding the implementation of `Object`'s `noSuchMethod` (no matter what
-  // the implementation does) signals to the analyzer that it shouldn't flag any
-  // inherited abstract methods that aren't implemented in that class. This
-  // works even if the overriding implementation is inherited from a superclass,
-  // so there's no value to declare it again in a subclass.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the declaration of
-  // `noSuchMethod` in `A` makes the declaration of `noSuchMethod` in `B`
-  // unnecessary:
-  //
-  // ```dart
-  // class A {
-  //   @override
-  //   dynamic noSuchMethod(x) => super.noSuchMethod(x);
-  // }
-  // class B extends A {
-  //   @override
-  //   dynamic [!noSuchMethod!](y) {
-  //     return super.noSuchMethod(y);
-  //   }
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Remove the unnecessary declaration:
-  //
-  // ```dart
-  // class A {
-  //   @override
-  //   dynamic noSuchMethod(x) => super.noSuchMethod(x);
-  // }
-  // class B extends A {}
-  // ```
-  static const HintCode UNNECESSARY_NO_SUCH_METHOD = HintCode(
-      'UNNECESSARY_NO_SUCH_METHOD', "Unnecessary 'noSuchMethod' declaration.",
-      correction: "Try removing the declaration of 'noSuchMethod'.",
-      hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when it finds an equality comparison
-  // (either `==` or `!=`) with one operand of `null` and the other operand
-  // can't be `null`. Such comparisons are always either `true` or `false`, so
-  // they serve no purpose.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because `x` can never be
-  // `null`, so the comparison always evaluates to `true`:
-  //
-  // ```dart
-  // void f(int x) {
-  //   if (x [!!= null!]) {
-  //     print(x);
-  //   }
-  // }
-  // ```
-  //
-  // The following code produces this diagnostic because `x` can never be
-  // `null`, so the comparison always evaluates to `false`:
-  //
-  // ```dart
-  // void f(int x) {
-  //   if (x [!== null!]) {
-  //     throw ArgumentError("x can't be null");
-  //   }
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the other operand should be able to be `null`, then change the type of
-  // the operand:
-  //
-  // ```dart
-  // void f(int? x) {
-  //   if (x != null) {
-  //     print(x);
-  //   }
-  // }
-  // ```
-  //
-  // If the other operand really can't be `null`, then remove the condition:
-  //
-  // ```dart
-  // void f(int x) {
-  //   print(x);
-  // }
-  // ```
-  static const HintCode UNNECESSARY_NULL_COMPARISON_FALSE = HintCode(
-    'UNNECESSARY_NULL_COMPARISON',
-    "The operand can't be null, so the condition is always false.",
-    correction: "Try removing the condition, an enclosing condition, "
-        "or the whole conditional statement.",
-    hasPublishedDocs: true,
-    uniqueName: 'UNNECESSARY_NULL_COMPARISON_FALSE',
-  );
-
-  /**
-   * No parameters.
-   */
-  static const HintCode UNNECESSARY_NULL_COMPARISON_TRUE = HintCode(
-    'UNNECESSARY_NULL_COMPARISON',
-    "The operand can't be null, so the condition is always true.",
-    correction: "Remove the condition.",
-    hasPublishedDocs: true,
-    uniqueName: 'UNNECESSARY_NULL_COMPARISON_TRUE',
-  );
-
-  /**
-   * Parameters:
-   * 0: the name of the type
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when either the type `dynamic` or the
-  // type `Null` is followed by a question mark. Both of these types are
-  // inherently nullable so the question mark doesn't change the semantics.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the question mark
-  // following `dynamic` isn't necessary:
-  //
-  // ```dart
-  // dynamic[!?!] x;
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Remove the unneeded question mark:
-  //
-  // ```dart
-  // dynamic x;
-  // ```
-  static const HintCode UNNECESSARY_QUESTION_MARK = HintCode(
-      'UNNECESSARY_QUESTION_MARK',
-      "The '?' is unnecessary because '{0}' is nullable without it.");
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the value of a type check (using
-  // either `is` or `is!`) is known at compile time.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the test `a is Object?`
-  // is always `true`:
-  //
-  // ```dart
-  // bool f<T>(T a) => [!a is Object?!];
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the type check doesn't check what you intended to check, then change the
-  // test:
-  //
-  // ```dart
-  // bool f<T>(T a) => a is Object;
-  // ```
-  //
-  // If the type check does check what you intended to check, then replace the
-  // type check with its known value or completely remove it:
-  //
-  // ```dart
-  // bool f<T>(T a) => true;
-  // ```
-  static const HintCode UNNECESSARY_TYPE_CHECK_FALSE = HintCode(
-    'UNNECESSARY_TYPE_CHECK',
-    "Unnecessary type check; the result is always 'false'.",
-    correction: "Try correcting the type check, or removing the type check.",
-    hasPublishedDocs: true,
-    uniqueName: 'UNNECESSARY_TYPE_CHECK_FALSE',
-  );
-
-  /**
-   * No parameters.
-   */
-  static const HintCode UNNECESSARY_TYPE_CHECK_TRUE = HintCode(
-    'UNNECESSARY_TYPE_CHECK',
-    "Unnecessary type check; the result is always 'true'.",
-    correction: "Try correcting the type check, or removing the type check.",
-    hasPublishedDocs: true,
-    uniqueName: 'UNNECESSARY_TYPE_CHECK_TRUE',
-  );
-
-  /**
-   * Parameters:
-   * 0: the name of the exception variable
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a `catch` clause is found, and
-  // neither the exception parameter nor the optional stack trace parameter are
-  // used in the `catch` block.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `e` isn't referenced:
-  //
-  // ```dart
-  // void f() {
-  //   try {
-  //     int.parse(';');
-  //   } on FormatException catch ([!e!]) {
-  //     // ignored
-  //   }
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Remove the unused `catch` clause:
-  //
-  // ```dart
-  // void f() {
-  //   try {
-  //     int.parse(';');
-  //   } on FormatException {
-  //     // ignored
-  //   }
-  // }
-  // ```
-  static const HintCode UNUSED_CATCH_CLAUSE = HintCode(
-      'UNUSED_CATCH_CLAUSE',
-      "The exception variable '{0}' isn't used, so the 'catch' clause can be "
-          "removed.",
-      // TODO(brianwilkerson) Split this error code so that we can differentiate
-      // between removing the catch clause and replacing the catch clause with
-      // an on clause.
-      correction: "Try removing the catch clause.",
-      hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the stack trace variable
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the stack trace parameter in a
-  // `catch` clause isn't referenced within the body of the `catch` block.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `stackTrace` isn't
-  // referenced:
-  //
-  // ```dart
-  // void f() {
-  //   try {
-  //     // ...
-  //   } catch (exception, [!stackTrace!]) {
-  //     // ...
-  //   }
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you need to reference the stack trace parameter, then add a reference to
-  // it. Otherwise, remove it:
-  //
-  // ```dart
-  // void f() {
-  //   try {
-  //     // ...
-  //   } catch (exception) {
-  //     // ...
-  //   }
-  // }
-  // ```
-  static const HintCode UNUSED_CATCH_STACK = HintCode('UNUSED_CATCH_STACK',
-      "The stack trace variable '{0}' isn't used and can be removed.",
-      correction: "Try removing the stack trace variable, or using it.",
-      hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name that is declared but not referenced
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a private declaration isn't
-  // referenced in the library that contains the declaration. The following
-  // kinds of declarations are analyzed:
-  // - Private top-level declarations, such as classes, enums, mixins, typedefs,
-  //   top-level variables, and top-level functions
-  // - Private static and instance methods
-  // - Optional parameters of private functions for which a value is never
-  //   passed, even when the parameter doesn't have a private name
-  //
-  // #### Examples
-  //
-  // Assuming that no code in the library references `_C`, the following code
-  // produces this diagnostic:
-  //
-  // ```dart
-  // class [!_C!] {}
-  // ```
-  //
-  // Assuming that no code in the library passes a value for `y` in any
-  // invocation of `_m`, the following code produces this diagnostic:
-  //
-  // ```dart
-  // %language=2.9
-  // class C {
-  //   void _m(int x, [int [!y!]]) {}
-  //
-  //   void n() => _m(0);
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the declaration isn't needed, then remove it:
-  //
-  // ```dart
-  // class C {
-  //   void _m(int x) {}
-  //
-  //   void n() => _m(0);
-  // }
-  // ```
-  //
-  // If the declaration is intended to be used, then add the code to use it.
-  static const HintCode UNUSED_ELEMENT = HintCode(
-      'UNUSED_ELEMENT', "The declaration '{0}' isn't referenced.",
-      correction: "Try removing the declaration of '{0}'.",
-      hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the parameter that is declared but not used
-   */
-  static const HintCode UNUSED_ELEMENT_PARAMETER = HintCode(
-    'UNUSED_ELEMENT',
-    "A value for optional parameter '{0}' isn't ever given.",
-    correction: "Try removing the unused parameter.",
-    hasPublishedDocs: true,
-    uniqueName: 'UNUSED_ELEMENT_PARAMETER',
-  );
-
-  /**
-   * Parameters:
-   * 0: the name of the unused field
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a private field is declared but
-  // never read, even if it's written in one or more places.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because the field
-  // `_originalValue` isn't read anywhere in the library:
-  //
-  // ```dart
-  // class C {
-  //   final String [!_originalValue!];
-  //   final String _currentValue;
-  //
-  //   C(this._originalValue) : _currentValue = _originalValue;
-  //
-  //   String get value => _currentValue;
-  // }
-  // ```
-  //
-  // It might appear that the field `_originalValue` is being read in the
-  // initializer (`_currentValue = _originalValue`), but that is actually a
-  // reference to the parameter of the same name, not a reference to the field.
-  //
-  // #### Common fixes
-  //
-  // If the field isn't needed, then remove it.
-  //
-  // If the field was intended to be used, then add the missing code.
-  static const HintCode UNUSED_FIELD = HintCode(
-      'UNUSED_FIELD', "The value of the field '{0}' isn't used.",
-      correction: "Try removing the field, or using it.",
-      hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the content of the unused import's uri
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an import isn't needed because
-  // none of the names that are imported are referenced within the importing
-  // library.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because nothing defined in
-  // `dart:async` is referenced in the library:
-  //
-  // ```dart
-  // import [!'dart:async'!];
-  //
-  // void main() {}
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the import isn't needed, then remove it.
-  //
-  // If some of the imported names are intended to be used, then add the missing
-  // code.
-  static const HintCode UNUSED_IMPORT = HintCode(
-      'UNUSED_IMPORT', "Unused import: '{0}'.",
-      correction: "Try removing the import directive.", hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the label that isn't used
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a label that isn't used is
-  // found.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because the label `loop` isn't
-  // referenced anywhere in the method:
-  //
-  // ```dart
-  // void f(int limit) {
-  //   [!loop:!] for (int i = 0; i < limit; i++) {
-  //     print(i);
-  //   }
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the label isn't needed, then remove it:
-  //
-  // ```dart
-  // void f(int limit) {
-  //   for (int i = 0; i < limit; i++) {
-  //     print(i);
-  //   }
-  // }
-  // ```
-  //
-  // If the label is needed, then use it:
-  //
-  // ```dart
-  // void f(int limit) {
-  //   loop: for (int i = 0; i < limit; i++) {
-  //     print(i);
-  //     break loop;
-  //   }
-  // }
-  // ```
-  // TODO(brianwilkerson) Highlight the identifier without the colon.
-  static const HintCode UNUSED_LABEL =
-      HintCode('UNUSED_LABEL', "The label '{0}' isn't used.",
-          correction: "Try removing the label, or "
-              "using it in either a 'break' or 'continue' statement.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the unused variable
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a local variable is declared but
-  // never read, even if it's written in one or more places.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because the value of `count` is
-  // never read:
-  //
-  // ```dart
-  // void main() {
-  //   int [!count!] = 0;
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the variable isn't needed, then remove it.
-  //
-  // If the variable was intended to be used, then add the missing code.
-  static const HintCode UNUSED_LOCAL_VARIABLE = HintCode(
-      'UNUSED_LOCAL_VARIABLE',
-      "The value of the local variable '{0}' isn't used.",
-      correction: "Try removing the variable or using it.",
-      hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the annotated method, property or function
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a function annotated with
-  // `useResult` is invoked, and the value returned by that function isn't used.
-  // The value is considered to be used if a member of the value is invoked, if
-  // the value is passed to another function, or if the value is assigned to a
-  // variable or field.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the invocation of
-  // `c.a()` isn't used, even though the method `a` is annotated with
-  // `useResult`:
-  //
-  // ```dart
-  // import 'package:meta/meta.dart';
-  //
-  // class C {
-  //   @useResult
-  //   int a() => 0;
-  //
-  //   int b() => 0;
-  // }
-  //
-  // void f(C c) {
-  //   c.[!a!]();
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you intended to invoke the annotated function, then use the value that
-  // was returned:
-  //
-  // ```dart
-  // import 'package:meta/meta.dart';
-  //
-  // class C {
-  //   @useResult
-  //   int a() => 0;
-  //
-  //   int b() => 0;
-  // }
-  //
-  // void f(C c) {
-  //   print(c.a());
-  // }
-  // ```
-  //
-  // If you intended to invoke a different function, then correct the name of
-  // the function being invoked:
-  //
-  // ```dart
-  // import 'package:meta/meta.dart';
-  //
-  // class C {
-  //   @useResult
-  //   int a() => 0;
-  //
-  //   int b() => 0;
-  // }
-  //
-  // void f(C c) {
-  //   c.b();
-  // }
-  // ```
-  static const HintCode UNUSED_RESULT = HintCode(
-    'UNUSED_RESULT',
-    "The value of '{0}' should be used.",
-    correction: "Try using the result by invoking a member, passing it to a "
-        "function, or returning it from this function.",
-    hasPublishedDocs: false,
-  );
-
-  /**
-   * The result of invoking a method, property, or function annotated with
-   * `@useResult` must be used (assigned, passed to a function as an argument,
-   * or returned by a function).
-   *
-   * Parameters:
-   * 0: the name of the annotated method, property or function
-   * 1: message details
-   */
-  static const HintCode UNUSED_RESULT_WITH_MESSAGE = HintCode(
-    'UNUSED_RESULT',
-    "'{0}' should be used. {1}.",
-    // todo(pq): consider passing in correction details:
-    // https://github.com/dart-lang/sdk/issues/46066
-    correction:
-        "Try using the result by invoking a member, passing it to a function, "
-        "or returning it from this function.",
-    hasPublishedDocs: false,
-    uniqueName: 'UNUSED_RESULT_WITH_MESSAGE',
-  );
-
-  /**
-   * Parameters:
-   * 0: the name that is shown but not used
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a show combinator includes a
-  // name that isn't used within the library. Because it isn't referenced, the
-  // name can be removed.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because the function `max`
-  // isn't used:
-  //
-  // ```dart
-  // import 'dart:math' show min, [!max!];
-  //
-  // var x = min(0, 1);
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Either use the name or remove it:
-  //
-  // ```dart
-  // import 'dart:math' show min;
-  //
-  // var x = min(0, 1);
-  // ```
-  static const HintCode UNUSED_SHOWN_NAME = HintCode(
-      'UNUSED_SHOWN_NAME', "The name {0} is shown, but isn’t used.",
-      correction: "Try removing the name from the list of shown members.",
-      hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a library is imported using the
-  // `dart-ext` scheme.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the native library `x`
-  // is being imported using a scheme of `dart-ext`:
-  //
-  // ```dart
-  // [!import 'dart-ext:x';!]
-  // int f() native 'string';
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Rewrite the code to use `dart:ffi` as a way of invoking the contents of the
-  // native library.
-  static const HintCode USE_OF_NATIVE_EXTENSION = HintCode(
-      'USE_OF_NATIVE_EXTENSION',
-      "Dart native extensions are deprecated and aren’t available in Dart 2.15.",
-      correction: "Try using dart:ffi for C interop.");
-
-  /**
-   * Initialize a newly created error code to have the given [name]. The message
-   * associated with the error will be created from the given [message]
-   * template. The correction associated with the error will be created from the
-   * given [correction] template.
-   */
-  const HintCode(
-    String name,
-    String message, {
-    String? correction,
-    bool hasPublishedDocs = false,
-    String? uniqueName,
-  }) : super(
-          correction: correction,
-          hasPublishedDocs: hasPublishedDocs,
-          message: message,
-          name: name,
-          uniqueName: 'HintCode.${uniqueName ?? name}',
-        );
-
-  @override
-  ErrorSeverity get errorSeverity => ErrorType.HINT.severity;
-
-  @override
-  ErrorType get type => ErrorType.HINT;
-}
+export 'package:analyzer/src/dart/error/hint_codes.g.dart';
diff --git a/pkg/analyzer/lib/src/dart/error/hint_codes.g.dart b/pkg/analyzer/lib/src/dart/error/hint_codes.g.dart
new file mode 100644
index 0000000..f1f850a
--- /dev/null
+++ b/pkg/analyzer/lib/src/dart/error/hint_codes.g.dart
@@ -0,0 +1,3916 @@
+// Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+// THIS FILE IS GENERATED. DO NOT EDIT.
+//
+// Instead modify 'pkg/analyzer/messages.yaml' and run
+// 'dart pkg/analyzer/tool/messages/generate.dart' to update.
+
+import "package:analyzer/error/error.dart";
+import "package:analyzer/src/error/analyzer_error_code.dart";
+
+// It is hard to visually separate each code's _doc comment_ from its published
+// _documentation comment_ when each is written as an end-of-line comment.
+// ignore_for_file: slash_for_doc_comments
+
+class HintCode extends AnalyzerErrorCode {
+  /**
+   * Parameters:
+   * 0: the name of the actual argument type
+   * 1: the name of the expected function return type
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an invocation of
+  // `Future.catchError` has an argument that is a function whose parameters
+  // aren't compatible with the arguments that will be passed to the function
+  // when it's invoked. The static type of the first argument to `catchError`
+  // is just `Function`, even though the function that is passed in is expected
+  // to have either a single parameter of type `Object` or two parameters of
+  // type `Object` and `StackTrace`.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the closure being
+  // passed to `catchError` doesn't take any parameters, but the function is
+  // required to take at least one parameter:
+  //
+  // ```dart
+  // void f(Future<int> f) {
+  //   f.catchError([!() => 0!]);
+  // }
+  // ```
+  //
+  // The following code produces this diagnostic because the closure being
+  // passed to `catchError` takes three parameters, but it can't have more than
+  // two required parameters:
+  //
+  // ```dart
+  // void f(Future<int> f) {
+  //   f.catchError([!(one, two, three) => 0!]);
+  // }
+  // ```
+  //
+  // The following code produces this diagnostic because even though the closure
+  // being passed to `catchError` takes one parameter, the closure doesn't have
+  // a type that is compatible with `Object`:
+  //
+  // ```dart
+  // void f(Future<int> f) {
+  //   f.catchError([!(String error) => 0!]);
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Change the function being passed to `catchError` so that it has either one
+  // or two required parameters, and the parameters have the required types:
+  //
+  // ```dart
+  // void f(Future<int> f) {
+  //   f.catchError((Object error) => 0);
+  // }
+  // ```
+  static const HintCode ARGUMENT_TYPE_NOT_ASSIGNABLE_TO_ERROR_HANDLER =
+      HintCode(
+    'ARGUMENT_TYPE_NOT_ASSIGNABLE_TO_ERROR_HANDLER',
+    "The argument type '{0}' can't be assigned to the parameter type '{1} Function(Object)' or '{1} Function(Object, StackTrace)'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Users should not assign values marked `@doNotStore`.
+   */
+  static const HintCode ASSIGNMENT_OF_DO_NOT_STORE = HintCode(
+    'ASSIGNMENT_OF_DO_NOT_STORE',
+    "'{0}' is marked 'doNotStore' and shouldn't be assigned to a field or top-level variable.",
+    correction: "Try removing the assignment.",
+  );
+
+  /**
+   * When the target expression uses '?.' operator, it can be `null`, so all the
+   * subsequent invocations should also use '?.' operator.
+   */
+  static const HintCode CAN_BE_NULL_AFTER_NULL_AWARE = HintCode(
+    'CAN_BE_NULL_AFTER_NULL_AWARE',
+    "The receiver uses '?.', so its value can be null.",
+    correction: "Replace the '.' with a '?.' in the invocation.",
+  );
+
+  /**
+   * Dead code is code that is never reached, this can happen for instance if a
+   * statement follows a return statement.
+   *
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when code is found that won't be
+  // executed because execution will never reach the code.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because the invocation of
+  // `print` occurs after the function has returned:
+  //
+  // ```dart
+  // void f() {
+  //   return;
+  //   [!print('here');!]
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the code isn't needed, then remove it:
+  //
+  // ```dart
+  // void f() {
+  //   return;
+  // }
+  // ```
+  //
+  // If the code needs to be executed, then either move the code to a place
+  // where it will be executed:
+  //
+  // ```dart
+  // void f() {
+  //   print('here');
+  //   return;
+  // }
+  // ```
+  //
+  // Or, rewrite the code before it, so that it can be reached:
+  //
+  // ```dart
+  // void f({bool skipPrinting = true}) {
+  //   if (skipPrinting) {
+  //     return;
+  //   }
+  //   print('here');
+  // }
+  // ```
+  static const HintCode DEAD_CODE = HintCode(
+    'DEAD_CODE',
+    "Dead code.",
+    correction:
+        "Try removing the code, or fixing the code before it so that it can be reached.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Dead code is code that is never reached. This case covers cases where the
+   * user has catch clauses after `catch (e)` or `on Object catch (e)`.
+   *
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a `catch` clause is found that
+  // can't be executed because it’s after a `catch` clause of the form
+  // `catch (e)` or `on Object catch (e)`. The first `catch` clause that matches
+  // the thrown object is selected, and both of those forms will match any
+  // object, so no `catch` clauses that follow them will be selected.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic:
+  //
+  // ```dart
+  // void f() {
+  //   try {
+  //   } catch (e) {
+  //   } [!on String {
+  //   }!]
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the clause should be selectable, then move the clause before the general
+  // clause:
+  //
+  // ```dart
+  // void f() {
+  //   try {
+  //   } on String {
+  //   } catch (e) {
+  //   }
+  // }
+  // ```
+  //
+  // If the clause doesn't need to be selectable, then remove it:
+  //
+  // ```dart
+  // void f() {
+  //   try {
+  //   } catch (e) {
+  //   }
+  // }
+  // ```
+  static const HintCode DEAD_CODE_CATCH_FOLLOWING_CATCH = HintCode(
+    'DEAD_CODE_CATCH_FOLLOWING_CATCH',
+    "Dead code: Catch clauses after a 'catch (e)' or an 'on Object catch (e)' are never reached.",
+    correction:
+        "Try reordering the catch clauses so that they can be reached, or removing the unreachable catch clauses.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Dead code is code that is never reached. This case covers cases where the
+   * user has an on-catch clause such as `on A catch (e)`, where a supertype of
+   * `A` was already caught.
+   *
+   * Parameters:
+   * 0: name of the subtype
+   * 1: name of the supertype
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a `catch` clause is found that
+  // can't be executed because it is after a `catch` clause that catches either
+  // the same type or a supertype of the clause's type. The first `catch` clause
+  // that matches the thrown object is selected, and the earlier clause always
+  // matches anything matchable by the highlighted clause, so the highlighted
+  // clause will never be selected.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic:
+  //
+  // ```dart
+  // void f() {
+  //   try {
+  //   } on num {
+  //   } [!on int {
+  //   }!]
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the clause should be selectable, then move the clause before the general
+  // clause:
+  //
+  // ```dart
+  // void f() {
+  //   try {
+  //   } on int {
+  //   } on num {
+  //   }
+  // }
+  // ```
+  //
+  // If the clause doesn't need to be selectable, then remove it:
+  //
+  // ```dart
+  // void f() {
+  //   try {
+  //   } on num {
+  //   }
+  // }
+  // ```
+  static const HintCode DEAD_CODE_ON_CATCH_SUBTYPE = HintCode(
+    'DEAD_CODE_ON_CATCH_SUBTYPE',
+    "Dead code: This on-catch block won’t be executed because '{0}' is a subtype of '{1}' and hence will have been caught already.",
+    correction:
+        "Try reordering the catch clauses so that this block can be reached, or removing the unreachable catch clause.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the class `Function` is used in
+  // either the `extends`, `implements`, or `with` clause of a class or mixin.
+  // Using the class `Function` in this way has no semantic value, so it's
+  // effectively dead code.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because `Function` is used as
+  // the superclass of `F`:
+  //
+  // ```dart
+  // class F extends [!Function!] {}
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Remove the class `Function` from whichever clause it's in, and remove the
+  // whole clause if `Function` is the only type in the clause:
+  //
+  // ```dart
+  // class F {}
+  // ```
+  static const HintCode DEPRECATED_EXTENDS_FUNCTION = HintCode(
+    'DEPRECATED_SUBTYPE_OF_FUNCTION',
+    "Extending 'Function' is deprecated.",
+    correction: "Try removing 'Function' from the 'extends' clause.",
+    hasPublishedDocs: true,
+    uniqueName: 'DEPRECATED_EXTENDS_FUNCTION',
+  );
+
+  /**
+   * Users should not create a class named `Function` anymore.
+   */
+  static const HintCode DEPRECATED_FUNCTION_CLASS_DECLARATION = HintCode(
+    'DEPRECATED_FUNCTION_CLASS_DECLARATION',
+    "Declaring a class named 'Function' is deprecated.",
+    correction: "Try renaming the class.",
+  );
+
+  /**
+   * No parameters.
+   */
+  static const HintCode DEPRECATED_IMPLEMENTS_FUNCTION = HintCode(
+    'DEPRECATED_SUBTYPE_OF_FUNCTION',
+    "Implementing 'Function' has no effect.",
+    correction: "Try removing 'Function' from the 'implements' clause.",
+    hasPublishedDocs: true,
+    uniqueName: 'DEPRECATED_IMPLEMENTS_FUNCTION',
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the member
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a deprecated library or class
+  // member is used in a different package.
+  //
+  // #### Examples
+  //
+  // If the method `m` in the class `C` is annotated with `@deprecated`, then
+  // the following code produces this diagnostic:
+  //
+  // ```dart
+  // void f(C c) {
+  //   c.[!m!]();
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // The documentation for declarations that are annotated with `@deprecated`
+  // should indicate what code to use in place of the deprecated code.
+  static const HintCode DEPRECATED_MEMBER_USE = HintCode(
+    'DEPRECATED_MEMBER_USE',
+    "'{0}' is deprecated and shouldn't be used.",
+    correction:
+        "Try replacing the use of the deprecated member with the replacement.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the member
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a deprecated library member or
+  // class member is used in the same package in which it's declared.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `x` is deprecated:
+  //
+  // ```dart
+  // @deprecated
+  // var x = 0;
+  // var y = [!x!];
+  // ```
+  //
+  // #### Common fixes
+  //
+  // The fix depends on what's been deprecated and what the replacement is. The
+  // documentation for deprecated declarations should indicate what code to use
+  // in place of the deprecated code.
+  static const HintCode DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE = HintCode(
+    'DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE',
+    "'{0}' is deprecated and shouldn't be used.",
+    correction:
+        "Try replacing the use of the deprecated member with the replacement.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the member
+   * 1: message details
+   */
+  static const HintCode DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE_WITH_MESSAGE =
+      HintCode(
+    'DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE',
+    "'{0}' is deprecated and shouldn't be used. {1}.",
+    correction:
+        "Try replacing the use of the deprecated member with the replacement.",
+    hasPublishedDocs: true,
+    uniqueName: 'DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE_WITH_MESSAGE',
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the member
+   * 1: message details
+   */
+  static const HintCode DEPRECATED_MEMBER_USE_WITH_MESSAGE = HintCode(
+    'DEPRECATED_MEMBER_USE',
+    "'{0}' is deprecated and shouldn't be used. {1}.",
+    correction:
+        "Try replacing the use of the deprecated member with the replacement.",
+    hasPublishedDocs: true,
+    uniqueName: 'DEPRECATED_MEMBER_USE_WITH_MESSAGE',
+  );
+
+  /**
+   * No parameters.
+   */
+  static const HintCode DEPRECATED_MIXIN_FUNCTION = HintCode(
+    'DEPRECATED_SUBTYPE_OF_FUNCTION',
+    "Mixing in 'Function' is deprecated.",
+    correction: "Try removing 'Function' from the 'with' clause.",
+    hasPublishedDocs: true,
+    uniqueName: 'DEPRECATED_MIXIN_FUNCTION',
+  );
+
+  /**
+   * Hint to use the ~/ operator.
+   */
+  static const HintCode DIVISION_OPTIMIZATION = HintCode(
+    'DIVISION_OPTIMIZATION',
+    "The operator x ~/ y is more efficient than (x / y).toInt().",
+    correction: "Try re-writing the expression to use the '~/' operator.",
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a name occurs multiple times in
+  // a `hide` clause. Repeating the name is unnecessary.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the name `min` is
+  // hidden more than once:
+  //
+  // ```dart
+  // import 'dart:math' hide min, [!min!];
+  //
+  // var x = pi;
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the name was mistyped in one or more places, then correct the mistyped
+  // names:
+  //
+  // ```dart
+  // import 'dart:math' hide max, min;
+  //
+  // var x = pi;
+  // ```
+  //
+  // If the name wasn't mistyped, then remove the unnecessary name from the
+  // list:
+  //
+  // ```dart
+  // import 'dart:math' hide min;
+  //
+  // var x = pi;
+  // ```
+  static const HintCode DUPLICATE_HIDDEN_NAME = HintCode(
+    'DUPLICATE_HIDDEN_NAME',
+    "Duplicate hidden name.",
+    correction:
+        "Try removing the repeated name from the list of hidden members.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the diagnostic being ignored
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a diagnostic name appears in an
+  // `ignore` comment, but the diagnostic is already being ignored, either
+  // because it's already included in the same `ignore` comment or because it
+  // appears in an `ignore-in-file` comment.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the diagnostic named
+  // `unused_local_variable` is already being ignored for the whole file so it
+  // doesn't need to be ignored on a specific line:
+  //
+  // ```dart
+  // // ignore_for_file: unused_local_variable
+  // void f() {
+  //   // ignore: [!unused_local_variable!]
+  //   var x = 0;
+  // }
+  // ```
+  //
+  // The following code produces this diagnostic because the diagnostic named
+  // `unused_local_variable` is being ignored twice on the same line:
+  //
+  // ```dart
+  // void f() {
+  //   // ignore: unused_local_variable, [!unused_local_variable!]
+  //   var x = 0;
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Remove the ignore comment, or remove the unnecessary diagnostic name if the
+  // ignore comment is ignoring more than one diagnostic:
+  //
+  // ```dart
+  // // ignore_for_file: unused_local_variable
+  // void f() {
+  //   var x = 0;
+  // }
+  // ```
+  static const HintCode DUPLICATE_IGNORE = HintCode(
+    'DUPLICATE_IGNORE',
+    "The diagnostic '{0}' doesn't need to be ignored here because it's already being ignored.",
+    correction:
+        "Try removing the name from the list, or removing the whole comment if this is the only name in the list.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Duplicate imports.
+   *
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an import directive is found
+  // that is the same as an import before it in the file. The second import
+  // doesn’t add value and should be removed.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic:
+  //
+  // ```dart
+  // import 'package:meta/meta.dart';
+  // import [!'package:meta/meta.dart'!];
+  //
+  // @sealed class C {}
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Remove the unnecessary import:
+  //
+  // ```dart
+  // import 'package:meta/meta.dart';
+  //
+  // @sealed class C {}
+  // ```
+  static const HintCode DUPLICATE_IMPORT = HintCode(
+    'DUPLICATE_IMPORT',
+    "Duplicate import.",
+    correction: "Try removing all but one import of the library.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a name occurs multiple times in
+  // a `show` clause. Repeating the name is unnecessary.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the name `min` is shown
+  // more than once:
+  //
+  // ```dart
+  // import 'dart:math' show min, [!min!];
+  //
+  // var x = min(2, min(0, 1));
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the name was mistyped in one or more places, then correct the mistyped
+  // names:
+  //
+  // ```dart
+  // import 'dart:math' show max, min;
+  //
+  // var x = max(2, min(0, 1));
+  // ```
+  //
+  // If the name wasn't mistyped, then remove the unnecessary name from the
+  // list:
+  //
+  // ```dart
+  // import 'dart:math' show min;
+  //
+  // var x = min(2, min(0, 1));
+  // ```
+  static const HintCode DUPLICATE_SHOWN_NAME = HintCode(
+    'DUPLICATE_SHOWN_NAME',
+    "Duplicate shown name.",
+    correction:
+        "Try removing the repeated name from the list of shown members.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an element in a non-constant set
+  // is the same as a previous element in the same set. If two elements are the
+  // same, then the second value is ignored, which makes having both elements
+  // pointless and likely signals a bug.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the element `1` appears
+  // twice:
+  //
+  // ```dart
+  // const a = 1;
+  // const b = 1;
+  // var s = <int>{a, [!b!]};
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If both elements should be included in the set, then change one of the
+  // elements:
+  //
+  // ```dart
+  // const a = 1;
+  // const b = 2;
+  // var s = <int>{a, b};
+  // ```
+  //
+  // If only one of the elements is needed, then remove the one that isn't
+  // needed:
+  //
+  // ```dart
+  // const a = 1;
+  // var s = <int>{a};
+  // ```
+  //
+  // Note that literal sets preserve the order of their elements, so the choice
+  // of which element to remove might affect the order in which elements are
+  // returned by an iterator.
+  static const HintCode EQUAL_ELEMENTS_IN_SET = HintCode(
+    'EQUAL_ELEMENTS_IN_SET',
+    "Two elements in a set literal shouldn't be equal.",
+    correction: "Change or remove the duplicate element.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a key in a non-constant map is
+  // the same as a previous key in the same map. If two keys are the same, then
+  // the second value overwrites the first value, which makes having both pairs
+  // pointless and likely signals a bug.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the keys `a` and `b`
+  // have the same value:
+  //
+  // ```dart
+  // const a = 1;
+  // const b = 1;
+  // var m = <int, String>{a: 'a', [!b!]: 'b'};
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If both entries should be included in the map, then change one of the keys:
+  //
+  // ```dart
+  // const a = 1;
+  // const b = 2;
+  // var m = <int, String>{a: 'a', b: 'b'};
+  // ```
+  //
+  // If only one of the entries is needed, then remove the one that isn't
+  // needed:
+  //
+  // ```dart
+  // const a = 1;
+  // var m = <int, String>{a: 'a'};
+  // ```
+  //
+  // Note that literal maps preserve the order of their entries, so the choice
+  // of which entry to remove might affect the order in which the keys and
+  // values are returned by an iterator.
+  static const HintCode EQUAL_KEYS_IN_MAP = HintCode(
+    'EQUAL_KEYS_IN_MAP',
+    "Two keys in a map literal shouldn't be equal.",
+    correction: "Change or remove the duplicate key.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * It is a bad practice for a source file in a package "lib" directory
+   * hierarchy to traverse outside that directory hierarchy. For example, a
+   * source file in the "lib" directory should not contain a directive such as
+   * `import '../web/some.dart'` which references a file outside the lib
+   * directory.
+   */
+  static const HintCode FILE_IMPORT_INSIDE_LIB_REFERENCES_FILE_OUTSIDE =
+      HintCode(
+    'FILE_IMPORT_INSIDE_LIB_REFERENCES_FILE_OUTSIDE',
+    "A file in the 'lib' directory shouldn't import a file outside the 'lib' directory.",
+    correction:
+        "Try removing the import, or moving the imported file inside the 'lib' directory.",
+  );
+
+  /**
+   * It is a bad practice for a source file ouside a package "lib" directory
+   * hierarchy to traverse into that directory hierarchy. For example, a source
+   * file in the "web" directory should not contain a directive such as
+   * `import '../lib/some.dart'` which references a file inside the lib
+   * directory.
+   */
+  static const HintCode FILE_IMPORT_OUTSIDE_LIB_REFERENCES_FILE_INSIDE =
+      HintCode(
+    'FILE_IMPORT_OUTSIDE_LIB_REFERENCES_FILE_INSIDE',
+    "A file outside the 'lib' directory shouldn't reference a file inside the 'lib' directory using a relative path.",
+    correction: "Try using a package: URI instead.",
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a library that declares a
+  // function named `loadLibrary` is imported using a deferred import. A
+  // deferred import introduces an implicit function named `loadLibrary`. This
+  // function is used to load the contents of the deferred library, and the
+  // implicit function hides the explicit declaration in the deferred library.
+  //
+  // For more information, see the language tour's coverage of
+  // [deferred loading](https://dart.dev/guides/language/language-tour#lazily-loading-a-library).
+  //
+  // #### Example
+  //
+  // Given a file (`a.dart`) that defines a function named `loadLibrary`:
+  //
+  // ```dart
+  // %uri="lib/a.dart"
+  // void loadLibrary(Library library) {}
+  //
+  // class Library {}
+  // ```
+  //
+  // The following code produces this diagnostic because the implicit
+  // declaration of `a.loadLibrary` is hiding the explicit declaration of
+  // `loadLibrary` in `a.dart`:
+  //
+  // ```dart
+  // [!import 'a.dart' deferred as a;!]
+  //
+  // void f() {
+  //   a.Library();
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the imported library isn't required to be deferred, then remove the
+  // keyword `deferred`:
+  //
+  // ```dart
+  // import 'a.dart' as a;
+  //
+  // void f() {
+  //   a.Library();
+  // }
+  // ```
+  //
+  // If the imported library is required to be deferred and you need to
+  // reference the imported function, then rename the function in the imported
+  // library:
+  //
+  // ```dart
+  // void populateLibrary(Library library) {}
+  //
+  // class Library {}
+  // ```
+  //
+  // If the imported library is required to be deferred and you don't need to
+  // reference the imported function, then add a `hide` clause:
+  //
+  // ```dart
+  // import 'a.dart' deferred as a hide loadLibrary;
+  //
+  // void f() {
+  //   a.Library();
+  // }
+  // ```
+  //
+  // If type arguments shouldn't be required for the class, then mark the class
+  // with the `@optionalTypeArgs` annotation (from `package:meta`):
+  static const HintCode IMPORT_DEFERRED_LIBRARY_WITH_LOAD_FUNCTION = HintCode(
+    'IMPORT_DEFERRED_LIBRARY_WITH_LOAD_FUNCTION',
+    "The imported library defines a top-level function named 'loadLibrary' that is hidden by deferring this library.",
+    correction:
+        "Try changing the import to not be deferred, or rename the function in the imported library.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * https://github.com/dart-lang/sdk/issues/44063
+   */
+  static const HintCode IMPORT_OF_LEGACY_LIBRARY_INTO_NULL_SAFE = HintCode(
+    'IMPORT_OF_LEGACY_LIBRARY_INTO_NULL_SAFE',
+    "The library '{0}' is legacy, and should not be imported into a null safe library.",
+    correction: "Try migrating the imported library.",
+  );
+
+  /**
+   * When "strict-inference" is enabled, collection literal types must be
+   * inferred via the context type, or have type arguments.
+   */
+  static const HintCode INFERENCE_FAILURE_ON_COLLECTION_LITERAL = HintCode(
+    'INFERENCE_FAILURE_ON_COLLECTION_LITERAL',
+    "The type argument(s) of '{0}' can't be inferred.",
+    correction: "Use explicit type argument(s) for '{0}'.",
+  );
+
+  /**
+   * When "strict-inference" is enabled, types in function invocations must be
+   * inferred via the context type, or have type arguments.
+   */
+  static const HintCode INFERENCE_FAILURE_ON_FUNCTION_INVOCATION = HintCode(
+    'INFERENCE_FAILURE_ON_FUNCTION_INVOCATION',
+    "The type argument(s) of the function '{0}' can't be inferred.",
+    correction: "Use explicit type argument(s) for '{0}'.",
+  );
+
+  /**
+   * When "strict-inference" is enabled, recursive local functions, top-level
+   * functions, methods, and function-typed function parameters must all
+   * specify a return type. See the strict-inference resource:
+   *
+   * https://github.com/dart-lang/language/blob/master/resources/type-system/strict-inference.md
+   */
+  static const HintCode INFERENCE_FAILURE_ON_FUNCTION_RETURN_TYPE = HintCode(
+    'INFERENCE_FAILURE_ON_FUNCTION_RETURN_TYPE',
+    "The return type of '{0}' cannot be inferred.",
+    correction: "Declare the return type of '{0}'.",
+  );
+
+  /**
+   * When "strict-inference" is enabled, types in function invocations must be
+   * inferred via the context type, or have type arguments.
+   */
+  static const HintCode INFERENCE_FAILURE_ON_GENERIC_INVOCATION = HintCode(
+    'INFERENCE_FAILURE_ON_GENERIC_INVOCATION',
+    "The type argument(s) of the generic function type '{0}' can't be inferred.",
+    correction: "Use explicit type argument(s) for '{0}'.",
+  );
+
+  /**
+   * When "strict-inference" is enabled, types in instance creation
+   * (constructor calls) must be inferred via the context type, or have type
+   * arguments.
+   */
+  static const HintCode INFERENCE_FAILURE_ON_INSTANCE_CREATION = HintCode(
+    'INFERENCE_FAILURE_ON_INSTANCE_CREATION',
+    "The type argument(s) of the constructor '{0}' can't be inferred.",
+    correction: "Use explicit type argument(s) for '{0}'.",
+  );
+
+  /**
+   * When "strict-inference" in enabled, uninitialized variables must be
+   * declared with a specific type.
+   */
+  static const HintCode INFERENCE_FAILURE_ON_UNINITIALIZED_VARIABLE = HintCode(
+    'INFERENCE_FAILURE_ON_UNINITIALIZED_VARIABLE',
+    "The type of {0} can't be inferred without either a type or initializer.",
+    correction: "Try specifying the type of the variable.",
+  );
+
+  /**
+   * When "strict-inference" in enabled, function parameters must be
+   * declared with a specific type, or inherit a type.
+   */
+  static const HintCode INFERENCE_FAILURE_ON_UNTYPED_PARAMETER = HintCode(
+    'INFERENCE_FAILURE_ON_UNTYPED_PARAMETER',
+    "The type of {0} can't be inferred; a type must be explicitly provided.",
+    correction: "Try specifying the type of the parameter.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the annotation
+   * 1: the list of valid targets
+   */
+  static const HintCode INVALID_ANNOTATION_TARGET = HintCode(
+    'INVALID_ANNOTATION_TARGET',
+    "The annotation '{0}' can only be used on {1}",
+  );
+
+  /**
+   * This hint is generated anywhere where an element annotated with `@internal`
+   * is exported as a part of a package's public API.
+   *
+   * Parameters:
+   * 0: the name of the element
+   */
+  static const HintCode INVALID_EXPORT_OF_INTERNAL_ELEMENT = HintCode(
+    'INVALID_EXPORT_OF_INTERNAL_ELEMENT',
+    "The member '{0}' can't be exported as a part of a package's public API.",
+    correction: "Try using a hide clause to hide '{0}'.",
+  );
+
+  /**
+   * This hint is generated anywhere where an element annotated with `@internal`
+   * is exported indirectly as a part of a package's public API.
+   *
+   * Parameters:
+   * 0: the name of the element
+   */
+  static const HintCode INVALID_EXPORT_OF_INTERNAL_ELEMENT_INDIRECTLY =
+      HintCode(
+    'INVALID_EXPORT_OF_INTERNAL_ELEMENT_INDIRECTLY',
+    "The member '{0}' can't be exported as a part of a package's public API, but is indirectly exported as part of the signature of '{1}'.",
+    correction: "Try using a hide clause to hide '{0}'.",
+  );
+
+  /**
+   * This hint is generated anywhere a @factory annotation is associated with
+   * anything other than a method.
+   */
+  static const HintCode INVALID_FACTORY_ANNOTATION = HintCode(
+    'INVALID_FACTORY_ANNOTATION',
+    "Only methods can be annotated as factories.",
+  );
+
+  /**
+   * This hint is generated anywhere a @factory annotation is associated with
+   * a method that does not declare a return type.
+   */
+  static const HintCode INVALID_FACTORY_METHOD_DECL = HintCode(
+    'INVALID_FACTORY_METHOD_DECL',
+    "Factory method '{0}' must have a return type.",
+  );
+
+  /**
+   * This hint is generated anywhere a @factory annotation is associated with
+   * a non-abstract method that can return anything other than a newly allocated
+   * object.
+   *
+   * Parameters:
+   * 0: the name of the method
+   */
+  static const HintCode INVALID_FACTORY_METHOD_IMPL = HintCode(
+    'INVALID_FACTORY_METHOD_IMPL',
+    "Factory method '{0}' doesn't return a newly allocated object.",
+  );
+
+  /**
+   * This hint is generated anywhere an @immutable annotation is associated with
+   * anything other than a class.
+   */
+  static const HintCode INVALID_IMMUTABLE_ANNOTATION = HintCode(
+    'INVALID_IMMUTABLE_ANNOTATION',
+    "Only classes can be annotated as being immutable.",
+  );
+
+  /**
+   * This hint is generated anywhere a @internal annotation is associated with
+   * an element found in a package's public API.
+   */
+  static const HintCode INVALID_INTERNAL_ANNOTATION = HintCode(
+    'INVALID_INTERNAL_ANNOTATION',
+    "Only public elements in a package's private API can be annotated as being internal.",
+  );
+
+  /**
+   * Invalid Dart language version comments don't follow the specification [1].
+   * If a comment begins with "@dart" or "dart" (letters in any case),
+   * followed by optional whitespace, followed by optional non-alphanumeric,
+   * non-whitespace characters, followed by optional whitespace, followed by
+   * an optional alphabetical character, followed by a digit, then the
+   * comment is considered to be an attempt at a language version override
+   * comment. If this attempted language version override comment is not a
+   * valid language version override comment, it is reported.
+   *
+   * [1] https://github.com/dart-lang/language/blob/master/accepted/future-releases/language-versioning/feature-specification.md#individual-library-language-version-override
+   */
+  static const HintCode INVALID_LANGUAGE_VERSION_OVERRIDE_AT_SIGN = HintCode(
+    'INVALID_LANGUAGE_VERSION_OVERRIDE',
+    "The Dart language version override number must begin with '@dart'",
+    correction:
+        "Specify a Dart language version override with a comment like '// @dart = 2.0'.",
+    uniqueName: 'INVALID_LANGUAGE_VERSION_OVERRIDE_AT_SIGN',
+  );
+
+  /**
+   * Invalid Dart language version comments don't follow the specification [1].
+   * If a comment begins with "@dart" or "dart" (letters in any case),
+   * followed by optional whitespace, followed by optional non-alphanumeric,
+   * non-whitespace characters, followed by optional whitespace, followed by
+   * an optional alphabetical character, followed by a digit, then the
+   * comment is considered to be an attempt at a language version override
+   * comment. If this attempted language version override comment is not a
+   * valid language version override comment, it is reported.
+   *
+   * [1] https://github.com/dart-lang/language/blob/master/accepted/future-releases/language-versioning/feature-specification.md#individual-library-language-version-override
+   */
+  static const HintCode INVALID_LANGUAGE_VERSION_OVERRIDE_EQUALS = HintCode(
+    'INVALID_LANGUAGE_VERSION_OVERRIDE',
+    "The Dart language version override comment must be specified with an '=' character",
+    correction:
+        "Specify a Dart language version override with a comment like '// @dart = 2.0'.",
+    uniqueName: 'INVALID_LANGUAGE_VERSION_OVERRIDE_EQUALS',
+  );
+
+  static const HintCode INVALID_LANGUAGE_VERSION_OVERRIDE_GREATER = HintCode(
+    'INVALID_LANGUAGE_VERSION_OVERRIDE',
+    "The language version override can't specify a version greater than the latest known language version: {0}.{1}",
+    correction: "Try removing the language version override.",
+    uniqueName: 'INVALID_LANGUAGE_VERSION_OVERRIDE_GREATER',
+  );
+
+  static const HintCode INVALID_LANGUAGE_VERSION_OVERRIDE_LOCATION = HintCode(
+    'INVALID_LANGUAGE_VERSION_OVERRIDE',
+    "The language version override must be before any declaration or directive.",
+    correction:
+        "Try moving the language version override to the top of the file.",
+    uniqueName: 'INVALID_LANGUAGE_VERSION_OVERRIDE_LOCATION',
+  );
+
+  /**
+   * Invalid Dart language version comments don't follow the specification [1].
+   * If a comment begins with "@dart" or "dart" (letters in any case),
+   * followed by optional whitespace, followed by optional non-alphanumeric,
+   * non-whitespace characters, followed by optional whitespace, followed by
+   * an optional alphabetical character, followed by a digit, then the
+   * comment is considered to be an attempt at a language version override
+   * comment. If this attempted language version override comment is not a
+   * valid language version override comment, it is reported.
+   *
+   * [1] https://github.com/dart-lang/language/blob/master/accepted/future-releases/language-versioning/feature-specification.md#individual-library-language-version-override
+   */
+  static const HintCode INVALID_LANGUAGE_VERSION_OVERRIDE_LOWER_CASE = HintCode(
+    'INVALID_LANGUAGE_VERSION_OVERRIDE',
+    "The Dart language version override comment must be specified with the word 'dart' in all lower case",
+    correction:
+        "Specify a Dart language version override with a comment like '// @dart = 2.0'.",
+    uniqueName: 'INVALID_LANGUAGE_VERSION_OVERRIDE_LOWER_CASE',
+  );
+
+  /**
+   * Invalid Dart language version comments don't follow the specification [1].
+   * If a comment begins with "@dart" or "dart" (letters in any case),
+   * followed by optional whitespace, followed by optional non-alphanumeric,
+   * non-whitespace characters, followed by optional whitespace, followed by
+   * an optional alphabetical character, followed by a digit, then the
+   * comment is considered to be an attempt at a language version override
+   * comment. If this attempted language version override comment is not a
+   * valid language version override comment, it is reported.
+   *
+   * [1] https://github.com/dart-lang/language/blob/master/accepted/future-releases/language-versioning/feature-specification.md#individual-library-language-version-override
+   */
+  static const HintCode INVALID_LANGUAGE_VERSION_OVERRIDE_NUMBER = HintCode(
+    'INVALID_LANGUAGE_VERSION_OVERRIDE',
+    "The Dart language version override comment must be specified with a version number, like '2.0', after the '=' character.",
+    correction:
+        "Specify a Dart language version override with a comment like '// @dart = 2.0'.",
+    uniqueName: 'INVALID_LANGUAGE_VERSION_OVERRIDE_NUMBER',
+  );
+
+  /**
+   * Invalid Dart language version comments don't follow the specification [1].
+   * If a comment begins with "@dart" or "dart" (letters in any case),
+   * followed by optional whitespace, followed by optional non-alphanumeric,
+   * non-whitespace characters, followed by optional whitespace, followed by
+   * an optional alphabetical character, followed by a digit, then the
+   * comment is considered to be an attempt at a language version override
+   * comment. If this attempted language version override comment is not a
+   * valid language version override comment, it is reported.
+   *
+   * [1] https://github.com/dart-lang/language/blob/master/accepted/future-releases/language-versioning/feature-specification.md#individual-library-language-version-override
+   */
+  static const HintCode INVALID_LANGUAGE_VERSION_OVERRIDE_PREFIX = HintCode(
+    'INVALID_LANGUAGE_VERSION_OVERRIDE',
+    "The Dart language version override number can't be prefixed with a letter",
+    correction:
+        "Specify a Dart language version override with a comment like '// @dart = 2.0'.",
+    uniqueName: 'INVALID_LANGUAGE_VERSION_OVERRIDE_PREFIX',
+  );
+
+  /**
+   * Invalid Dart language version comments don't follow the specification [1].
+   * If a comment begins with "@dart" or "dart" (letters in any case),
+   * followed by optional whitespace, followed by optional non-alphanumeric,
+   * non-whitespace characters, followed by optional whitespace, followed by
+   * an optional alphabetical character, followed by a digit, then the
+   * comment is considered to be an attempt at a language version override
+   * comment. If this attempted language version override comment is not a
+   * valid language version override comment, it is reported.
+   *
+   * [1] https://github.com/dart-lang/language/blob/master/accepted/future-releases/language-versioning/feature-specification.md#individual-library-language-version-override
+   */
+  static const HintCode INVALID_LANGUAGE_VERSION_OVERRIDE_TRAILING_CHARACTERS =
+      HintCode(
+    'INVALID_LANGUAGE_VERSION_OVERRIDE',
+    "The Dart language version override comment can't be followed by any non-whitespace characters",
+    correction:
+        "Specify a Dart language version override with a comment like '// @dart = 2.0'.",
+    uniqueName: 'INVALID_LANGUAGE_VERSION_OVERRIDE_TRAILING_CHARACTERS',
+  );
+
+  /**
+   * Invalid Dart language version comments don't follow the specification [1].
+   * If a comment begins with "@dart" or "dart" (letters in any case),
+   * followed by optional whitespace, followed by optional non-alphanumeric,
+   * non-whitespace characters, followed by optional whitespace, followed by
+   * an optional alphabetical character, followed by a digit, then the
+   * comment is considered to be an attempt at a language version override
+   * comment. If this attempted language version override comment is not a
+   * valid language version override comment, it is reported.
+   *
+   * [1] https://github.com/dart-lang/language/blob/master/accepted/future-releases/language-versioning/feature-specification.md#individual-library-language-version-override
+   */
+  static const HintCode INVALID_LANGUAGE_VERSION_OVERRIDE_TWO_SLASHES =
+      HintCode(
+    'INVALID_LANGUAGE_VERSION_OVERRIDE',
+    "The Dart language version override comment must be specified with exactly two slashes.",
+    correction:
+        "Specify a Dart language version override with a comment like '// @dart = 2.0'.",
+    uniqueName: 'INVALID_LANGUAGE_VERSION_OVERRIDE_TWO_SLASHES',
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the `@literal` annotation is
+  // applied to anything other than a const constructor.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because the constructor isn't
+  // a `const` constructor:
+  //
+  // ```dart
+  // import 'package:meta/meta.dart';
+  //
+  // class C {
+  //   [!@literal!]
+  //   C();
+  // }
+  // ```
+  //
+  // The following code produces this diagnostic because `x` isn't a
+  // constructor:
+  //
+  // ```dart
+  // import 'package:meta/meta.dart';
+  //
+  // [!@literal!]
+  // var x;
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the annotation is on a constructor and the constructor should always be
+  // invoked with `const`, when possible, then mark the constructor with the
+  // `const` keyword:
+  //
+  // ```dart
+  // import 'package:meta/meta.dart';
+  //
+  // class C {
+  //   @literal
+  //   const C();
+  // }
+  // ```
+  //
+  // If the constructor can't be marked as `const`, then remove the annotation.
+  //
+  // If the annotation is on anything other than a constructor, then remove the
+  // annotation:
+  //
+  // ```dart
+  // var x;
+  // ```
+  static const HintCode INVALID_LITERAL_ANNOTATION = HintCode(
+    'INVALID_LITERAL_ANNOTATION',
+    "Only const constructors can have the `@literal` annotation.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * This hint is generated anywhere where `@nonVirtual` annotates something
+   * other than a non-abstract instance member in a class or mixin.
+   *
+   * Parameters:
+   * 0: the name of the member
+   */
+  static const HintCode INVALID_NON_VIRTUAL_ANNOTATION = HintCode(
+    'INVALID_NON_VIRTUAL_ANNOTATION',
+    "The member '{0}' can't be '@nonVirtual' because it isn't a concrete instance member.",
+    correction: "Try removing @nonVirtual.",
+  );
+
+  /**
+   * This hint is generated anywhere where an instance member annotated with
+   * `@nonVirtual` is overridden in a subclass.
+   *
+   * Parameters:
+   * 0: the name of the member
+   * 1: the name of the defining class
+   */
+  static const HintCode INVALID_OVERRIDE_OF_NON_VIRTUAL_MEMBER = HintCode(
+    'INVALID_OVERRIDE_OF_NON_VIRTUAL_MEMBER',
+    "The member '{0}' is declared non-virtual in '{1}' and can't be overridden in subclasses.",
+  );
+
+  /**
+   * This hint is generated anywhere where `@required` annotates a named
+   * parameter with a default value.
+   *
+   * Parameters:
+   * 0: the name of the member
+   */
+  static const HintCode INVALID_REQUIRED_NAMED_PARAM = HintCode(
+    'INVALID_REQUIRED_NAMED_PARAM',
+    "The type parameter '{0}' is annotated with @required but only named parameters without a default value can be annotated with it.",
+    correction: "Remove @required.",
+  );
+
+  /**
+   * This hint is generated anywhere where `@required` annotates an optional
+   * positional parameter.
+   *
+   * Parameters:
+   * 0: the name of the member
+   */
+  static const HintCode INVALID_REQUIRED_OPTIONAL_POSITIONAL_PARAM = HintCode(
+    'INVALID_REQUIRED_OPTIONAL_POSITIONAL_PARAM',
+    "Incorrect use of the annotation @required on the optional positional parameter '{0}'. Optional positional parameters cannot be required.",
+    correction: "Remove @required.",
+  );
+
+  /**
+   * This hint is generated anywhere where `@required` annotates a non optional
+   * positional parameter.
+   *
+   * Parameters:
+   * 0: the name of the member
+   */
+  static const HintCode INVALID_REQUIRED_POSITIONAL_PARAM = HintCode(
+    'INVALID_REQUIRED_POSITIONAL_PARAM',
+    "Redundant use of the annotation @required on the required positional parameter '{0}'.",
+    correction: "Remove @required.",
+  );
+
+  /**
+   * This hint is generated anywhere where `@sealed` annotates something other
+   * than a class.
+   *
+   * Parameters:
+   * 0: the name of the member
+   */
+  static const HintCode INVALID_SEALED_ANNOTATION = HintCode(
+    'INVALID_SEALED_ANNOTATION',
+    "The member '{0}' is annotated with '@sealed' but only classes can be annotated with it.",
+    correction: "Remove @sealed.",
+  );
+
+  /**
+   * This hint is generated anywhere where a member annotated with `@internal`
+   * is used outside of the package in which it is declared.
+   *
+   * Parameters:
+   * 0: the name of the member
+   */
+  static const HintCode INVALID_USE_OF_INTERNAL_MEMBER = HintCode(
+    'INVALID_USE_OF_INTERNAL_MEMBER',
+    "The member '{0}' can only be used within its package.",
+  );
+
+  /**
+   * This hint is generated anywhere where a member annotated with `@protected`
+   * is used outside of an instance member of a subclass.
+   *
+   * Parameters:
+   * 0: the name of the member
+   * 1: the name of the defining class
+   */
+  static const HintCode INVALID_USE_OF_PROTECTED_MEMBER = HintCode(
+    'INVALID_USE_OF_PROTECTED_MEMBER',
+    "The member '{0}' can only be used within instance members of subclasses of '{1}'.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the member
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an instance member that is
+  // annotated with `visibleForOverriding` is referenced outside the library in
+  // which it's declared for any reason other than to override it.
+  //
+  // #### Example
+  //
+  // Given a file named `a.dart` containing the following declaration:
+  //
+  // ```dart
+  // %uri="lib/a.dart"
+  // import 'package:meta/meta.dart';
+  //
+  // class A {
+  //   @visibleForOverriding
+  //   void a() {}
+  // }
+  // ```
+  //
+  // The following code produces this diagnostic because the method `m` is being
+  // invoked even though the only reason it's public is to allow it to be
+  // overridden:
+  //
+  // ```dart
+  // import 'a.dart';
+  //
+  // class B extends A {
+  //   void b() {
+  //     [!a!]();
+  //   }
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Remove the invalid use of the member.
+  static const HintCode INVALID_USE_OF_VISIBLE_FOR_OVERRIDING_MEMBER = HintCode(
+    'INVALID_USE_OF_VISIBLE_FOR_OVERRIDING_MEMBER',
+    "The member '{0}' can only be used for overriding.",
+  );
+
+  /**
+   * This hint is generated anywhere where a member annotated with
+   * `@visibleForTemplate` is used outside of a "template" Dart file.
+   *
+   * Parameters:
+   * 0: the name of the member
+   * 1: the name of the defining class
+   */
+  static const HintCode INVALID_USE_OF_VISIBLE_FOR_TEMPLATE_MEMBER = HintCode(
+    'INVALID_USE_OF_VISIBLE_FOR_TEMPLATE_MEMBER',
+    "The member '{0}' can only be used within '{1}' or a template library.",
+  );
+
+  /**
+   * This hint is generated anywhere where a member annotated with
+   * `@visibleForTesting` is used outside the defining library, or a test.
+   *
+   * Parameters:
+   * 0: the name of the member
+   * 1: the name of the defining class
+   */
+  static const HintCode INVALID_USE_OF_VISIBLE_FOR_TESTING_MEMBER = HintCode(
+    'INVALID_USE_OF_VISIBLE_FOR_TESTING_MEMBER',
+    "The member '{0}' can only be used within '{1}' or a test.",
+  );
+
+  /**
+   * This hint is generated anywhere where a private declaration is annotated
+   * with `@visibleForTemplate` or `@visibleForTesting`.
+   *
+   * Parameters:
+   * 0: the name of the member
+   * 1: the name of the annotation
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when either the `@visibleForTemplate`
+  // or `@visibleForTesting` annotation is applied to a non-public declaration.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic:
+  //
+  // ```dart
+  // import 'package:meta/meta.dart';
+  //
+  // [!@visibleForTesting!]
+  // void _someFunction() {}
+  //
+  // void f() => _someFunction();
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the declaration doesn't need to be used by test code, then remove the
+  // annotation:
+  //
+  // ```dart
+  // void _someFunction() {}
+  //
+  // void f() => _someFunction();
+  // ```
+  //
+  // If it does, then make it public:
+  //
+  // ```dart
+  // import 'package:meta/meta.dart';
+  //
+  // @visibleForTesting
+  // void someFunction() {}
+  //
+  // void f() => someFunction();
+  // ```
+  static const HintCode INVALID_VISIBILITY_ANNOTATION = HintCode(
+    'INVALID_VISIBILITY_ANNOTATION',
+    "The member '{0}' is annotated with '{1}', but this annotation is only meaningful on declarations of public members.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when anything other than a public
+  // instance member of a class is annotated with `visibleForOverriding`.
+  // Because only public instance members can be overridden outside the defining
+  // library, there's no value to annotating any other declarations.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the annotation is on a
+  // class, and classes can't be overridden:
+  //
+  // ```dart
+  // import 'package:meta/meta.dart';
+  //
+  // [!@visibleForOverriding!]
+  // class C {}
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Remove the annotation:
+  //
+  // ```dart
+  // class C {}
+  // ```
+  static const HintCode INVALID_VISIBLE_FOR_OVERRIDING_ANNOTATION = HintCode(
+    'INVALID_VISIBLE_FOR_OVERRIDING_ANNOTATION',
+    "The declaration '{0}' is annotated with 'visibleForOverriding'. Because '{0}' isn't an interface member that could be overridden, the annotation is meaningless.",
+  );
+
+  /**
+   * Generate a hint for an element that is annotated with `@JS(...)` whose
+   * library declaration is not similarly annotated.
+   */
+  static const HintCode MISSING_JS_LIB_ANNOTATION = HintCode(
+    'MISSING_JS_LIB_ANNOTATION',
+    "The @JS() annotation can only be used if it is also declared on the library directive.",
+    correction: "Try adding the annotation to the library directive.",
+  );
+
+  /**
+   * Generate a hint for a constructor, function or method invocation where a
+   * required parameter is missing.
+   *
+   * Parameters:
+   * 0: the name of the parameter
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a method or function with a
+  // named parameter that is annotated as being required is invoked without
+  // providing a value for the parameter.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because the named parameter `x`
+  // is required:
+  //
+  // ```dart
+  // %language=2.9
+  // import 'package:meta/meta.dart';
+  //
+  // void f({@required int x}) {}
+  //
+  // void g() {
+  //   [!f!]();
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Provide the required value:
+  //
+  // ```dart
+  // %language=2.9
+  // import 'package:meta/meta.dart';
+  //
+  // void f({@required int x}) {}
+  //
+  // void g() {
+  //   f(x: 2);
+  // }
+  // ```
+  static const HintCode MISSING_REQUIRED_PARAM = HintCode(
+    'MISSING_REQUIRED_PARAM',
+    "The parameter '{0}' is required.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Generate a hint for a constructor, function or method invocation where a
+   * required parameter is missing.
+   *
+   * Parameters:
+   * 0: the name of the parameter
+   * 1: message details
+   */
+  static const HintCode MISSING_REQUIRED_PARAM_WITH_DETAILS = HintCode(
+    'MISSING_REQUIRED_PARAM',
+    "The parameter '{0}' is required. {1}.",
+    hasPublishedDocs: true,
+    uniqueName: 'MISSING_REQUIRED_PARAM_WITH_DETAILS',
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the declared return type
+   */
+  // #### Description
+  //
+  // Any function or method that doesn't end with either an explicit return or a
+  // throw implicitly returns `null`. This is rarely the desired behavior. The
+  // analyzer produces this diagnostic when it finds an implicit return.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `f` doesn't end with a
+  // return:
+  //
+  // ```dart
+  // %language=2.9
+  // int [!f!](int x) {
+  //   if (x < 0) {
+  //     return 0;
+  //   }
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Add a `return` statement that makes the return value explicit, even if
+  // `null` is the appropriate value.
+  static const HintCode MISSING_RETURN = HintCode(
+    'MISSING_RETURN',
+    "This function has a return type of '{0}', but doesn't end with a return statement.",
+    correction:
+        "Try adding a return statement, or changing the return type to 'void'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * This hint is generated anywhere where a `@sealed` class is used as a
+   * a superclass constraint of a mixin.
+   *
+   * Parameters:
+   * 0: the name of the sealed class
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the superclass constraint of a
+  // mixin is a class from a different package that was marked as `@sealed`.
+  // Classes that are sealed can't be extended, implemented, mixed in, or used
+  // as a superclass constraint.
+  //
+  // #### Examples
+  //
+  // If the package `p` defines a sealed class:
+  //
+  // ```dart
+  // %uri="package:p/p.dart"
+  // import 'package:meta/meta.dart';
+  //
+  // @sealed
+  // class C {}
+  // ```
+  //
+  // Then, the following code, when in a package other than `p`, produces this
+  // diagnostic:
+  //
+  // ```dart
+  // import 'package:p/p.dart';
+  //
+  // [!mixin M on C {}!]
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the classes that use the mixin don't need to be subclasses of the sealed
+  // class, then consider adding a field and delegating to the wrapped instance
+  // of the sealed class.
+  static const HintCode MIXIN_ON_SEALED_CLASS = HintCode(
+    'MIXIN_ON_SEALED_CLASS',
+    "The class '{0}' shouldn't be used as a mixin constraint because it is sealed, and any class mixing in this mixin must have '{0}' as a superclass.",
+    correction:
+        "Try composing with this class, or refer to its documentation for more information.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Generate a hint for classes that inherit from classes annotated with
+   * `@immutable` but that are not immutable.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an immutable class defines one
+  // or more instance fields that aren't final. A class is immutable if it's
+  // marked as being immutable using the annotation `@immutable` or if it's a
+  // subclass of an immutable class.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because the field `x` isn't
+  // final:
+  //
+  // ```dart
+  // import 'package:meta/meta.dart';
+  //
+  // @immutable
+  // class [!C!] {
+  //   int x;
+  //
+  //   C(this.x);
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If instances of the class should be immutable, then add the keyword `final`
+  // to all non-final field declarations:
+  //
+  // ```dart
+  // import 'package:meta/meta.dart';
+  //
+  // @immutable
+  // class C {
+  //   final int x;
+  //
+  //   C(this.x);
+  // }
+  // ```
+  //
+  // If the instances of the class should be mutable, then remove the
+  // annotation, or choose a different superclass if the annotation is
+  // inherited:
+  //
+  // ```dart
+  // class C {
+  //   int x;
+  //
+  //   C(this.x);
+  // }
+  // ```
+  static const HintCode MUST_BE_IMMUTABLE = HintCode(
+    'MUST_BE_IMMUTABLE',
+    "This class (or a class that this class inherits from) is marked as '@immutable', but one or more of its instance fields aren't final: {0}",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the class declaring the overridden method
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a method that overrides a method
+  // that is annotated as `@mustCallSuper` doesn't invoke the overridden method
+  // as required.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because the method `m` in `B`
+  // doesn't invoke the overridden method `m` in `A`:
+  //
+  // ```dart
+  // import 'package:meta/meta.dart';
+  //
+  // class A {
+  //   @mustCallSuper
+  //   m() {}
+  // }
+  //
+  // class B extends A {
+  //   @override
+  //   [!m!]() {}
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Add an invocation of the overridden method in the overriding method:
+  //
+  // ```dart
+  // import 'package:meta/meta.dart';
+  //
+  // class A {
+  //   @mustCallSuper
+  //   m() {}
+  // }
+  //
+  // class B extends A {
+  //   @override
+  //   m() {
+  //     super.m();
+  //   }
+  // }
+  // ```
+  static const HintCode MUST_CALL_SUPER = HintCode(
+    'MUST_CALL_SUPER',
+    "This method overrides a method annotated as '@mustCallSuper' in '{0}', but doesn't invoke the overridden method.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Generate a hint for non-const instance creation using a constructor
+   * annotated with `@literal`.
+   *
+   * Parameters:
+   * 0: the name of the class defining the annotated constructor
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a constructor that has the
+  // `@literal` annotation is invoked without using the `const` keyword, but all
+  // of the arguments to the constructor are constants. The annotation indicates
+  // that the constructor should be used to create a constant value whenever
+  // possible.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic:
+  //
+  // ```dart
+  // import 'package:meta/meta.dart';
+  //
+  // class C {
+  //   @literal
+  //   const C();
+  // }
+  //
+  // C f() => [!C()!];
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Add the keyword `const` before the constructor invocation:
+  //
+  // ```dart
+  // import 'package:meta/meta.dart';
+  //
+  // class C {
+  //   @literal
+  //   const C();
+  // }
+  //
+  // void f() => const C();
+  // ```
+  static const HintCode NON_CONST_CALL_TO_LITERAL_CONSTRUCTOR = HintCode(
+    'NON_CONST_CALL_TO_LITERAL_CONSTRUCTOR',
+    "This instance creation must be 'const', because the {0} constructor is marked as '@literal'.",
+    correction: "Try adding a 'const' keyword.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Generate a hint for non-const instance creation (with the `new` keyword)
+   * using a constructor annotated with `@literal`.
+   *
+   * Parameters:
+   * 0: the name of the class defining the annotated constructor
+   */
+  static const HintCode NON_CONST_CALL_TO_LITERAL_CONSTRUCTOR_USING_NEW =
+      HintCode(
+    'NON_CONST_CALL_TO_LITERAL_CONSTRUCTOR',
+    "This instance creation must be 'const', because the {0} constructor is marked as '@literal'.",
+    correction: "Try replacing the 'new' keyword with 'const'.",
+    hasPublishedDocs: true,
+    uniqueName: 'NON_CONST_CALL_TO_LITERAL_CONSTRUCTOR_USING_NEW',
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the type following `on` in a
+  // `catch` clause is a nullable type. It isn't valid to specify a nullable
+  // type because it isn't possible to catch `null` (because it's a runtime
+  // error to throw `null`).
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the exception type is
+  // specified to allow `null` when `null` can't be thrown:
+  //
+  // ```dart
+  // void f() {
+  //   try {
+  //     // ...
+  //   } on [!FormatException?!] {
+  //   }
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Remove the question mark from the type:
+  //
+  // ```dart
+  // void f() {
+  //   try {
+  //     // ...
+  //   } on FormatException {
+  //   }
+  // }
+  // ```
+  static const HintCode NULLABLE_TYPE_IN_CATCH_CLAUSE = HintCode(
+    'NULLABLE_TYPE_IN_CATCH_CLAUSE',
+    "A potentially nullable type can't be used in an 'on' clause because it isn't valid to throw a nullable expression.",
+    correction: "Try using a non-nullable type.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the method being invoked
+   * 1: the type argument associated with the method
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when `null` is passed to either the
+  // constructor `Future.value` or the method `Completer.complete` when the type
+  // argument used to create the instance was non-nullable. Even though the type
+  // system can't express this restriction, passing in a `null` results in a
+  // runtime exception.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because `null` is being passed
+  // to the constructor `Future.value` even though the type argument is the
+  // non-nullable type `String`:
+  //
+  // ```dart
+  // Future<String> f() {
+  //   return Future.value([!null!]);
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Pass in a non-null value:
+  //
+  // ```dart
+  // Future<String> f() {
+  //   return Future.value('');
+  // }
+  // ```
+  static const HintCode NULL_ARGUMENT_TO_NON_NULL_TYPE = HintCode(
+    'NULL_ARGUMENT_TO_NON_NULL_TYPE',
+    "'{0}' shouldn't be called with a null argument for the non-nullable type argument '{1}'.",
+    correction: "Try adding a non-null argument.",
+  );
+
+  /**
+   * When the left operand of a binary expression uses '?.' operator, it can be
+   * `null`.
+   */
+  static const HintCode NULL_AWARE_BEFORE_OPERATOR = HintCode(
+    'NULL_AWARE_BEFORE_OPERATOR',
+    "The left operand uses '?.', so its value can be null.",
+  );
+
+  /**
+   * A condition in a control flow statement could evaluate to `null` because it
+   * uses the null-aware '?.' operator.
+   */
+  static const HintCode NULL_AWARE_IN_CONDITION = HintCode(
+    'NULL_AWARE_IN_CONDITION',
+    "The value of the '?.' operator can be 'null', which isn't appropriate in a condition.",
+    correction:
+        "Try replacing the '?.' with a '.', testing the left-hand side for null if necessary.",
+  );
+
+  /**
+   * A condition in operands of a logical operator could evaluate to `null`
+   * because it uses the null-aware '?.' operator.
+   */
+  static const HintCode NULL_AWARE_IN_LOGICAL_OPERATOR = HintCode(
+    'NULL_AWARE_IN_LOGICAL_OPERATOR',
+    "The value of the '?.' operator can be 'null', which isn't appropriate as an operand of a logical operator.",
+  );
+
+  /**
+   * This hint indicates that a null literal is null-checked with `!`, but null
+   * is never not null.
+   */
+  static const HintCode NULL_CHECK_ALWAYS_FAILS = HintCode(
+    'NULL_CHECK_ALWAYS_FAILS',
+    "This null-check will always throw an exception because the expression will always evaluate to 'null'.",
+  );
+
+  /**
+   * A field with the override annotation does not override a getter or setter.
+   *
+   * No parameters.
+   */
+  static const HintCode OVERRIDE_ON_NON_OVERRIDING_FIELD = HintCode(
+    'OVERRIDE_ON_NON_OVERRIDING_MEMBER',
+    "The field doesn't override an inherited getter or setter.",
+    correction:
+        "Try updating this class to match the superclass, or removing the override annotation.",
+    hasPublishedDocs: true,
+    uniqueName: 'OVERRIDE_ON_NON_OVERRIDING_FIELD',
+  );
+
+  /**
+   * A getter with the override annotation does not override an existing getter.
+   *
+   * No parameters.
+   */
+  static const HintCode OVERRIDE_ON_NON_OVERRIDING_GETTER = HintCode(
+    'OVERRIDE_ON_NON_OVERRIDING_MEMBER',
+    "The getter doesn't override an inherited getter.",
+    correction:
+        "Try updating this class to match the superclass, or removing the override annotation.",
+    hasPublishedDocs: true,
+    uniqueName: 'OVERRIDE_ON_NON_OVERRIDING_GETTER',
+  );
+
+  /**
+   * A method with the override annotation does not override an existing method.
+   *
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a class member is annotated with
+  // the `@override` annotation, but the member isn’t declared in any of the
+  // supertypes of the class.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `m` isn't declared in
+  // any of the supertypes of `C`:
+  //
+  // ```dart
+  // class C {
+  //   @override
+  //   String [!m!]() => '';
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the member is intended to override a member with a different name, then
+  // update the member to have the same name:
+  //
+  // ```dart
+  // class C {
+  //   @override
+  //   String toString() => '';
+  // }
+  // ```
+  //
+  // If the member is intended to override a member that was removed from the
+  // superclass, then consider removing the member from the subclass.
+  //
+  // If the member can't be removed, then remove the annotation.
+  static const HintCode OVERRIDE_ON_NON_OVERRIDING_METHOD = HintCode(
+    'OVERRIDE_ON_NON_OVERRIDING_MEMBER',
+    "The method doesn't override an inherited method.",
+    correction:
+        "Try updating this class to match the superclass, or removing the override annotation.",
+    hasPublishedDocs: true,
+    uniqueName: 'OVERRIDE_ON_NON_OVERRIDING_METHOD',
+  );
+
+  /**
+   * A setter with the override annotation does not override an existing setter.
+   *
+   * No parameters.
+   */
+  static const HintCode OVERRIDE_ON_NON_OVERRIDING_SETTER = HintCode(
+    'OVERRIDE_ON_NON_OVERRIDING_MEMBER',
+    "The setter doesn't override an inherited setter.",
+    correction:
+        "Try updating this class to match the superclass, or removing the override annotation.",
+    hasPublishedDocs: true,
+    uniqueName: 'OVERRIDE_ON_NON_OVERRIDING_SETTER',
+  );
+
+  /**
+   * It is a bad practice for a package import to reference anything outside the
+   * given package, or more generally, it is bad practice for a package import
+   * to contain a "..". For example, a source file should not contain a
+   * directive such as `import 'package:foo/../some.dart'`.
+   */
+  static const HintCode PACKAGE_IMPORT_CONTAINS_DOT_DOT = HintCode(
+    'PACKAGE_IMPORT_CONTAINS_DOT_DOT',
+    "A package import shouldn't contain '..'.",
+  );
+
+  /**
+   * It is not an error to call or tear-off a method, setter, or getter, or to
+   * read or write a field, on a receiver of static type `Never`.
+   * Implementations that provide feedback about dead or unreachable code are
+   * encouraged to indicate that any arguments to the invocation are
+   * unreachable.
+   *
+   * It is not an error to apply an expression of type `Never` in the function
+   * position of a function call. Implementations that provide feedback about
+   * dead or unreachable code are encouraged to indicate that any arguments to
+   * the call are unreachable.
+   *
+   * Parameters: none
+   */
+  static const HintCode RECEIVER_OF_TYPE_NEVER = HintCode(
+    'RECEIVER_OF_TYPE_NEVER',
+    "The receiver is of type 'Never', and will never complete with a value.",
+    correction:
+        "Try checking for throw expressions or type errors in the receiver",
+  );
+
+  /**
+   * Users should not return values marked `@doNotStore` from functions,
+   * methods or getters not marked `@doNotStore`.
+   */
+  static const HintCode RETURN_OF_DO_NOT_STORE = HintCode(
+    'RETURN_OF_DO_NOT_STORE',
+    "'{0}' is annotated with 'doNotStore' and shouldn't be returned unless '{1}' is also annotated.",
+    correction: "Annotate '{1}' with 'doNotStore'.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the return type as declared in the return statement
+   * 1: the expected return type as defined by the type of the Future
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an invocation of
+  // `Future.catchError` has an argument whose return type isn't compatible with
+  // the type returned by the instance of `Future`. At runtime, the method
+  // `catchError` attempts to return the value from the callback as the result
+  // of the future, which results in another exception being thrown.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because `future` is declared to
+  // return an `int` while `callback` is declared to return a `String`, and
+  // `String` isn't a subtype of `int`:
+  //
+  // ```dart
+  // void f(Future<int> future, String Function(dynamic, StackTrace) callback) {
+  //   future.catchError([!callback!]);
+  // }
+  // ```
+  //
+  // The following code produces this diagnostic because the closure being
+  // passed to `catchError` returns an `int` while `future` is declared to
+  // return a `String`:
+  //
+  // ```dart
+  // void f(Future<String> future) {
+  //   future.catchError((error, stackTrace) => [!3!]);
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the instance of `Future` is declared correctly, then change the callback
+  // to match:
+  //
+  // ```dart
+  // void f(Future<int> future, int Function(dynamic, StackTrace) callback) {
+  //   future.catchError(callback);
+  // }
+  // ```
+  //
+  // If the declaration of the instance of `Future` is wrong, then change it to
+  // match the callback:
+  //
+  // ```dart
+  // void f(Future<String> future, String Function(dynamic, StackTrace) callback) {
+  //   future.catchError(callback);
+  // }
+  // ```
+  static const HintCode RETURN_OF_INVALID_TYPE_FROM_CATCH_ERROR = HintCode(
+    'INVALID_RETURN_TYPE_FOR_CATCH_ERROR',
+    "A value of type '{0}' can't be returned by the 'onError' handler because it must be assignable to '{1}'.",
+    hasPublishedDocs: true,
+    uniqueName: 'RETURN_OF_INVALID_TYPE_FROM_CATCH_ERROR',
+  );
+
+  /**
+   * Parameters:
+   * 0: the return type of the function
+   * 1: the expected return type as defined by the type of the Future
+   */
+  static const HintCode RETURN_TYPE_INVALID_FOR_CATCH_ERROR = HintCode(
+    'INVALID_RETURN_TYPE_FOR_CATCH_ERROR',
+    "The return type '{0}' isn't assignable to '{1}', as required by 'Future.catchError'.",
+    hasPublishedDocs: true,
+    uniqueName: 'RETURN_TYPE_INVALID_FOR_CATCH_ERROR',
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when either the class `Future` or
+  // `Stream` is referenced in a library that doesn't import `dart:async` in
+  // code that has an SDK constraint whose lower bound is less than 2.1.0. In
+  // earlier versions, these classes weren't defined in `dart:core`, so the
+  // import was necessary.
+  //
+  // #### Examples
+  //
+  // Here's an example of a pubspec that defines an SDK constraint with a lower
+  // bound of less than 2.1.0:
+  //
+  // ```yaml
+  // %uri="pubspec.yaml"
+  // environment:
+  //   sdk: '>=2.0.0 <2.4.0'
+  // ```
+  //
+  // In the package that has that pubspec, code like the following produces this
+  // diagnostic:
+  //
+  // ```dart
+  // void f([!Future!] f) {}
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you don't need to support older versions of the SDK, then you can
+  // increase the SDK constraint to allow the classes to be referenced:
+  //
+  // ```yaml
+  // environment:
+  //   sdk: '>=2.1.0 <2.4.0'
+  // ```
+  //
+  // If you need to support older versions of the SDK, then import the
+  // `dart:async` library.
+  //
+  // ```dart
+  // import 'dart:async';
+  //
+  // void f(Future f) {}
+  // ```
+  static const HintCode SDK_VERSION_ASYNC_EXPORTED_FROM_CORE = HintCode(
+    'SDK_VERSION_ASYNC_EXPORTED_FROM_CORE',
+    "The class '{0}' wasn't exported from 'dart:core' until version 2.1, but this code is required to be able to run on earlier versions.",
+    correction:
+        "Try either importing 'dart:async' or updating the SDK constraints.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an `as` expression inside a
+  // [constant context][] is found in code that has an SDK constraint whose
+  // lower bound is less than 2.3.2. Using an `as` expression in a
+  // [constant context][] wasn't supported in earlier versions, so this code
+  // won't be able to run against earlier versions of the SDK.
+  //
+  // #### Examples
+  //
+  // Here's an example of a pubspec that defines an SDK constraint with a lower
+  // bound of less than 2.3.2:
+  //
+  // ```yaml
+  // %uri="pubspec.yaml"
+  // environment:
+  //   sdk: '>=2.1.0 <2.4.0'
+  // ```
+  //
+  // In the package that has that pubspec, code like the following produces
+  // this diagnostic:
+  //
+  // ```dart
+  // const num n = 3;
+  // const int i = [!n as int!];
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you don't need to support older versions of the SDK, then you can
+  // increase the SDK constraint to allow the expression to be used:
+  //
+  // ```yaml
+  // environment:
+  //   sdk: '>=2.3.2 <2.4.0'
+  // ```
+  //
+  // If you need to support older versions of the SDK, then either rewrite the
+  // code to not use an `as` expression, or change the code so that the `as`
+  // expression isn't in a [constant context][]:
+  //
+  // ```dart
+  // num x = 3;
+  // int y = x as int;
+  // ```
+  static const HintCode SDK_VERSION_AS_EXPRESSION_IN_CONST_CONTEXT = HintCode(
+    'SDK_VERSION_AS_EXPRESSION_IN_CONST_CONTEXT',
+    "The use of an as expression in a constant expression wasn't supported until version 2.3.2, but this code is required to be able to run on earlier versions.",
+    correction: "Try updating the SDK constraints.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when any use of the `&`, `|`, or `^`
+  // operators on the class `bool` inside a [constant context][] is found in
+  // code that has an SDK constraint whose lower bound is less than 2.3.2. Using
+  // these operators in a [constant context][] wasn't supported in earlier
+  // versions, so this code won't be able to run against earlier versions of the
+  // SDK.
+  //
+  // #### Examples
+  //
+  // Here's an example of a pubspec that defines an SDK constraint with a lower
+  // bound of less than 2.3.2:
+  //
+  // ```yaml
+  // %uri="pubspec.yaml"
+  // environment:
+  //   sdk: '>=2.1.0 <2.4.0'
+  // ```
+  //
+  // In the package that has that pubspec, code like the following produces this
+  // diagnostic:
+  //
+  // ```dart
+  // const bool a = true;
+  // const bool b = false;
+  // const bool c = a [!&!] b;
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you don't need to support older versions of the SDK, then you can
+  // increase the SDK constraint to allow the operators to be used:
+  //
+  // ```yaml
+  // environment:
+  //  sdk: '>=2.3.2 <2.4.0'
+  // ```
+  //
+  // If you need to support older versions of the SDK, then either rewrite the
+  // code to not use these operators, or change the code so that the expression
+  // isn't in a [constant context][]:
+  //
+  // ```dart
+  // const bool a = true;
+  // const bool b = false;
+  // bool c = a & b;
+  // ```
+  static const HintCode SDK_VERSION_BOOL_OPERATOR_IN_CONST_CONTEXT = HintCode(
+    'SDK_VERSION_BOOL_OPERATOR_IN_CONST_CONTEXT',
+    "The use of the operator '{0}' for 'bool' operands in a constant context wasn't supported until version 2.3.2, but this code is required to be able to run on earlier versions.",
+    correction: "Try updating the SDK constraints.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   *
+   * There is also a [ParserError.EXPERIMENT_NOT_ENABLED] code which catches
+   * some cases of constructor tearoff features (like `List<int>.filled;`).
+   * Other constructor tearoff cases are not realized until resolution
+   * (like `List.filled;`).
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a constructor tear-off is found
+  // in code that has an SDK constraint whose lower bound is less than 2.15.
+  // Constructor tear-offs weren't supported in earlier versions, so this code
+  // won't be able to run against earlier versions of the SDK.
+  //
+  // #### Example
+  //
+  // Here's an example of a pubspec that defines an SDK constraint with a lower
+  // bound of less than 2.15:
+  //
+  // ```yaml
+  // %uri="pubspec.yaml"
+  // environment:
+  //   sdk: '>=2.9.0 <2.15.0'
+  // ```
+  //
+  // In the package that has that pubspec, code like the following produces this
+  // diagnostic:
+  //
+  // ```dart
+  // %language=2.14
+  // var setConstructor = [!Set.identity!];
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you don't need to support older versions of the SDK, then you can
+  // increase the SDK constraint to allow the operator to be used:
+  //
+  // ```yaml
+  // environment:
+  //   sdk: '>=2.15.0 <2.16.0'
+  // ```
+  //
+  // If you need to support older versions of the SDK, then rewrite the code to
+  // not use constructor tear-offs:
+  //
+  // ```dart
+  // %language=2.14
+  // var setConstructor = () => Set.identity();
+  // ```
+  static const HintCode SDK_VERSION_CONSTRUCTOR_TEAROFFS = HintCode(
+    'SDK_VERSION_CONSTRUCTOR_TEAROFFS',
+    "Tearing off a constructor requires the 'constructor-tearoffs' language feature.",
+    correction:
+        "Try updating your pubspec.yaml to set the minimum SDK constraint to 2.15 or higher, and running 'pub get'.",
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the operator `==` is used on a
+  // non-primitive type inside a [constant context][] is found in code that has
+  // an SDK constraint whose lower bound is less than 2.3.2. Using this operator
+  // in a [constant context][] wasn't supported in earlier versions, so this
+  // code won't be able to run against earlier versions of the SDK.
+  //
+  // #### Examples
+  //
+  // Here's an example of a pubspec that defines an SDK constraint with a lower
+  // bound of less than 2.3.2:
+  //
+  // ```yaml
+  // %uri="pubspec.yaml"
+  // environment:
+  //   sdk: '>=2.1.0 <2.4.0'
+  // ```
+  //
+  // In the package that has that pubspec, code like the following produces this
+  // diagnostic:
+  //
+  // ```dart
+  // %language=2.9
+  // class C {}
+  // const C a = null;
+  // const C b = null;
+  // const bool same = a [!==!] b;
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you don't need to support older versions of the SDK, then you can
+  // increase the SDK constraint to allow the operator to be used:
+  //
+  // ```yaml
+  // environment:
+  //   sdk: '>=2.3.2 <2.4.0'
+  // ```
+  //
+  // If you need to support older versions of the SDK, then either rewrite the
+  // code to not use the `==` operator, or change the code so that the
+  // expression isn't in a [constant context][]:
+  //
+  // ```dart
+  // %language=2.9
+  // class C {}
+  // const C a = null;
+  // const C b = null;
+  // bool same = a == b;
+  // ```
+  static const HintCode SDK_VERSION_EQ_EQ_OPERATOR_IN_CONST_CONTEXT = HintCode(
+    'SDK_VERSION_EQ_EQ_OPERATOR_IN_CONST_CONTEXT',
+    "Using the operator '==' for non-primitive types wasn't supported until version 2.3.2, but this code is required to be able to run on earlier versions.",
+    correction: "Try updating the SDK constraints.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an extension declaration or an
+  // extension override is found in code that has an SDK constraint whose lower
+  // bound is less than 2.6.0. Using extensions wasn't supported in earlier
+  // versions, so this code won't be able to run against earlier versions of the
+  // SDK.
+  //
+  // #### Examples
+  //
+  // Here's an example of a pubspec that defines an SDK constraint with a lower
+  // bound of less than 2.6.0:
+  //
+  // ```yaml
+  // %uri="pubspec.yaml"
+  // environment:
+  //  sdk: '>=2.4.0 <2.7.0'
+  // ```
+  //
+  // In the package that has that pubspec, code like the following produces
+  // this diagnostic:
+  //
+  // ```dart
+  // [!extension!] E on String {
+  //   void sayHello() {
+  //     print('Hello $this');
+  //   }
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you don't need to support older versions of the SDK, then you can
+  // increase the SDK constraint to allow the syntax to be used:
+  //
+  // ```yaml
+  // environment:
+  //   sdk: '>=2.6.0 <2.7.0'
+  // ```
+  //
+  // If you need to support older versions of the SDK, then rewrite the code to
+  // not make use of extensions. The most common way to do this is to rewrite
+  // the members of the extension as top-level functions (or methods) that take
+  // the value that would have been bound to `this` as a parameter:
+  //
+  // ```dart
+  // void sayHello(String s) {
+  //   print('Hello $s');
+  // }
+  // ```
+  static const HintCode SDK_VERSION_EXTENSION_METHODS = HintCode(
+    'SDK_VERSION_EXTENSION_METHODS',
+    "Extension methods weren't supported until version 2.6.0, but this code is required to be able to run on earlier versions.",
+    correction: "Try updating the SDK constraints.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the operator `>>>` is used in
+  // code that has an SDK constraint whose lower bound is less than 2.14.0. This
+  // operator wasn't supported in earlier versions, so this code won't be able
+  // to run against earlier versions of the SDK.
+  //
+  // #### Examples
+  //
+  // Here's an example of a pubspec that defines an SDK constraint with a lower
+  // bound of less than 2.14.0:
+  //
+  // ```yaml
+  // %uri="pubspec.yaml"
+  // environment:
+  //  sdk: '>=2.0.0 <2.15.0'
+  // ```
+  //
+  // In the package that has that pubspec, code like the following produces this
+  // diagnostic:
+  //
+  // ```dart
+  // int x = 3 [!>>>!] 4;
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you don't need to support older versions of the SDK, then you can
+  // increase the SDK constraint to allow the operator to be used:
+  //
+  // ```yaml
+  // environment:
+  //   sdk: '>=2.14.0 <2.15.0'
+  // ```
+  //
+  // If you need to support older versions of the SDK, then rewrite the code to
+  // not use the `>>>` operator:
+  //
+  // ```dart
+  // int x = logicalShiftRight(3, 4);
+  //
+  // int logicalShiftRight(int leftOperand, int rightOperand) {
+  //   int divisor = 1 << rightOperand;
+  //   if (divisor == 0) {
+  //     return 0;
+  //   }
+  //   return leftOperand ~/ divisor;
+  // }
+  // ```
+  static const HintCode SDK_VERSION_GT_GT_GT_OPERATOR = HintCode(
+    'SDK_VERSION_GT_GT_GT_OPERATOR',
+    "The operator '>>>' wasn't supported until version 2.14.0, but this code is required to be able to run on earlier versions.",
+    correction: "Try updating the SDK constraints.",
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an `is` expression inside a
+  // [constant context][] is found in code that has an SDK constraint whose
+  // lower bound is less than 2.3.2. Using an `is` expression in a
+  // [constant context][] wasn't supported in earlier versions, so this code
+  // won't be able to run against earlier versions of the SDK.
+  //
+  // #### Examples
+  //
+  // Here's an example of a pubspec that defines an SDK constraint with a lower
+  // bound of less than 2.3.2:
+  //
+  // ```yaml
+  // %uri="pubspec.yaml"
+  // environment:
+  //   sdk: '>=2.1.0 <2.4.0'
+  // ```
+  //
+  // In the package that has that pubspec, code like the following produces
+  // this diagnostic:
+  //
+  // ```dart
+  // const Object x = 4;
+  // const y = [!x is int!] ? 0 : 1;
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you don't need to support older versions of the SDK, then you can
+  // increase the SDK constraint to allow the expression to be used:
+  //
+  // ```yaml
+  // environment:
+  //   sdk: '>=2.3.2 <2.4.0'
+  // ```
+  //
+  // If you need to support older versions of the SDK, then either rewrite the
+  // code to not use the `is` operator, or, if that isn't possible, change the
+  // code so that the `is` expression isn't in a
+  // [constant context][]:
+  //
+  // ```dart
+  // const Object x = 4;
+  // var y = x is int ? 0 : 1;
+  // ```
+  static const HintCode SDK_VERSION_IS_EXPRESSION_IN_CONST_CONTEXT = HintCode(
+    'SDK_VERSION_IS_EXPRESSION_IN_CONST_CONTEXT',
+    "The use of an is expression in a constant context wasn't supported until version 2.3.2, but this code is required to be able to run on earlier versions.",
+    correction: "Try updating the SDK constraints.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a reference to the class `Never`
+  // is found in code that has an SDK constraint whose lower bound is less than
+  // 2.12.0. This class wasn't defined in earlier versions, so this code won't
+  // be able to run against earlier versions of the SDK.
+  //
+  // #### Examples
+  //
+  // Here's an example of a pubspec that defines an SDK constraint with a lower
+  // bound of less than 2.12.0:
+  //
+  // ```yaml
+  // %uri="pubspec.yaml"
+  // environment:
+  //   sdk: '>=2.5.0 <2.6.0'
+  // ```
+  //
+  // In the package that has that pubspec, code like the following produces this
+  // diagnostic:
+  //
+  // ```dart
+  // %language=2.9
+  // [!Never!] n;
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you don't need to support older versions of the SDK, then you can
+  // increase the SDK constraint to allow the type to be used:
+  //
+  // ```yaml
+  // environment:
+  //   sdk: '>=2.12.0 <2.13.0'
+  // ```
+  //
+  // If you need to support older versions of the SDK, then rewrite the code to
+  // not reference this class:
+  //
+  // ```dart
+  // dynamic x;
+  // ```
+  static const HintCode SDK_VERSION_NEVER = HintCode(
+    'SDK_VERSION_NEVER',
+    "The type 'Never' wasn't supported until version 2.12.0, but this code is required to be able to run on earlier versions.",
+    correction: "Try updating the SDK constraints.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a set literal is found in code
+  // that has an SDK constraint whose lower bound is less than 2.2.0. Set
+  // literals weren't supported in earlier versions, so this code won't be able
+  // to run against earlier versions of the SDK.
+  //
+  // #### Examples
+  //
+  // Here's an example of a pubspec that defines an SDK constraint with a lower
+  // bound of less than 2.2.0:
+  //
+  // ```yaml
+  // %uri="pubspec.yaml"
+  // environment:
+  //   sdk: '>=2.1.0 <2.4.0'
+  // ```
+  //
+  // In the package that has that pubspec, code like the following produces this
+  // diagnostic:
+  //
+  // ```dart
+  // var s = [!<int>{}!];
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you don't need to support older versions of the SDK, then you can
+  // increase the SDK constraint to allow the syntax to be used:
+  //
+  // ```yaml
+  // environment:
+  //   sdk: '>=2.2.0 <2.4.0'
+  // ```
+  //
+  // If you do need to support older versions of the SDK, then replace the set
+  // literal with code that creates the set without the use of a literal:
+  //
+  // ```dart
+  // var s = new Set<int>();
+  // ```
+  static const HintCode SDK_VERSION_SET_LITERAL = HintCode(
+    'SDK_VERSION_SET_LITERAL',
+    "Set literals weren't supported until version 2.2, but this code is required to be able to run on earlier versions.",
+    correction: "Try updating the SDK constraints.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a for, if, or spread element is
+  // found in code that has an SDK constraint whose lower bound is less than
+  // 2.3.0. Using a for, if, or spread element wasn't supported in earlier
+  // versions, so this code won't be able to run against earlier versions of the
+  // SDK.
+  //
+  // #### Examples
+  //
+  // Here's an example of a pubspec that defines an SDK constraint with a lower
+  // bound of less than 2.3.0:
+  //
+  // ```yaml
+  // %uri="pubspec.yaml"
+  // environment:
+  //   sdk: '>=2.2.0 <2.4.0'
+  // ```
+  //
+  // In the package that has that pubspec, code like the following produces
+  // this diagnostic:
+  //
+  // ```dart
+  // var digits = [[!for (int i = 0; i < 10; i++) i!]];
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you don't need to support older versions of the SDK, then you can
+  // increase the SDK constraint to allow the syntax to be used:
+  //
+  // ```yaml
+  // environment:
+  //   sdk: '>=2.3.0 <2.4.0'
+  // ```
+  //
+  // If you need to support older versions of the SDK, then rewrite the code to
+  // not make use of those elements:
+  //
+  // ```dart
+  // var digits = _initializeDigits();
+  //
+  // List<int> _initializeDigits() {
+  //   var digits = <int>[];
+  //   for (int i = 0; i < 10; i++) {
+  //     digits.add(i);
+  //   }
+  //   return digits;
+  // }
+  // ```
+  static const HintCode SDK_VERSION_UI_AS_CODE = HintCode(
+    'SDK_VERSION_UI_AS_CODE',
+    "The for, if, and spread elements weren't supported until version 2.3.0, but this code is required to be able to run on earlier versions.",
+    correction: "Try updating the SDK constraints.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an if or spread element inside
+  // a [constant context][] is found in code that has an SDK constraint whose
+  // lower bound is less than 2.5.0. Using an if or spread element inside a
+  // [constant context][] wasn't supported in earlier versions, so this code
+  // won't be able to run against earlier versions of the SDK.
+  //
+  // #### Examples
+  //
+  // Here's an example of a pubspec that defines an SDK constraint with a lower
+  // bound of less than 2.5.0:
+  //
+  // ```yaml
+  // %uri="pubspec.yaml"
+  // environment:
+  //   sdk: '>=2.4.0 <2.6.0'
+  // ```
+  //
+  // In the package that has that pubspec, code like the following produces
+  // this diagnostic:
+  //
+  // ```dart
+  // const a = [1, 2];
+  // const b = [[!...a!]];
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you don't need to support older versions of the SDK, then you can
+  // increase the SDK constraint to allow the syntax to be used:
+  //
+  // ```yaml
+  // environment:
+  //   sdk: '>=2.5.0 <2.6.0'
+  // ```
+  //
+  // If you need to support older versions of the SDK, then rewrite the code to
+  // not make use of those elements:
+  //
+  // ```dart
+  // const a = [1, 2];
+  // const b = [1, 2];
+  // ```
+  //
+  // If that isn't possible, change the code so that the element isn't in a
+  // [constant context][]:
+  //
+  // ```dart
+  // const a = [1, 2];
+  // var b = [...a];
+  // ```
+  static const HintCode SDK_VERSION_UI_AS_CODE_IN_CONST_CONTEXT = HintCode(
+    'SDK_VERSION_UI_AS_CODE_IN_CONST_CONTEXT',
+    "The if and spread elements weren't supported in constant expressions until version 2.5.0, but this code is required to be able to run on earlier versions.",
+    correction: "Try updating the SDK constraints.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * When "strict-raw-types" is enabled, "raw types" must have type arguments.
+   *
+   * A "raw type" is a type name that does not use inference to fill in missing
+   * type arguments; instead, each type argument is instantiated to its bound.
+   */
+  static const HintCode STRICT_RAW_TYPE = HintCode(
+    'STRICT_RAW_TYPE',
+    "The generic type '{0}' should have explicit type arguments but doesn't.",
+    correction: "Use explicit type arguments for '{0}'.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the sealed class
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a sealed class (one that either
+  // has the `@sealed` annotation or inherits or mixes in a sealed class) is
+  // referenced in either the `extends`, `implements`, or `with` clause of a
+  // class or mixin declaration if the declaration isn't in the same package as
+  // the sealed class.
+  //
+  // #### Example
+  //
+  // Given a library in a package other than the package being analyzed that
+  // contains the following:
+  //
+  // ```dart
+  // %uri="package:a/a.dart"
+  // import 'package:meta/meta.dart';
+  //
+  // class A {}
+  //
+  // @sealed
+  // class B {}
+  // ```
+  //
+  // The following code produces this diagnostic because `C`, which isn't in the
+  // same package as `B`, is extending the sealed class `B`:
+  //
+  // ```dart
+  // import 'package:a/a.dart';
+  //
+  // [!class C extends B {}!]
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the class doesn't need to be a subtype of the sealed class, then change
+  // the declaration so that it isn't:
+  //
+  // ```dart
+  // import 'package:a/a.dart';
+  //
+  // class B extends A {}
+  // ```
+  //
+  // If the class needs to be a subtype of the sealed class, then either change
+  // the sealed class so that it's no longer sealed or move the subclass into
+  // the same package as the sealed class.
+  static const HintCode SUBTYPE_OF_SEALED_CLASS = HintCode(
+    'SUBTYPE_OF_SEALED_CLASS',
+    "The class '{0}' shouldn't be extended, mixed in, or implemented because it's sealed.",
+    correction:
+        "Try composing instead of inheriting, or refer to the documentation of '{0}' for more information.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when there's a type check (using the
+  // `as` operator) where the type is `Null`. There's only one value whose type
+  // is `Null`, so the code is both more readable and more performant when it
+  // tests for `null` explicitly.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the code is testing to
+  // see whether the value of `s` is `null` by using a type check:
+  //
+  // ```dart
+  // void f(String? s) {
+  //   if ([!s is Null!]) {
+  //     return;
+  //   }
+  //   print(s);
+  // }
+  // ```
+  //
+  // The following code produces this diagnostic because the code is testing to
+  // see whether the value of `s` is something other than `null` by using a type
+  // check:
+  //
+  // ```dart
+  // void f(String? s) {
+  //   if ([!s is! Null!]) {
+  //     print(s);
+  //   }
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Replace the type check with the equivalent comparison with `null`:
+  //
+  // ```dart
+  // void f(String? s) {
+  //   if (s == null) {
+  //     return;
+  //   }
+  //   print(s);
+  // }
+  // ```
+  static const HintCode TYPE_CHECK_IS_NOT_NULL = HintCode(
+    'TYPE_CHECK_WITH_NULL',
+    "Tests for non-null should be done with '!= null'.",
+    correction: "Try replacing the 'is! Null' check with '!= null'.",
+    hasPublishedDocs: true,
+    uniqueName: 'TYPE_CHECK_IS_NOT_NULL',
+  );
+
+  /**
+   * No parameters.
+   */
+  static const HintCode TYPE_CHECK_IS_NULL = HintCode(
+    'TYPE_CHECK_WITH_NULL',
+    "Tests for null should be done with '== null'.",
+    correction: "Try replacing the 'is Null' check with '== null'.",
+    hasPublishedDocs: true,
+    uniqueName: 'TYPE_CHECK_IS_NULL',
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the library being imported
+   * 1: the name in the hide clause that isn't defined in the library
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a hide combinator includes a
+  // name that isn't defined by the library being imported.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `dart:math` doesn't
+  // define the name `String`:
+  //
+  // ```dart
+  // import 'dart:math' hide [!String!], max;
+  //
+  // var x = min(0, 1);
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If a different name should be hidden, then correct the name. Otherwise,
+  // remove the name from the list:
+  //
+  // ```dart
+  // import 'dart:math' hide max;
+  //
+  // var x = min(0, 1);
+  // ```
+  static const HintCode UNDEFINED_HIDDEN_NAME = HintCode(
+    'UNDEFINED_HIDDEN_NAME',
+    "The library '{0}' doesn't export a member with the hidden name '{1}'.",
+    correction: "Try removing the name from the list of hidden members.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the undefined parameter
+   * 1: the name of the targeted member
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an annotation of the form
+  // `@UnusedResult.unless(parameterDefined: parameterName)` specifies a
+  // parameter name that isn't defined by the annotated function.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the function `f`
+  // doesn't have a parameter named `b`:
+  //
+  // ```dart
+  // import 'package:meta/meta.dart';
+  //
+  // @UseResult.unless(parameterDefined: [!'b'!])
+  // int f([int? a]) => a ?? 0;
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Change the argument named `parameterDefined` to match the name of one of
+  // the parameters to the function:
+  //
+  // ```dart
+  // import 'package:meta/meta.dart';
+  //
+  // @UseResult.unless(parameterDefined: 'a')
+  // int f([int? a]) => a ?? 0;
+  // ```
+  static const HintCode UNDEFINED_REFERENCED_PARAMETER = HintCode(
+    'UNDEFINED_REFERENCED_PARAMETER',
+    "The parameter '{0}' is not defined by '{1}'.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the library being imported
+   * 1: the name in the show clause that isn't defined in the library
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a show combinator includes a
+  // name that isn't defined by the library being imported.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `dart:math` doesn't
+  // define the name `String`:
+  //
+  // ```dart
+  // import 'dart:math' show min, [!String!];
+  //
+  // var x = min(0, 1);
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If a different name should be shown, then correct the name. Otherwise,
+  // remove the name from the list:
+  //
+  // ```dart
+  // import 'dart:math' show min;
+  //
+  // var x = min(0, 1);
+  // ```
+  static const HintCode UNDEFINED_SHOWN_NAME = HintCode(
+    'UNDEFINED_SHOWN_NAME',
+    "The library '{0}' doesn't export a member with the shown name '{1}'.",
+    correction: "Try removing the name from the list of shown members.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the non-diagnostic being ignored
+   */
+  static const HintCode UNIGNORABLE_IGNORE = HintCode(
+    'UNIGNORABLE_IGNORE',
+    "The diagnostic '{0}' can't be ignored.",
+    correction:
+        "Try removing the name from the list, or removing the whole comment if this is the only name in the list.",
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the value being cast is already
+  // known to be of the type that it's being cast to.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `n` is already known to
+  // be an `int` as a result of the `is` test:
+  //
+  // ```dart
+  // void f(num n) {
+  //   if (n is int) {
+  //     ([!n as int!]).isEven;
+  //   }
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Remove the unnecessary cast:
+  //
+  // ```dart
+  // void f(num n) {
+  //   if (n is int) {
+  //     n.isEven;
+  //   }
+  // }
+  // ```
+  static const HintCode UNNECESSARY_CAST = HintCode(
+    'UNNECESSARY_CAST',
+    "Unnecessary cast.",
+    correction: "Try removing the cast.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the diagnostic being ignored
+   */
+  static const HintCode UNNECESSARY_IGNORE = HintCode(
+    'UNNECESSARY_IGNORE',
+    "The diagnostic '{0}' isn't produced at this location so it doesn't need to be ignored.",
+    correction:
+        "Try removing the name from the list, or removing the whole comment if this is the only name in the list.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the uri that is not necessary
+   * 1: the uri that makes it unnecessary
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an import isn't needed because
+  // all of the names that are imported and referenced within the importing
+  // library are also visible through another import.
+  //
+  // #### Example
+  //
+  // Given a file named `a.dart` that contains the following:
+  //
+  // ```dart
+  // %uri="lib/a.dart"
+  // class A {}
+  // ```
+  //
+  // And, given a file named `b.dart` that contains the following:
+  //
+  // ```dart
+  // %uri="lib/b.dart"
+  // export 'a.dart';
+  //
+  // class B {}
+  // ```
+  //
+  // The following code produces this diagnostic because the class `A`, which is
+  // imported from `a.dart`, is also imported from `b.dart`. Removing the import
+  // of `a.dart` leaves the semantics unchanged:
+  //
+  // ```dart
+  // import [!'a.dart'!];
+  // import 'b.dart';
+  //
+  // void f(A a, B b) {}
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the import isn't needed, then remove it.
+  //
+  // If some of the names imported by this import are intended to be used but
+  // aren't yet, and if those names aren't imported by other imports, then add
+  // the missing references to those names.
+  static const HintCode UNNECESSARY_IMPORT = HintCode(
+    'UNNECESSARY_IMPORT',
+    "The import of '{0}' is unnecessary because all of the used elements are also provided by the import of '{1}'.",
+    correction: "Try removing the import directive.",
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when there's a declaration of
+  // `noSuchMethod`, the only thing the declaration does is invoke the
+  // overridden declaration, and the overridden declaration isn't the
+  // declaration in `Object`.
+  //
+  // Overriding the implementation of `Object`'s `noSuchMethod` (no matter what
+  // the implementation does) signals to the analyzer that it shouldn't flag any
+  // inherited abstract methods that aren't implemented in that class. This
+  // works even if the overriding implementation is inherited from a superclass,
+  // so there's no value to declare it again in a subclass.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the declaration of
+  // `noSuchMethod` in `A` makes the declaration of `noSuchMethod` in `B`
+  // unnecessary:
+  //
+  // ```dart
+  // class A {
+  //   @override
+  //   dynamic noSuchMethod(x) => super.noSuchMethod(x);
+  // }
+  // class B extends A {
+  //   @override
+  //   dynamic [!noSuchMethod!](y) {
+  //     return super.noSuchMethod(y);
+  //   }
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Remove the unnecessary declaration:
+  //
+  // ```dart
+  // class A {
+  //   @override
+  //   dynamic noSuchMethod(x) => super.noSuchMethod(x);
+  // }
+  // class B extends A {}
+  // ```
+  static const HintCode UNNECESSARY_NO_SUCH_METHOD = HintCode(
+    'UNNECESSARY_NO_SUCH_METHOD',
+    "Unnecessary 'noSuchMethod' declaration.",
+    correction: "Try removing the declaration of 'noSuchMethod'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when it finds an equality comparison
+  // (either `==` or `!=`) with one operand of `null` and the other operand
+  // can't be `null`. Such comparisons are always either `true` or `false`, so
+  // they serve no purpose.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because `x` can never be
+  // `null`, so the comparison always evaluates to `true`:
+  //
+  // ```dart
+  // void f(int x) {
+  //   if (x [!!= null!]) {
+  //     print(x);
+  //   }
+  // }
+  // ```
+  //
+  // The following code produces this diagnostic because `x` can never be
+  // `null`, so the comparison always evaluates to `false`:
+  //
+  // ```dart
+  // void f(int x) {
+  //   if (x [!== null!]) {
+  //     throw ArgumentError("x can't be null");
+  //   }
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the other operand should be able to be `null`, then change the type of
+  // the operand:
+  //
+  // ```dart
+  // void f(int? x) {
+  //   if (x != null) {
+  //     print(x);
+  //   }
+  // }
+  // ```
+  //
+  // If the other operand really can't be `null`, then remove the condition:
+  //
+  // ```dart
+  // void f(int x) {
+  //   print(x);
+  // }
+  // ```
+  static const HintCode UNNECESSARY_NULL_COMPARISON_FALSE = HintCode(
+    'UNNECESSARY_NULL_COMPARISON',
+    "The operand can't be null, so the condition is always false.",
+    correction:
+        "Try removing the condition, an enclosing condition, or the whole conditional statement.",
+    hasPublishedDocs: true,
+    uniqueName: 'UNNECESSARY_NULL_COMPARISON_FALSE',
+  );
+
+  /**
+   * No parameters.
+   */
+  static const HintCode UNNECESSARY_NULL_COMPARISON_TRUE = HintCode(
+    'UNNECESSARY_NULL_COMPARISON',
+    "The operand can't be null, so the condition is always true.",
+    correction: "Remove the condition.",
+    hasPublishedDocs: true,
+    uniqueName: 'UNNECESSARY_NULL_COMPARISON_TRUE',
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the type
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when either the type `dynamic` or the
+  // type `Null` is followed by a question mark. Both of these types are
+  // inherently nullable so the question mark doesn't change the semantics.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the question mark
+  // following `dynamic` isn't necessary:
+  //
+  // ```dart
+  // dynamic[!?!] x;
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Remove the unneeded question mark:
+  //
+  // ```dart
+  // dynamic x;
+  // ```
+  static const HintCode UNNECESSARY_QUESTION_MARK = HintCode(
+    'UNNECESSARY_QUESTION_MARK',
+    "The '?' is unnecessary because '{0}' is nullable without it.",
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the value of a type check (using
+  // either `is` or `is!`) is known at compile time.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the test `a is Object?`
+  // is always `true`:
+  //
+  // ```dart
+  // bool f<T>(T a) => [!a is Object?!];
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the type check doesn't check what you intended to check, then change the
+  // test:
+  //
+  // ```dart
+  // bool f<T>(T a) => a is Object;
+  // ```
+  //
+  // If the type check does check what you intended to check, then replace the
+  // type check with its known value or completely remove it:
+  //
+  // ```dart
+  // bool f<T>(T a) => true;
+  // ```
+  static const HintCode UNNECESSARY_TYPE_CHECK_FALSE = HintCode(
+    'UNNECESSARY_TYPE_CHECK',
+    "Unnecessary type check; the result is always 'false'.",
+    correction: "Try correcting the type check, or removing the type check.",
+    hasPublishedDocs: true,
+    uniqueName: 'UNNECESSARY_TYPE_CHECK_FALSE',
+  );
+
+  /**
+   * No parameters.
+   */
+  static const HintCode UNNECESSARY_TYPE_CHECK_TRUE = HintCode(
+    'UNNECESSARY_TYPE_CHECK',
+    "Unnecessary type check; the result is always 'true'.",
+    correction: "Try correcting the type check, or removing the type check.",
+    hasPublishedDocs: true,
+    uniqueName: 'UNNECESSARY_TYPE_CHECK_TRUE',
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the exception variable
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a `catch` clause is found, and
+  // neither the exception parameter nor the optional stack trace parameter are
+  // used in the `catch` block.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `e` isn't referenced:
+  //
+  // ```dart
+  // void f() {
+  //   try {
+  //     int.parse(';');
+  //   } on FormatException catch ([!e!]) {
+  //     // ignored
+  //   }
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Remove the unused `catch` clause:
+  //
+  // ```dart
+  // void f() {
+  //   try {
+  //     int.parse(';');
+  //   } on FormatException {
+  //     // ignored
+  //   }
+  // }
+  // ```
+  static const HintCode UNUSED_CATCH_CLAUSE = HintCode(
+    'UNUSED_CATCH_CLAUSE',
+    "The exception variable '{0}' isn't used, so the 'catch' clause can be removed.",
+    correction: "Try removing the catch clause.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the stack trace variable
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the stack trace parameter in a
+  // `catch` clause isn't referenced within the body of the `catch` block.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `stackTrace` isn't
+  // referenced:
+  //
+  // ```dart
+  // void f() {
+  //   try {
+  //     // ...
+  //   } catch (exception, [!stackTrace!]) {
+  //     // ...
+  //   }
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you need to reference the stack trace parameter, then add a reference to
+  // it. Otherwise, remove it:
+  //
+  // ```dart
+  // void f() {
+  //   try {
+  //     // ...
+  //   } catch (exception) {
+  //     // ...
+  //   }
+  // }
+  // ```
+  static const HintCode UNUSED_CATCH_STACK = HintCode(
+    'UNUSED_CATCH_STACK',
+    "The stack trace variable '{0}' isn't used and can be removed.",
+    correction: "Try removing the stack trace variable, or using it.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name that is declared but not referenced
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a private declaration isn't
+  // referenced in the library that contains the declaration. The following
+  // kinds of declarations are analyzed:
+  // - Private top-level declarations, such as classes, enums, mixins, typedefs,
+  //   top-level variables, and top-level functions
+  // - Private static and instance methods
+  // - Optional parameters of private functions for which a value is never
+  //   passed, even when the parameter doesn't have a private name
+  //
+  // #### Examples
+  //
+  // Assuming that no code in the library references `_C`, the following code
+  // produces this diagnostic:
+  //
+  // ```dart
+  // class [!_C!] {}
+  // ```
+  //
+  // Assuming that no code in the library passes a value for `y` in any
+  // invocation of `_m`, the following code produces this diagnostic:
+  //
+  // ```dart
+  // %language=2.9
+  // class C {
+  //   void _m(int x, [int [!y!]]) {}
+  //
+  //   void n() => _m(0);
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the declaration isn't needed, then remove it:
+  //
+  // ```dart
+  // class C {
+  //   void _m(int x) {}
+  //
+  //   void n() => _m(0);
+  // }
+  // ```
+  //
+  // If the declaration is intended to be used, then add the code to use it.
+  static const HintCode UNUSED_ELEMENT = HintCode(
+    'UNUSED_ELEMENT',
+    "The declaration '{0}' isn't referenced.",
+    correction: "Try removing the declaration of '{0}'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the parameter that is declared but not used
+   */
+  static const HintCode UNUSED_ELEMENT_PARAMETER = HintCode(
+    'UNUSED_ELEMENT',
+    "A value for optional parameter '{0}' isn't ever given.",
+    correction: "Try removing the unused parameter.",
+    hasPublishedDocs: true,
+    uniqueName: 'UNUSED_ELEMENT_PARAMETER',
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the unused field
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a private field is declared but
+  // never read, even if it's written in one or more places.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because the field
+  // `_originalValue` isn't read anywhere in the library:
+  //
+  // ```dart
+  // class C {
+  //   final String [!_originalValue!];
+  //   final String _currentValue;
+  //
+  //   C(this._originalValue) : _currentValue = _originalValue;
+  //
+  //   String get value => _currentValue;
+  // }
+  // ```
+  //
+  // It might appear that the field `_originalValue` is being read in the
+  // initializer (`_currentValue = _originalValue`), but that is actually a
+  // reference to the parameter of the same name, not a reference to the field.
+  //
+  // #### Common fixes
+  //
+  // If the field isn't needed, then remove it.
+  //
+  // If the field was intended to be used, then add the missing code.
+  static const HintCode UNUSED_FIELD = HintCode(
+    'UNUSED_FIELD',
+    "The value of the field '{0}' isn't used.",
+    correction: "Try removing the field, or using it.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the content of the unused import's uri
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an import isn't needed because
+  // none of the names that are imported are referenced within the importing
+  // library.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because nothing defined in
+  // `dart:async` is referenced in the library:
+  //
+  // ```dart
+  // import [!'dart:async'!];
+  //
+  // void main() {}
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the import isn't needed, then remove it.
+  //
+  // If some of the imported names are intended to be used, then add the missing
+  // code.
+  static const HintCode UNUSED_IMPORT = HintCode(
+    'UNUSED_IMPORT',
+    "Unused import: '{0}'.",
+    correction: "Try removing the import directive.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the label that isn't used
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a label that isn't used is
+  // found.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because the label `loop` isn't
+  // referenced anywhere in the method:
+  //
+  // ```dart
+  // void f(int limit) {
+  //   [!loop:!] for (int i = 0; i < limit; i++) {
+  //     print(i);
+  //   }
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the label isn't needed, then remove it:
+  //
+  // ```dart
+  // void f(int limit) {
+  //   for (int i = 0; i < limit; i++) {
+  //     print(i);
+  //   }
+  // }
+  // ```
+  //
+  // If the label is needed, then use it:
+  //
+  // ```dart
+  // void f(int limit) {
+  //   loop: for (int i = 0; i < limit; i++) {
+  //     print(i);
+  //     break loop;
+  //   }
+  // }
+  // ```
+  // TODO(brianwilkerson) Highlight the identifier without the colon.
+  static const HintCode UNUSED_LABEL = HintCode(
+    'UNUSED_LABEL',
+    "The label '{0}' isn't used.",
+    correction:
+        "Try removing the label, or using it in either a 'break' or 'continue' statement.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the unused variable
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a local variable is declared but
+  // never read, even if it's written in one or more places.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because the value of `count` is
+  // never read:
+  //
+  // ```dart
+  // void main() {
+  //   int [!count!] = 0;
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the variable isn't needed, then remove it.
+  //
+  // If the variable was intended to be used, then add the missing code.
+  static const HintCode UNUSED_LOCAL_VARIABLE = HintCode(
+    'UNUSED_LOCAL_VARIABLE',
+    "The value of the local variable '{0}' isn't used.",
+    correction: "Try removing the variable or using it.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the annotated method, property or function
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a function annotated with
+  // `useResult` is invoked, and the value returned by that function isn't used.
+  // The value is considered to be used if a member of the value is invoked, if
+  // the value is passed to another function, or if the value is assigned to a
+  // variable or field.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the invocation of
+  // `c.a()` isn't used, even though the method `a` is annotated with
+  // `useResult`:
+  //
+  // ```dart
+  // import 'package:meta/meta.dart';
+  //
+  // class C {
+  //   @useResult
+  //   int a() => 0;
+  //
+  //   int b() => 0;
+  // }
+  //
+  // void f(C c) {
+  //   c.[!a!]();
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you intended to invoke the annotated function, then use the value that
+  // was returned:
+  //
+  // ```dart
+  // import 'package:meta/meta.dart';
+  //
+  // class C {
+  //   @useResult
+  //   int a() => 0;
+  //
+  //   int b() => 0;
+  // }
+  //
+  // void f(C c) {
+  //   print(c.a());
+  // }
+  // ```
+  //
+  // If you intended to invoke a different function, then correct the name of
+  // the function being invoked:
+  //
+  // ```dart
+  // import 'package:meta/meta.dart';
+  //
+  // class C {
+  //   @useResult
+  //   int a() => 0;
+  //
+  //   int b() => 0;
+  // }
+  //
+  // void f(C c) {
+  //   c.b();
+  // }
+  // ```
+  static const HintCode UNUSED_RESULT = HintCode(
+    'UNUSED_RESULT',
+    "The value of '{0}' should be used.",
+    correction:
+        "Try using the result by invoking a member, passing it to a function, or returning it from this function.",
+  );
+
+  /**
+   * The result of invoking a method, property, or function annotated with
+   * `@useResult` must be used (assigned, passed to a function as an argument,
+   * or returned by a function).
+   *
+   * Parameters:
+   * 0: the name of the annotated method, property or function
+   * 1: message details
+   */
+  static const HintCode UNUSED_RESULT_WITH_MESSAGE = HintCode(
+    'UNUSED_RESULT',
+    "'{0}' should be used. {1}.",
+    correction:
+        "Try using the result by invoking a member, passing it to a function, or returning it from this function.",
+    uniqueName: 'UNUSED_RESULT_WITH_MESSAGE',
+  );
+
+  /**
+   * Parameters:
+   * 0: the name that is shown but not used
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a show combinator includes a
+  // name that isn't used within the library. Because it isn't referenced, the
+  // name can be removed.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because the function `max`
+  // isn't used:
+  //
+  // ```dart
+  // import 'dart:math' show min, [!max!];
+  //
+  // var x = min(0, 1);
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Either use the name or remove it:
+  //
+  // ```dart
+  // import 'dart:math' show min;
+  //
+  // var x = min(0, 1);
+  // ```
+  static const HintCode UNUSED_SHOWN_NAME = HintCode(
+    'UNUSED_SHOWN_NAME',
+    "The name {0} is shown, but isn’t used.",
+    correction: "Try removing the name from the list of shown members.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a library is imported using the
+  // `dart-ext` scheme.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the native library `x`
+  // is being imported using a scheme of `dart-ext`:
+  //
+  // ```dart
+  // [!import 'dart-ext:x';!]
+  // int f() native 'string';
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Rewrite the code to use `dart:ffi` as a way of invoking the contents of the
+  // native library.
+  static const HintCode USE_OF_NATIVE_EXTENSION = HintCode(
+    'USE_OF_NATIVE_EXTENSION',
+    "Dart native extensions are deprecated and aren’t available in Dart 2.15.",
+    correction: "Try using dart:ffi for C interop.",
+  );
+
+  /// Initialize a newly created error code to have the given [name].
+  const HintCode(
+    String name,
+    String message, {
+    String? correction,
+    bool hasPublishedDocs = false,
+    bool isUnresolvedIdentifier = false,
+    String? uniqueName,
+  }) : super(
+          correction: correction,
+          hasPublishedDocs: hasPublishedDocs,
+          isUnresolvedIdentifier: isUnresolvedIdentifier,
+          message: message,
+          name: name,
+          uniqueName: 'HintCode.${uniqueName ?? name}',
+        );
+
+  @override
+  ErrorSeverity get errorSeverity => ErrorType.HINT.severity;
+
+  @override
+  ErrorType get type => ErrorType.HINT;
+}
diff --git a/pkg/analyzer/lib/src/dart/error/syntactic_errors.analyzer.g.dart b/pkg/analyzer/lib/src/dart/error/syntactic_errors.analyzer.g.dart
new file mode 100644
index 0000000..88cb1ff
--- /dev/null
+++ b/pkg/analyzer/lib/src/dart/error/syntactic_errors.analyzer.g.dart
@@ -0,0 +1,1080 @@
+// Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+// THIS FILE IS GENERATED. DO NOT EDIT.
+//
+// Instead modify 'pkg/analyzer/messages.yaml' and run
+// 'dart pkg/analyzer/tool/messages/generate.dart' to update.
+
+import "package:analyzer/error/error.dart";
+
+part "syntactic_errors.g.dart";
+
+// It is hard to visually separate each code's _doc comment_ from its published
+// _documentation comment_ when each is written as an end-of-line comment.
+// ignore_for_file: slash_for_doc_comments
+
+class ParserErrorCode extends ErrorCode {
+  static const ParserErrorCode ABSTRACT_CLASS_MEMBER = _ABSTRACT_CLASS_MEMBER;
+
+  static const ParserErrorCode ABSTRACT_ENUM = ParserErrorCode(
+    'ABSTRACT_ENUM',
+    "Enums can't be declared to be 'abstract'.",
+    correction: "Try removing the keyword 'abstract'.",
+  );
+
+  static const ParserErrorCode ABSTRACT_EXTERNAL_FIELD =
+      _ABSTRACT_EXTERNAL_FIELD;
+
+  static const ParserErrorCode ABSTRACT_LATE_FIELD = _ABSTRACT_LATE_FIELD;
+
+  static const ParserErrorCode ABSTRACT_STATIC_FIELD = _ABSTRACT_STATIC_FIELD;
+
+  static const ParserErrorCode ABSTRACT_STATIC_METHOD = ParserErrorCode(
+    'ABSTRACT_STATIC_METHOD',
+    "Static methods can't be declared to be 'abstract'.",
+    correction: "Try removing the keyword 'abstract'.",
+  );
+
+  static const ParserErrorCode ABSTRACT_TOP_LEVEL_FUNCTION = ParserErrorCode(
+    'ABSTRACT_TOP_LEVEL_FUNCTION',
+    "Top-level functions can't be declared to be 'abstract'.",
+    correction: "Try removing the keyword 'abstract'.",
+  );
+
+  static const ParserErrorCode ABSTRACT_TOP_LEVEL_VARIABLE = ParserErrorCode(
+    'ABSTRACT_TOP_LEVEL_VARIABLE',
+    "Top-level variables can't be declared to be 'abstract'.",
+    correction: "Try removing the keyword 'abstract'.",
+  );
+
+  static const ParserErrorCode ABSTRACT_TYPEDEF = ParserErrorCode(
+    'ABSTRACT_TYPEDEF',
+    "Typedefs can't be declared to be 'abstract'.",
+    correction: "Try removing the keyword 'abstract'.",
+  );
+
+  static const ParserErrorCode ANNOTATION_ON_TYPE_ARGUMENT =
+      _ANNOTATION_ON_TYPE_ARGUMENT;
+
+  static const ParserErrorCode ANNOTATION_WITH_TYPE_ARGUMENTS =
+      _ANNOTATION_WITH_TYPE_ARGUMENTS;
+
+  static const ParserErrorCode ANNOTATION_WITH_TYPE_ARGUMENTS_UNINSTANTIATED =
+      _ANNOTATION_WITH_TYPE_ARGUMENTS_UNINSTANTIATED;
+
+  /**
+   * 16.32 Identifier Reference: It is a compile-time error if any of the
+   * identifiers async, await, or yield is used as an identifier in a function
+   * body marked with either async, async, or sync.
+   */
+  static const ParserErrorCode ASYNC_KEYWORD_USED_AS_IDENTIFIER =
+      ParserErrorCode(
+    'ASYNC_KEYWORD_USED_AS_IDENTIFIER',
+    "The keywords 'await' and 'yield' can't be used as identifiers in an asynchronous or generator function.",
+  );
+
+  static const ParserErrorCode BINARY_OPERATOR_WRITTEN_OUT =
+      _BINARY_OPERATOR_WRITTEN_OUT;
+
+  static const ParserErrorCode BREAK_OUTSIDE_OF_LOOP = _BREAK_OUTSIDE_OF_LOOP;
+
+  static const ParserErrorCode CATCH_SYNTAX = _CATCH_SYNTAX;
+
+  static const ParserErrorCode CATCH_SYNTAX_EXTRA_PARAMETERS =
+      _CATCH_SYNTAX_EXTRA_PARAMETERS;
+
+  static const ParserErrorCode CLASS_IN_CLASS = _CLASS_IN_CLASS;
+
+  static const ParserErrorCode COLON_IN_PLACE_OF_IN = _COLON_IN_PLACE_OF_IN;
+
+  static const ParserErrorCode CONFLICTING_MODIFIERS = _CONFLICTING_MODIFIERS;
+
+  static const ParserErrorCode CONSTRUCTOR_WITH_RETURN_TYPE =
+      _CONSTRUCTOR_WITH_RETURN_TYPE;
+
+  static const ParserErrorCode CONSTRUCTOR_WITH_TYPE_ARGUMENTS =
+      _CONSTRUCTOR_WITH_TYPE_ARGUMENTS;
+
+  static const ParserErrorCode CONST_AND_FINAL = _CONST_AND_FINAL;
+
+  static const ParserErrorCode CONST_CLASS = _CONST_CLASS;
+
+  static const ParserErrorCode CONST_CONSTRUCTOR_WITH_BODY = ParserErrorCode(
+    'CONST_CONSTRUCTOR_WITH_BODY',
+    "Const constructors can't have a body.",
+    correction: "Try removing either the 'const' keyword or the body.",
+  );
+
+  static const ParserErrorCode CONST_ENUM = ParserErrorCode(
+    'CONST_ENUM',
+    "Enums can't be declared to be 'const'.",
+    correction: "Try removing the 'const' keyword.",
+  );
+
+  static const ParserErrorCode CONST_FACTORY = _CONST_FACTORY;
+
+  static const ParserErrorCode CONST_METHOD = _CONST_METHOD;
+
+  static const ParserErrorCode CONST_TYPEDEF = ParserErrorCode(
+    'CONST_TYPEDEF',
+    "Type aliases can't be declared to be 'const'.",
+    correction: "Try removing the 'const' keyword.",
+  );
+
+  static const ParserErrorCode CONTINUE_OUTSIDE_OF_LOOP =
+      _CONTINUE_OUTSIDE_OF_LOOP;
+
+  static const ParserErrorCode CONTINUE_WITHOUT_LABEL_IN_CASE =
+      _CONTINUE_WITHOUT_LABEL_IN_CASE;
+
+  static const ParserErrorCode COVARIANT_AND_STATIC = _COVARIANT_AND_STATIC;
+
+  static const ParserErrorCode COVARIANT_CONSTRUCTOR = ParserErrorCode(
+    'COVARIANT_CONSTRUCTOR',
+    "A constructor can't be declared to be 'covariant'.",
+    correction: "Try removing the keyword 'covariant'.",
+  );
+
+  static const ParserErrorCode COVARIANT_MEMBER = _COVARIANT_MEMBER;
+
+  static const ParserErrorCode COVARIANT_TOP_LEVEL_DECLARATION =
+      ParserErrorCode(
+    'COVARIANT_TOP_LEVEL_DECLARATION',
+    "Top-level declarations can't be declared to be covariant.",
+    correction: "Try removing the keyword 'covariant'.",
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a function type associated with
+  // a parameter includes optional parameters that have a default value. This
+  // isn't allowed because the default values of parameters aren't part of the
+  // function's type, and therefore including them doesn't provide any value.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the parameter `p` has a
+  // default value even though it's part of the type of the parameter `g`:
+  //
+  // ```dart
+  // void f(void Function([int p [!=!] 0]) g) {
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Remove the default value from the function-type's parameter:
+  //
+  // ```dart
+  // void f(void Function([int p]) g) {
+  // }
+  // ```
+  static const ParserErrorCode DEFAULT_VALUE_IN_FUNCTION_TYPE = ParserErrorCode(
+    'DEFAULT_VALUE_IN_FUNCTION_TYPE',
+    "Parameters in a function type can't have default values.",
+    correction: "Try removing the default value.",
+    hasPublishedDocs: true,
+  );
+
+  static const ParserErrorCode DEFERRED_AFTER_PREFIX = _DEFERRED_AFTER_PREFIX;
+
+  static const ParserErrorCode DIRECTIVE_AFTER_DECLARATION =
+      _DIRECTIVE_AFTER_DECLARATION;
+
+  /**
+   * Parameters:
+   * 0: the modifier that was duplicated
+   */
+  static const ParserErrorCode DUPLICATED_MODIFIER = _DUPLICATED_MODIFIER;
+
+  static const ParserErrorCode DUPLICATE_DEFERRED = _DUPLICATE_DEFERRED;
+
+  /**
+   * Parameters:
+   * 0: the label that was duplicated
+   */
+  static const ParserErrorCode DUPLICATE_LABEL_IN_SWITCH_STATEMENT =
+      _DUPLICATE_LABEL_IN_SWITCH_STATEMENT;
+
+  static const ParserErrorCode DUPLICATE_PREFIX = _DUPLICATE_PREFIX;
+
+  static const ParserErrorCode EMPTY_ENUM_BODY = ParserErrorCode(
+    'EMPTY_ENUM_BODY',
+    "An enum must declare at least one constant name.",
+    correction: "Try declaring a constant.",
+  );
+
+  static const ParserErrorCode ENUM_IN_CLASS = _ENUM_IN_CLASS;
+
+  static const ParserErrorCode EQUALITY_CANNOT_BE_EQUALITY_OPERAND =
+      _EQUALITY_CANNOT_BE_EQUALITY_OPERAND;
+
+  static const ParserErrorCode EXPECTED_BODY = _EXPECTED_BODY;
+
+  static const ParserErrorCode EXPECTED_CASE_OR_DEFAULT = ParserErrorCode(
+    'EXPECTED_CASE_OR_DEFAULT',
+    "Expected 'case' or 'default'.",
+    correction: "Try placing this code inside a case clause.",
+  );
+
+  static const ParserErrorCode EXPECTED_CLASS_MEMBER = ParserErrorCode(
+    'EXPECTED_CLASS_MEMBER',
+    "Expected a class member.",
+    correction: "Try placing this code inside a class member.",
+  );
+
+  static const ParserErrorCode EXPECTED_ELSE_OR_COMMA = _EXPECTED_ELSE_OR_COMMA;
+
+  static const ParserErrorCode EXPECTED_EXECUTABLE = ParserErrorCode(
+    'EXPECTED_EXECUTABLE',
+    "Expected a method, getter, setter or operator declaration.",
+    correction:
+        "This appears to be incomplete code. Try removing it or completing it.",
+  );
+
+  static const ParserErrorCode EXPECTED_IDENTIFIER_BUT_GOT_KEYWORD =
+      _EXPECTED_IDENTIFIER_BUT_GOT_KEYWORD;
+
+  static const ParserErrorCode EXPECTED_INSTEAD = _EXPECTED_INSTEAD;
+
+  static const ParserErrorCode EXPECTED_LIST_OR_MAP_LITERAL = ParserErrorCode(
+    'EXPECTED_LIST_OR_MAP_LITERAL',
+    "Expected a list or map literal.",
+    correction:
+        "Try inserting a list or map literal, or remove the type arguments.",
+  );
+
+  static const ParserErrorCode EXPECTED_STRING_LITERAL = ParserErrorCode(
+    'EXPECTED_STRING_LITERAL',
+    "Expected a string literal.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the token that was expected but not found
+   */
+  static const ParserErrorCode EXPECTED_TOKEN = ParserErrorCode(
+    'EXPECTED_TOKEN',
+    "Expected to find '{0}'.",
+  );
+
+  static const ParserErrorCode EXPECTED_TYPE_NAME = ParserErrorCode(
+    'EXPECTED_TYPE_NAME',
+    "Expected a type name.",
+  );
+
+  static const ParserErrorCode EXPERIMENT_NOT_ENABLED = _EXPERIMENT_NOT_ENABLED;
+
+  static const ParserErrorCode EXPORT_DIRECTIVE_AFTER_PART_DIRECTIVE =
+      _EXPORT_DIRECTIVE_AFTER_PART_DIRECTIVE;
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an abstract declaration is
+  // declared in an extension. Extensions can declare only concrete members.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because the method `a` doesn't
+  // have a body:
+  //
+  // ```dart
+  // extension E on String {
+  //   int [!a!]();
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Either provide an implementation for the member or remove it.
+  static const ParserErrorCode EXTENSION_DECLARES_ABSTRACT_MEMBER =
+      _EXTENSION_DECLARES_ABSTRACT_MEMBER;
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a constructor declaration is
+  // found in an extension. It isn't valid to define a constructor because
+  // extensions aren't classes, and it isn't possible to create an instance of
+  // an extension.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because there is a constructor
+  // declaration in `E`:
+  //
+  // ```dart
+  // extension E on String {
+  //   [!E!]() : super();
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Remove the constructor or replace it with a static method.
+  static const ParserErrorCode EXTENSION_DECLARES_CONSTRUCTOR =
+      _EXTENSION_DECLARES_CONSTRUCTOR;
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an instance field declaration is
+  // found in an extension. It isn't valid to define an instance field because
+  // extensions can only add behavior, not state.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `s` is an instance
+  // field:
+  //
+  // ```dart
+  // %language=2.9
+  // extension E on String {
+  //   String [!s!];
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Remove the field, make it a static field, or convert it to be a getter,
+  // setter, or method.
+  static const ParserErrorCode EXTENSION_DECLARES_INSTANCE_FIELD =
+      _EXTENSION_DECLARES_INSTANCE_FIELD;
+
+  static const ParserErrorCode EXTERNAL_CLASS = _EXTERNAL_CLASS;
+
+  static const ParserErrorCode EXTERNAL_CONSTRUCTOR_WITH_BODY =
+      _EXTERNAL_CONSTRUCTOR_WITH_BODY;
+
+  static const ParserErrorCode EXTERNAL_CONSTRUCTOR_WITH_INITIALIZER =
+      _EXTERNAL_CONSTRUCTOR_WITH_INITIALIZER;
+
+  static const ParserErrorCode EXTERNAL_ENUM = _EXTERNAL_ENUM;
+
+  static const ParserErrorCode EXTERNAL_FACTORY_REDIRECTION =
+      _EXTERNAL_FACTORY_REDIRECTION;
+
+  static const ParserErrorCode EXTERNAL_FACTORY_WITH_BODY =
+      _EXTERNAL_FACTORY_WITH_BODY;
+
+  static const ParserErrorCode EXTERNAL_FIELD = _EXTERNAL_FIELD;
+
+  static const ParserErrorCode EXTERNAL_GETTER_WITH_BODY = ParserErrorCode(
+    'EXTERNAL_GETTER_WITH_BODY',
+    "External getters can't have a body.",
+    correction:
+        "Try removing the body of the getter, or removing the keyword 'external'.",
+  );
+
+  static const ParserErrorCode EXTERNAL_LATE_FIELD = _EXTERNAL_LATE_FIELD;
+
+  static const ParserErrorCode EXTERNAL_METHOD_WITH_BODY =
+      _EXTERNAL_METHOD_WITH_BODY;
+
+  static const ParserErrorCode EXTERNAL_OPERATOR_WITH_BODY = ParserErrorCode(
+    'EXTERNAL_OPERATOR_WITH_BODY',
+    "External operators can't have a body.",
+    correction:
+        "Try removing the body of the operator, or removing the keyword 'external'.",
+  );
+
+  static const ParserErrorCode EXTERNAL_SETTER_WITH_BODY = ParserErrorCode(
+    'EXTERNAL_SETTER_WITH_BODY',
+    "External setters can't have a body.",
+    correction:
+        "Try removing the body of the setter, or removing the keyword 'external'.",
+  );
+
+  static const ParserErrorCode EXTERNAL_TYPEDEF = _EXTERNAL_TYPEDEF;
+
+  static const ParserErrorCode EXTRANEOUS_MODIFIER = _EXTRANEOUS_MODIFIER;
+
+  static const ParserErrorCode FACTORY_TOP_LEVEL_DECLARATION =
+      _FACTORY_TOP_LEVEL_DECLARATION;
+
+  static const ParserErrorCode FACTORY_WITHOUT_BODY = ParserErrorCode(
+    'FACTORY_WITHOUT_BODY',
+    "A non-redirecting 'factory' constructor must have a body.",
+    correction: "Try adding a body to the constructor.",
+  );
+
+  static const ParserErrorCode FACTORY_WITH_INITIALIZERS = ParserErrorCode(
+    'FACTORY_WITH_INITIALIZERS',
+    "A 'factory' constructor can't have initializers.",
+    correction:
+        "Try removing the 'factory' keyword to make this a generative constructor, or removing the initializers.",
+  );
+
+  static const ParserErrorCode FIELD_INITIALIZED_OUTSIDE_DECLARING_CLASS =
+      _FIELD_INITIALIZED_OUTSIDE_DECLARING_CLASS;
+
+  static const ParserErrorCode FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR =
+      _FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR;
+
+  static const ParserErrorCode FINAL_AND_COVARIANT = _FINAL_AND_COVARIANT;
+
+  static const ParserErrorCode FINAL_AND_COVARIANT_LATE_WITH_INITIALIZER =
+      _FINAL_AND_COVARIANT_LATE_WITH_INITIALIZER;
+
+  static const ParserErrorCode FINAL_AND_VAR = _FINAL_AND_VAR;
+
+  static const ParserErrorCode FINAL_CLASS = ParserErrorCode(
+    'FINAL_CLASS',
+    "Classes can't be declared to be 'final'.",
+    correction: "Try removing the keyword 'final'.",
+  );
+
+  static const ParserErrorCode FINAL_CONSTRUCTOR = ParserErrorCode(
+    'FINAL_CONSTRUCTOR',
+    "A constructor can't be declared to be 'final'.",
+    correction: "Try removing the keyword 'final'.",
+  );
+
+  static const ParserErrorCode FINAL_ENUM = ParserErrorCode(
+    'FINAL_ENUM',
+    "Enums can't be declared to be 'final'.",
+    correction: "Try removing the keyword 'final'.",
+  );
+
+  static const ParserErrorCode FINAL_METHOD = ParserErrorCode(
+    'FINAL_METHOD',
+    "Getters, setters and methods can't be declared to be 'final'.",
+    correction: "Try removing the keyword 'final'.",
+  );
+
+  static const ParserErrorCode FINAL_TYPEDEF = ParserErrorCode(
+    'FINAL_TYPEDEF',
+    "Typedefs can't be declared to be 'final'.",
+    correction: "Try removing the keyword 'final'.",
+  );
+
+  static const ParserErrorCode FUNCTION_TYPED_PARAMETER_VAR = ParserErrorCode(
+    'FUNCTION_TYPED_PARAMETER_VAR',
+    "Function-typed parameters can't specify 'const', 'final' or 'var' in place of a return type.",
+    correction: "Try replacing the keyword with a return type.",
+  );
+
+  static const ParserErrorCode GETTER_CONSTRUCTOR = _GETTER_CONSTRUCTOR;
+
+  static const ParserErrorCode GETTER_IN_FUNCTION = ParserErrorCode(
+    'GETTER_IN_FUNCTION',
+    "Getters can't be defined within methods or functions.",
+    correction:
+        "Try moving the getter outside the method or function, or converting the getter to a function.",
+  );
+
+  static const ParserErrorCode GETTER_WITH_PARAMETERS = ParserErrorCode(
+    'GETTER_WITH_PARAMETERS',
+    "Getters must be declared without a parameter list.",
+    correction:
+        "Try removing the parameter list, or removing the keyword 'get' to define a method rather than a getter.",
+  );
+
+  static const ParserErrorCode ILLEGAL_ASSIGNMENT_TO_NON_ASSIGNABLE =
+      _ILLEGAL_ASSIGNMENT_TO_NON_ASSIGNABLE;
+
+  static const ParserErrorCode IMPLEMENTS_BEFORE_EXTENDS =
+      _IMPLEMENTS_BEFORE_EXTENDS;
+
+  static const ParserErrorCode IMPLEMENTS_BEFORE_ON = _IMPLEMENTS_BEFORE_ON;
+
+  static const ParserErrorCode IMPLEMENTS_BEFORE_WITH = _IMPLEMENTS_BEFORE_WITH;
+
+  static const ParserErrorCode IMPORT_DIRECTIVE_AFTER_PART_DIRECTIVE =
+      _IMPORT_DIRECTIVE_AFTER_PART_DIRECTIVE;
+
+  static const ParserErrorCode INITIALIZED_VARIABLE_IN_FOR_EACH =
+      _INITIALIZED_VARIABLE_IN_FOR_EACH;
+
+  static const ParserErrorCode INVALID_AWAIT_IN_FOR = _INVALID_AWAIT_IN_FOR;
+
+  /**
+   * Parameters:
+   * 0: the invalid escape sequence
+   */
+  static const ParserErrorCode INVALID_CODE_POINT = ParserErrorCode(
+    'INVALID_CODE_POINT',
+    "The escape sequence '{0}' isn't a valid code point.",
+  );
+
+  static const ParserErrorCode INVALID_COMMENT_REFERENCE = ParserErrorCode(
+    'INVALID_COMMENT_REFERENCE',
+    "Comment references should contain a possibly prefixed identifier and can start with 'new', but shouldn't contain anything else.",
+  );
+
+  static const ParserErrorCode INVALID_CONSTRUCTOR_NAME =
+      _INVALID_CONSTRUCTOR_NAME;
+
+  static const ParserErrorCode INVALID_GENERIC_FUNCTION_TYPE = ParserErrorCode(
+    'INVALID_GENERIC_FUNCTION_TYPE',
+    "Invalid generic function type.",
+    correction:
+        "Try using a generic function type (returnType 'Function(' parameters ')').",
+  );
+
+  static const ParserErrorCode INVALID_HEX_ESCAPE = _INVALID_HEX_ESCAPE;
+
+  static const ParserErrorCode INVALID_INITIALIZER = _INVALID_INITIALIZER;
+
+  static const ParserErrorCode INVALID_LITERAL_IN_CONFIGURATION =
+      ParserErrorCode(
+    'INVALID_LITERAL_IN_CONFIGURATION',
+    "The literal in a configuration can't contain interpolation.",
+    correction: "Try removing the interpolation expressions.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the operator that is invalid
+   */
+  static const ParserErrorCode INVALID_OPERATOR = _INVALID_OPERATOR;
+
+  /**
+   * Parameters:
+   * 0: the operator being applied to 'super'
+   *
+   * Only generated by the old parser.
+   * Replaced by INVALID_OPERATOR_QUESTIONMARK_PERIOD_FOR_SUPER.
+   */
+  static const ParserErrorCode INVALID_OPERATOR_FOR_SUPER = ParserErrorCode(
+    'INVALID_OPERATOR_FOR_SUPER',
+    "The operator '{0}' can't be used with 'super'.",
+  );
+
+  static const ParserErrorCode INVALID_OPERATOR_QUESTIONMARK_PERIOD_FOR_SUPER =
+      _INVALID_OPERATOR_QUESTIONMARK_PERIOD_FOR_SUPER;
+
+  static const ParserErrorCode INVALID_STAR_AFTER_ASYNC = ParserErrorCode(
+    'INVALID_STAR_AFTER_ASYNC',
+    "The modifier 'async*' isn't allowed for an expression function body.",
+    correction: "Try converting the body to a block.",
+  );
+
+  static const ParserErrorCode INVALID_SUPER_IN_INITIALIZER =
+      _INVALID_SUPER_IN_INITIALIZER;
+
+  static const ParserErrorCode INVALID_SYNC = ParserErrorCode(
+    'INVALID_SYNC',
+    "The modifier 'sync' isn't allowed for an expression function body.",
+    correction: "Try converting the body to a block.",
+  );
+
+  static const ParserErrorCode INVALID_THIS_IN_INITIALIZER =
+      _INVALID_THIS_IN_INITIALIZER;
+
+  static const ParserErrorCode INVALID_UNICODE_ESCAPE = _INVALID_UNICODE_ESCAPE;
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a member declared inside an
+  // extension uses the keyword `covariant` in the declaration of a parameter.
+  // Extensions aren't classes and don't have subclasses, so the keyword serves
+  // no purpose.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `i` is marked as being
+  // covariant:
+  //
+  // ```dart
+  // extension E on String {
+  //   void a([!covariant!] int i) {}
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Remove the `covariant` keyword:
+  //
+  // ```dart
+  // extension E on String {
+  //   void a(int i) {}
+  // }
+  // ```
+  static const ParserErrorCode INVALID_USE_OF_COVARIANT_IN_EXTENSION =
+      _INVALID_USE_OF_COVARIANT_IN_EXTENSION;
+
+  static const ParserErrorCode LIBRARY_DIRECTIVE_NOT_FIRST =
+      _LIBRARY_DIRECTIVE_NOT_FIRST;
+
+  static const ParserErrorCode LITERAL_WITH_CLASS = _LITERAL_WITH_CLASS;
+
+  static const ParserErrorCode LITERAL_WITH_CLASS_AND_NEW =
+      _LITERAL_WITH_CLASS_AND_NEW;
+
+  static const ParserErrorCode LITERAL_WITH_NEW = _LITERAL_WITH_NEW;
+
+  static const ParserErrorCode LOCAL_FUNCTION_DECLARATION_MODIFIER =
+      ParserErrorCode(
+    'LOCAL_FUNCTION_DECLARATION_MODIFIER',
+    "Local function declarations can't specify any modifiers.",
+    correction: "Try removing the modifier.",
+  );
+
+  static const ParserErrorCode MEMBER_WITH_CLASS_NAME = _MEMBER_WITH_CLASS_NAME;
+
+  static const ParserErrorCode MISSING_ASSIGNABLE_SELECTOR =
+      _MISSING_ASSIGNABLE_SELECTOR;
+
+  static const ParserErrorCode MISSING_ASSIGNMENT_IN_INITIALIZER =
+      _MISSING_ASSIGNMENT_IN_INITIALIZER;
+
+  static const ParserErrorCode MISSING_CATCH_OR_FINALLY =
+      _MISSING_CATCH_OR_FINALLY;
+
+  static const ParserErrorCode MISSING_CLOSING_PARENTHESIS = ParserErrorCode(
+    'MISSING_CLOSING_PARENTHESIS',
+    "The closing parenthesis is missing.",
+    correction: "Try adding the closing parenthesis.",
+  );
+
+  static const ParserErrorCode MISSING_CONST_FINAL_VAR_OR_TYPE =
+      _MISSING_CONST_FINAL_VAR_OR_TYPE;
+
+  static const ParserErrorCode MISSING_ENUM_BODY = ParserErrorCode(
+    'MISSING_ENUM_BODY',
+    "An enum definition must have a body with at least one constant name.",
+    correction: "Try adding a body and defining at least one constant.",
+  );
+
+  static const ParserErrorCode MISSING_EXPRESSION_IN_INITIALIZER =
+      ParserErrorCode(
+    'MISSING_EXPRESSION_IN_INITIALIZER',
+    "Expected an expression after the assignment operator.",
+    correction:
+        "Try adding the value to be assigned, or remove the assignment operator.",
+  );
+
+  static const ParserErrorCode MISSING_EXPRESSION_IN_THROW =
+      _MISSING_EXPRESSION_IN_THROW;
+
+  static const ParserErrorCode MISSING_FUNCTION_BODY = ParserErrorCode(
+    'MISSING_FUNCTION_BODY',
+    "A function body must be provided.",
+    correction: "Try adding a function body.",
+  );
+
+  static const ParserErrorCode MISSING_FUNCTION_KEYWORD = ParserErrorCode(
+    'MISSING_FUNCTION_KEYWORD',
+    "Function types must have the keyword 'Function' before the parameter list.",
+    correction: "Try adding the keyword 'Function'.",
+  );
+
+  static const ParserErrorCode MISSING_FUNCTION_PARAMETERS = ParserErrorCode(
+    'MISSING_FUNCTION_PARAMETERS',
+    "Functions must have an explicit list of parameters.",
+    correction: "Try adding a parameter list.",
+  );
+
+  static const ParserErrorCode MISSING_GET = ParserErrorCode(
+    'MISSING_GET',
+    "Getters must have the keyword 'get' before the getter name.",
+    correction: "Try adding the keyword 'get'.",
+  );
+
+  static const ParserErrorCode MISSING_IDENTIFIER = ParserErrorCode(
+    'MISSING_IDENTIFIER',
+    "Expected an identifier.",
+  );
+
+  static const ParserErrorCode MISSING_INITIALIZER = _MISSING_INITIALIZER;
+
+  static const ParserErrorCode MISSING_KEYWORD_OPERATOR =
+      _MISSING_KEYWORD_OPERATOR;
+
+  static const ParserErrorCode MISSING_METHOD_PARAMETERS = ParserErrorCode(
+    'MISSING_METHOD_PARAMETERS',
+    "Methods must have an explicit list of parameters.",
+    correction: "Try adding a parameter list.",
+  );
+
+  static const ParserErrorCode MISSING_NAME_FOR_NAMED_PARAMETER =
+      ParserErrorCode(
+    'MISSING_NAME_FOR_NAMED_PARAMETER',
+    "Named parameters in a function type must have a name",
+    correction:
+        "Try providing a name for the parameter or removing the curly braces.",
+  );
+
+  static const ParserErrorCode MISSING_NAME_IN_LIBRARY_DIRECTIVE =
+      ParserErrorCode(
+    'MISSING_NAME_IN_LIBRARY_DIRECTIVE',
+    "Library directives must include a library name.",
+    correction:
+        "Try adding a library name after the keyword 'library', or remove the library directive if the library doesn't have any parts.",
+  );
+
+  static const ParserErrorCode MISSING_NAME_IN_PART_OF_DIRECTIVE =
+      ParserErrorCode(
+    'MISSING_NAME_IN_PART_OF_DIRECTIVE',
+    "Part-of directives must include a library name.",
+    correction: "Try adding a library name after the 'of'.",
+  );
+
+  static const ParserErrorCode MISSING_PREFIX_IN_DEFERRED_IMPORT =
+      _MISSING_PREFIX_IN_DEFERRED_IMPORT;
+
+  static const ParserErrorCode MISSING_STAR_AFTER_SYNC = ParserErrorCode(
+    'MISSING_STAR_AFTER_SYNC',
+    "The modifier 'sync' must be followed by a star ('*').",
+    correction: "Try removing the modifier, or add a star.",
+  );
+
+  static const ParserErrorCode MISSING_STATEMENT = _MISSING_STATEMENT;
+
+  /**
+   * Parameters:
+   * 0: the terminator that is missing
+   */
+  static const ParserErrorCode MISSING_TERMINATOR_FOR_PARAMETER_GROUP =
+      ParserErrorCode(
+    'MISSING_TERMINATOR_FOR_PARAMETER_GROUP',
+    "There is no '{0}' to close the parameter group.",
+    correction: "Try inserting a '{0}' at the end of the group.",
+  );
+
+  static const ParserErrorCode MISSING_TYPEDEF_PARAMETERS = ParserErrorCode(
+    'MISSING_TYPEDEF_PARAMETERS',
+    "Typedefs must have an explicit list of parameters.",
+    correction: "Try adding a parameter list.",
+  );
+
+  static const ParserErrorCode MISSING_VARIABLE_IN_FOR_EACH = ParserErrorCode(
+    'MISSING_VARIABLE_IN_FOR_EACH',
+    "A loop variable must be declared in a for-each loop before the 'in', but none was found.",
+    correction: "Try declaring a loop variable.",
+  );
+
+  static const ParserErrorCode MIXED_PARAMETER_GROUPS = ParserErrorCode(
+    'MIXED_PARAMETER_GROUPS',
+    "Can't have both positional and named parameters in a single parameter list.",
+    correction: "Try choosing a single style of optional parameters.",
+  );
+
+  static const ParserErrorCode MIXIN_DECLARES_CONSTRUCTOR =
+      _MIXIN_DECLARES_CONSTRUCTOR;
+
+  static const ParserErrorCode MODIFIER_OUT_OF_ORDER = _MODIFIER_OUT_OF_ORDER;
+
+  static const ParserErrorCode MULTIPLE_EXTENDS_CLAUSES =
+      _MULTIPLE_EXTENDS_CLAUSES;
+
+  static const ParserErrorCode MULTIPLE_IMPLEMENTS_CLAUSES = ParserErrorCode(
+    'MULTIPLE_IMPLEMENTS_CLAUSES',
+    "Each class or mixin definition can have at most one implements clause.",
+    correction:
+        "Try combining all of the implements clauses into a single clause.",
+  );
+
+  static const ParserErrorCode MULTIPLE_LIBRARY_DIRECTIVES =
+      _MULTIPLE_LIBRARY_DIRECTIVES;
+
+  static const ParserErrorCode MULTIPLE_NAMED_PARAMETER_GROUPS =
+      ParserErrorCode(
+    'MULTIPLE_NAMED_PARAMETER_GROUPS',
+    "Can't have multiple groups of named parameters in a single parameter list.",
+    correction: "Try combining all of the groups into a single group.",
+  );
+
+  static const ParserErrorCode MULTIPLE_ON_CLAUSES = _MULTIPLE_ON_CLAUSES;
+
+  static const ParserErrorCode MULTIPLE_PART_OF_DIRECTIVES =
+      _MULTIPLE_PART_OF_DIRECTIVES;
+
+  static const ParserErrorCode MULTIPLE_POSITIONAL_PARAMETER_GROUPS =
+      ParserErrorCode(
+    'MULTIPLE_POSITIONAL_PARAMETER_GROUPS',
+    "Can't have multiple groups of positional parameters in a single parameter list.",
+    correction: "Try combining all of the groups into a single group.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the number of variables being declared
+   */
+  static const ParserErrorCode MULTIPLE_VARIABLES_IN_FOR_EACH = ParserErrorCode(
+    'MULTIPLE_VARIABLES_IN_FOR_EACH',
+    "A single loop variable must be declared in a for-each loop before the 'in', but {0} were found.",
+    correction:
+        "Try moving all but one of the declarations inside the loop body.",
+  );
+
+  static const ParserErrorCode MULTIPLE_VARIANCE_MODIFIERS =
+      _MULTIPLE_VARIANCE_MODIFIERS;
+
+  static const ParserErrorCode MULTIPLE_WITH_CLAUSES = _MULTIPLE_WITH_CLAUSES;
+
+  static const ParserErrorCode NAMED_FUNCTION_EXPRESSION = ParserErrorCode(
+    'NAMED_FUNCTION_EXPRESSION',
+    "Function expressions can't be named.",
+    correction:
+        "Try removing the name, or moving the function expression to a function declaration statement.",
+  );
+
+  static const ParserErrorCode NAMED_FUNCTION_TYPE = ParserErrorCode(
+    'NAMED_FUNCTION_TYPE',
+    "Function types can't be named.",
+    correction: "Try replacing the name with the keyword 'Function'.",
+  );
+
+  static const ParserErrorCode NAMED_PARAMETER_OUTSIDE_GROUP = ParserErrorCode(
+    'NAMED_PARAMETER_OUTSIDE_GROUP',
+    "Named parameters must be enclosed in curly braces ('{' and '}').",
+    correction: "Try surrounding the named parameters in curly braces.",
+  );
+
+  static const ParserErrorCode NATIVE_CLAUSE_IN_NON_SDK_CODE = ParserErrorCode(
+    'NATIVE_CLAUSE_IN_NON_SDK_CODE',
+    "Native clause can only be used in the SDK and code that is loaded through native extensions.",
+    correction: "Try removing the native clause.",
+  );
+
+  static const ParserErrorCode NATIVE_CLAUSE_SHOULD_BE_ANNOTATION =
+      _NATIVE_CLAUSE_SHOULD_BE_ANNOTATION;
+
+  static const ParserErrorCode NATIVE_FUNCTION_BODY_IN_NON_SDK_CODE =
+      ParserErrorCode(
+    'NATIVE_FUNCTION_BODY_IN_NON_SDK_CODE',
+    "Native functions can only be declared in the SDK and code that is loaded through native extensions.",
+    correction: "Try removing the word 'native'.",
+  );
+
+  static const ParserErrorCode NON_CONSTRUCTOR_FACTORY = ParserErrorCode(
+    'NON_CONSTRUCTOR_FACTORY',
+    "Only a constructor can be declared to be a factory.",
+    correction: "Try removing the keyword 'factory'.",
+  );
+
+  static const ParserErrorCode NON_IDENTIFIER_LIBRARY_NAME = ParserErrorCode(
+    'NON_IDENTIFIER_LIBRARY_NAME',
+    "The name of a library must be an identifier.",
+    correction: "Try using an identifier as the name of the library.",
+  );
+
+  static const ParserErrorCode NON_PART_OF_DIRECTIVE_IN_PART = ParserErrorCode(
+    'NON_PART_OF_DIRECTIVE_IN_PART',
+    "The part-of directive must be the only directive in a part.",
+    correction:
+        "Try removing the other directives, or moving them to the library for which this is a part.",
+  );
+
+  static const ParserErrorCode NON_STRING_LITERAL_AS_URI = ParserErrorCode(
+    'NON_STRING_LITERAL_AS_URI',
+    "The URI must be a string literal.",
+    correction: "Try enclosing the URI in either single or double quotes.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the operator that the user is trying to define
+   */
+  static const ParserErrorCode NON_USER_DEFINABLE_OPERATOR = ParserErrorCode(
+    'NON_USER_DEFINABLE_OPERATOR',
+    "The operator '{0}' isn't user definable.",
+  );
+
+  static const ParserErrorCode NORMAL_BEFORE_OPTIONAL_PARAMETERS =
+      ParserErrorCode(
+    'NORMAL_BEFORE_OPTIONAL_PARAMETERS',
+    "Normal parameters must occur before optional parameters.",
+    correction:
+        "Try moving all of the normal parameters before the optional parameters.",
+  );
+
+  static const ParserErrorCode NULL_AWARE_CASCADE_OUT_OF_ORDER =
+      _NULL_AWARE_CASCADE_OUT_OF_ORDER;
+
+  static const ParserErrorCode POSITIONAL_AFTER_NAMED_ARGUMENT =
+      ParserErrorCode(
+    'POSITIONAL_AFTER_NAMED_ARGUMENT',
+    "Positional arguments must occur before named arguments.",
+    correction:
+        "Try moving all of the positional arguments before the named arguments.",
+  );
+
+  static const ParserErrorCode POSITIONAL_PARAMETER_OUTSIDE_GROUP =
+      ParserErrorCode(
+    'POSITIONAL_PARAMETER_OUTSIDE_GROUP',
+    "Positional parameters must be enclosed in square brackets ('[' and ']').",
+    correction: "Try surrounding the positional parameters in square brackets.",
+  );
+
+  static const ParserErrorCode PREFIX_AFTER_COMBINATOR =
+      _PREFIX_AFTER_COMBINATOR;
+
+  static const ParserErrorCode REDIRECTING_CONSTRUCTOR_WITH_BODY =
+      _REDIRECTING_CONSTRUCTOR_WITH_BODY;
+
+  static const ParserErrorCode REDIRECTION_IN_NON_FACTORY_CONSTRUCTOR =
+      _REDIRECTION_IN_NON_FACTORY_CONSTRUCTOR;
+
+  static const ParserErrorCode SETTER_CONSTRUCTOR = _SETTER_CONSTRUCTOR;
+
+  static const ParserErrorCode SETTER_IN_FUNCTION = ParserErrorCode(
+    'SETTER_IN_FUNCTION',
+    "Setters can't be defined within methods or functions.",
+    correction: "Try moving the setter outside the method or function.",
+  );
+
+  static const ParserErrorCode STACK_OVERFLOW = _STACK_OVERFLOW;
+
+  static const ParserErrorCode STATIC_CONSTRUCTOR = _STATIC_CONSTRUCTOR;
+
+  static const ParserErrorCode STATIC_GETTER_WITHOUT_BODY = ParserErrorCode(
+    'STATIC_GETTER_WITHOUT_BODY',
+    "A 'static' getter must have a body.",
+    correction:
+        "Try adding a body to the getter, or removing the keyword 'static'.",
+  );
+
+  static const ParserErrorCode STATIC_OPERATOR = _STATIC_OPERATOR;
+
+  static const ParserErrorCode STATIC_SETTER_WITHOUT_BODY = ParserErrorCode(
+    'STATIC_SETTER_WITHOUT_BODY',
+    "A 'static' setter must have a body.",
+    correction:
+        "Try adding a body to the setter, or removing the keyword 'static'.",
+  );
+
+  static const ParserErrorCode STATIC_TOP_LEVEL_DECLARATION = ParserErrorCode(
+    'STATIC_TOP_LEVEL_DECLARATION',
+    "Top-level declarations can't be declared to be static.",
+    correction: "Try removing the keyword 'static'.",
+  );
+
+  static const ParserErrorCode SWITCH_HAS_CASE_AFTER_DEFAULT_CASE =
+      _SWITCH_HAS_CASE_AFTER_DEFAULT_CASE;
+
+  static const ParserErrorCode SWITCH_HAS_MULTIPLE_DEFAULT_CASES =
+      _SWITCH_HAS_MULTIPLE_DEFAULT_CASES;
+
+  static const ParserErrorCode TOP_LEVEL_OPERATOR = _TOP_LEVEL_OPERATOR;
+
+  static const ParserErrorCode TYPEDEF_IN_CLASS = _TYPEDEF_IN_CLASS;
+
+  static const ParserErrorCode TYPE_ARGUMENTS_ON_TYPE_VARIABLE =
+      _TYPE_ARGUMENTS_ON_TYPE_VARIABLE;
+
+  static const ParserErrorCode TYPE_BEFORE_FACTORY = _TYPE_BEFORE_FACTORY;
+
+  static const ParserErrorCode TYPE_PARAMETER_ON_CONSTRUCTOR =
+      _TYPE_PARAMETER_ON_CONSTRUCTOR;
+
+  /**
+   * 7.1.1 Operators: Type parameters are not syntactically supported on an
+   * operator.
+   */
+  static const ParserErrorCode TYPE_PARAMETER_ON_OPERATOR = ParserErrorCode(
+    'TYPE_PARAMETER_ON_OPERATOR',
+    "Types parameters aren't allowed when defining an operator.",
+    correction: "Try removing the type parameters.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the starting character that was missing
+   */
+  static const ParserErrorCode UNEXPECTED_TERMINATOR_FOR_PARAMETER_GROUP =
+      ParserErrorCode(
+    'UNEXPECTED_TERMINATOR_FOR_PARAMETER_GROUP',
+    "There is no '{0}' to open a parameter group.",
+    correction: "Try inserting the '{0}' at the appropriate location.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the unexpected text that was found
+   */
+  static const ParserErrorCode UNEXPECTED_TOKEN = ParserErrorCode(
+    'UNEXPECTED_TOKEN',
+    "Unexpected text '{0}'.",
+    correction: "Try removing the text.",
+  );
+
+  static const ParserErrorCode VAR_AND_TYPE = _VAR_AND_TYPE;
+
+  static const ParserErrorCode VAR_AS_TYPE_NAME = _VAR_AS_TYPE_NAME;
+
+  static const ParserErrorCode VAR_CLASS = ParserErrorCode(
+    'VAR_CLASS',
+    "Classes can't be declared to be 'var'.",
+    correction: "Try removing the keyword 'var'.",
+  );
+
+  static const ParserErrorCode VAR_ENUM = ParserErrorCode(
+    'VAR_ENUM',
+    "Enums can't be declared to be 'var'.",
+    correction: "Try removing the keyword 'var'.",
+  );
+
+  static const ParserErrorCode VAR_RETURN_TYPE = _VAR_RETURN_TYPE;
+
+  static const ParserErrorCode VAR_TYPEDEF = ParserErrorCode(
+    'VAR_TYPEDEF',
+    "Typedefs can't be declared to be 'var'.",
+    correction:
+        "Try removing the keyword 'var', or replacing it with the name of the return type.",
+  );
+
+  static const ParserErrorCode VOID_WITH_TYPE_ARGUMENTS =
+      _VOID_WITH_TYPE_ARGUMENTS;
+
+  static const ParserErrorCode WITH_BEFORE_EXTENDS = _WITH_BEFORE_EXTENDS;
+
+  static const ParserErrorCode WRONG_SEPARATOR_FOR_POSITIONAL_PARAMETER =
+      ParserErrorCode(
+    'WRONG_SEPARATOR_FOR_POSITIONAL_PARAMETER',
+    "The default value of a positional parameter should be preceded by '='.",
+    correction: "Try replacing the ':' with '='.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the terminator that was expected
+   * 1: the terminator that was found
+   */
+  static const ParserErrorCode WRONG_TERMINATOR_FOR_PARAMETER_GROUP =
+      ParserErrorCode(
+    'WRONG_TERMINATOR_FOR_PARAMETER_GROUP',
+    "Expected '{0}' to close parameter group.",
+    correction: "Try replacing '{0}' with '{1}'.",
+  );
+
+  /// Initialize a newly created error code to have the given [name].
+  const ParserErrorCode(
+    String name,
+    String message, {
+    String? correction,
+    bool hasPublishedDocs = false,
+    bool isUnresolvedIdentifier = false,
+    String? uniqueName,
+  }) : super(
+          correction: correction,
+          hasPublishedDocs: hasPublishedDocs,
+          isUnresolvedIdentifier: isUnresolvedIdentifier,
+          message: message,
+          name: name,
+          uniqueName: 'ParserErrorCode.${uniqueName ?? name}',
+        );
+
+  @override
+  ErrorSeverity get errorSeverity => ErrorSeverity.ERROR;
+
+  @override
+  ErrorType get type => ErrorType.SYNTACTIC_ERROR;
+}
diff --git a/pkg/analyzer/lib/src/dart/error/syntactic_errors.dart b/pkg/analyzer/lib/src/dart/error/syntactic_errors.dart
index 7aea6d5..6d60a5f 100644
--- a/pkg/analyzer/lib/src/dart/error/syntactic_errors.dart
+++ b/pkg/analyzer/lib/src/dart/error/syntactic_errors.dart
@@ -2,958 +2,6 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-// It is hard to visually separate each code's _doc comment_ from its published
-// _documentation comment_ when each is written as an end-of-line comment.
-// ignore_for_file: slash_for_doc_comments
-
-/**
- * The errors produced during syntactic analysis (scanning and parsing).
- */
-import 'package:analyzer/error/error.dart';
-
 export 'package:_fe_analyzer_shared/src/scanner/errors.dart'
     show ScannerErrorCode;
-
-part 'syntactic_errors.g.dart';
-
-/**
- * The error codes used for errors detected by the parser. The convention for
- * this class is for the name of the error code to indicate the problem that
- * caused the error to be generated and for the error message to explain what
- * is wrong and, when appropriate, how the problem can be corrected.
- */
-class ParserErrorCode extends ErrorCode {
-  static const ParserErrorCode ABSTRACT_CLASS_MEMBER = _ABSTRACT_CLASS_MEMBER;
-
-  static const ParserErrorCode ABSTRACT_ENUM = ParserErrorCode(
-      'ABSTRACT_ENUM', "Enums can't be declared to be 'abstract'.",
-      correction: "Try removing the keyword 'abstract'.");
-
-  static const ParserErrorCode ABSTRACT_EXTERNAL_FIELD =
-      _ABSTRACT_EXTERNAL_FIELD;
-
-  static const ParserErrorCode ABSTRACT_LATE_FIELD = _ABSTRACT_LATE_FIELD;
-
-  static const ParserErrorCode ABSTRACT_STATIC_FIELD = _ABSTRACT_STATIC_FIELD;
-
-  static const ParserErrorCode ABSTRACT_STATIC_METHOD = ParserErrorCode(
-      'ABSTRACT_STATIC_METHOD',
-      "Static methods can't be declared to be 'abstract'.",
-      correction: "Try removing the keyword 'abstract'.");
-
-  static const ParserErrorCode ABSTRACT_TOP_LEVEL_FUNCTION = ParserErrorCode(
-      'ABSTRACT_TOP_LEVEL_FUNCTION',
-      "Top-level functions can't be declared to be 'abstract'.",
-      correction: "Try removing the keyword 'abstract'.");
-
-  static const ParserErrorCode ABSTRACT_TOP_LEVEL_VARIABLE = ParserErrorCode(
-      'ABSTRACT_TOP_LEVEL_VARIABLE',
-      "Top-level variables can't be declared to be 'abstract'.",
-      correction: "Try removing the keyword 'abstract'.");
-
-  static const ParserErrorCode ABSTRACT_TYPEDEF = ParserErrorCode(
-      'ABSTRACT_TYPEDEF', "Typedefs can't be declared to be 'abstract'.",
-      correction: "Try removing the keyword 'abstract'.");
-
-  static const ParserErrorCode ANNOTATION_ON_TYPE_ARGUMENT =
-      _ANNOTATION_ON_TYPE_ARGUMENT;
-
-  static const ParserErrorCode ANNOTATION_WITH_TYPE_ARGUMENTS =
-      _ANNOTATION_WITH_TYPE_ARGUMENTS;
-
-  static const ParserErrorCode ANNOTATION_WITH_TYPE_ARGUMENTS_UNINSTANTIATED =
-      _ANNOTATION_WITH_TYPE_ARGUMENTS_UNINSTANTIATED;
-
-  /**
-   * 16.32 Identifier Reference: It is a compile-time error if any of the
-   * identifiers async, await, or yield is used as an identifier in a function
-   * body marked with either async, async*, or sync*.
-   */
-  static const ParserErrorCode ASYNC_KEYWORD_USED_AS_IDENTIFIER =
-      ParserErrorCode(
-          'ASYNC_KEYWORD_USED_AS_IDENTIFIER',
-          "The keywords 'await' and 'yield' can't be used as "
-              "identifiers in an asynchronous or generator function.");
-
-  static const ParserErrorCode BINARY_OPERATOR_WRITTEN_OUT =
-      _BINARY_OPERATOR_WRITTEN_OUT;
-
-  static const ParserErrorCode BREAK_OUTSIDE_OF_LOOP = _BREAK_OUTSIDE_OF_LOOP;
-
-  static const ParserErrorCode CATCH_SYNTAX = _CATCH_SYNTAX;
-
-  static const ParserErrorCode CATCH_SYNTAX_EXTRA_PARAMETERS =
-      _CATCH_SYNTAX_EXTRA_PARAMETERS;
-
-  static const ParserErrorCode CLASS_IN_CLASS = _CLASS_IN_CLASS;
-
-  static const ParserErrorCode COLON_IN_PLACE_OF_IN = _COLON_IN_PLACE_OF_IN;
-
-  static const ParserErrorCode CONFLICTING_MODIFIERS = _CONFLICTING_MODIFIERS;
-
-  static const ParserErrorCode CONST_AND_FINAL = _CONST_AND_FINAL;
-
-  static const ParserErrorCode CONST_CLASS = _CONST_CLASS;
-
-  static const ParserErrorCode CONST_CONSTRUCTOR_WITH_BODY = ParserErrorCode(
-      'CONST_CONSTRUCTOR_WITH_BODY', "Const constructors can't have a body.",
-      correction: "Try removing either the 'const' keyword or the body.");
-
-  static const ParserErrorCode CONST_ENUM = ParserErrorCode(
-      'CONST_ENUM', "Enums can't be declared to be 'const'.",
-      correction: "Try removing the 'const' keyword.");
-
-  static const ParserErrorCode CONST_FACTORY = _CONST_FACTORY;
-
-  static const ParserErrorCode CONST_METHOD = _CONST_METHOD;
-
-  static const ParserErrorCode CONST_TYPEDEF = ParserErrorCode(
-      'CONST_TYPEDEF', "Type aliases can't be declared to be 'const'.",
-      correction: "Try removing the 'const' keyword.");
-
-  static const ParserErrorCode CONSTRUCTOR_WITH_RETURN_TYPE =
-      _CONSTRUCTOR_WITH_RETURN_TYPE;
-
-  static const ParserErrorCode CONSTRUCTOR_WITH_TYPE_ARGUMENTS =
-      _CONSTRUCTOR_WITH_TYPE_ARGUMENTS;
-
-  static const ParserErrorCode CONTINUE_OUTSIDE_OF_LOOP =
-      _CONTINUE_OUTSIDE_OF_LOOP;
-
-  static const ParserErrorCode CONTINUE_WITHOUT_LABEL_IN_CASE =
-      _CONTINUE_WITHOUT_LABEL_IN_CASE;
-
-  static const ParserErrorCode COVARIANT_AND_STATIC = _COVARIANT_AND_STATIC;
-
-  static const ParserErrorCode COVARIANT_CONSTRUCTOR = ParserErrorCode(
-      'COVARIANT_CONSTRUCTOR',
-      "A constructor can't be declared to be 'covariant'.",
-      correction: "Try removing the keyword 'covariant'.");
-
-  static const ParserErrorCode COVARIANT_MEMBER = _COVARIANT_MEMBER;
-
-  static const ParserErrorCode COVARIANT_TOP_LEVEL_DECLARATION =
-      ParserErrorCode('COVARIANT_TOP_LEVEL_DECLARATION',
-          "Top-level declarations can't be declared to be covariant.",
-          correction: "Try removing the keyword 'covariant'.");
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a function type associated with
-  // a parameter includes optional parameters that have a default value. This
-  // isn't allowed because the default values of parameters aren't part of the
-  // function's type, and therefore including them doesn't provide any value.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the parameter `p` has a
-  // default value even though it's part of the type of the parameter `g`:
-  //
-  // ```dart
-  // void f(void Function([int p [!=!] 0]) g) {
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Remove the default value from the function-type's parameter:
-  //
-  // ```dart
-  // void f(void Function([int p]) g) {
-  // }
-  // ```
-  static const ParserErrorCode DEFAULT_VALUE_IN_FUNCTION_TYPE = ParserErrorCode(
-      'DEFAULT_VALUE_IN_FUNCTION_TYPE',
-      "Parameters in a function type can't have default values.",
-      correction: "Try removing the default value.",
-      hasPublishedDocs: true);
-
-  static const ParserErrorCode DEFERRED_AFTER_PREFIX = _DEFERRED_AFTER_PREFIX;
-
-  static const ParserErrorCode DIRECTIVE_AFTER_DECLARATION =
-      _DIRECTIVE_AFTER_DECLARATION;
-
-  static const ParserErrorCode DUPLICATE_DEFERRED = _DUPLICATE_DEFERRED;
-
-  /**
-   * Parameters:
-   * 0: the label that was duplicated
-   */
-  static const ParserErrorCode DUPLICATE_LABEL_IN_SWITCH_STATEMENT =
-      _DUPLICATE_LABEL_IN_SWITCH_STATEMENT;
-
-  static const ParserErrorCode DUPLICATE_PREFIX = _DUPLICATE_PREFIX;
-
-  /**
-   * Parameters:
-   * 0: the modifier that was duplicated
-   */
-  static const ParserErrorCode DUPLICATED_MODIFIER = _DUPLICATED_MODIFIER;
-
-  static const ParserErrorCode EMPTY_ENUM_BODY = ParserErrorCode(
-      'EMPTY_ENUM_BODY', "An enum must declare at least one constant name.",
-      correction: "Try declaring a constant.");
-
-  static const ParserErrorCode ENUM_IN_CLASS = _ENUM_IN_CLASS;
-
-  static const ParserErrorCode EQUALITY_CANNOT_BE_EQUALITY_OPERAND =
-      _EQUALITY_CANNOT_BE_EQUALITY_OPERAND;
-
-  static const ParserErrorCode EXPECTED_BODY = _EXPECTED_BODY;
-
-  static const ParserErrorCode EXPECTED_CASE_OR_DEFAULT = ParserErrorCode(
-      'EXPECTED_CASE_OR_DEFAULT', "Expected 'case' or 'default'.",
-      correction: "Try placing this code inside a case clause.");
-
-  static const ParserErrorCode EXPECTED_CLASS_MEMBER = ParserErrorCode(
-      'EXPECTED_CLASS_MEMBER', "Expected a class member.",
-      correction: "Try placing this code inside a class member.");
-
-  static const ParserErrorCode EXPECTED_ELSE_OR_COMMA = _EXPECTED_ELSE_OR_COMMA;
-
-  static const ParserErrorCode EXPECTED_EXECUTABLE = ParserErrorCode(
-      'EXPECTED_EXECUTABLE',
-      "Expected a method, getter, setter or operator declaration.",
-      correction:
-          "This appears to be incomplete code. Try removing it or completing it.");
-
-  static const ParserErrorCode EXPECTED_IDENTIFIER_BUT_GOT_KEYWORD =
-      _EXPECTED_IDENTIFIER_BUT_GOT_KEYWORD;
-
-  static const ParserErrorCode EXPECTED_INSTEAD = _EXPECTED_INSTEAD;
-
-  static const ParserErrorCode EXPECTED_LIST_OR_MAP_LITERAL = ParserErrorCode(
-      'EXPECTED_LIST_OR_MAP_LITERAL', "Expected a list or map literal.",
-      correction:
-          "Try inserting a list or map literal, or remove the type arguments.");
-
-  static const ParserErrorCode EXPECTED_STRING_LITERAL =
-      ParserErrorCode('EXPECTED_STRING_LITERAL', "Expected a string literal.");
-
-  /**
-   * Parameters:
-   * 0: the token that was expected but not found
-   */
-  static const ParserErrorCode EXPECTED_TOKEN =
-      ParserErrorCode('EXPECTED_TOKEN', "Expected to find '{0}'.");
-
-  static const ParserErrorCode EXPECTED_TYPE_NAME =
-      ParserErrorCode('EXPECTED_TYPE_NAME', "Expected a type name.");
-
-  static const ParserErrorCode EXPERIMENT_NOT_ENABLED = _EXPERIMENT_NOT_ENABLED;
-
-  static const ParserErrorCode EXPORT_DIRECTIVE_AFTER_PART_DIRECTIVE =
-      _EXPORT_DIRECTIVE_AFTER_PART_DIRECTIVE;
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an abstract declaration is
-  // declared in an extension. Extensions can declare only concrete members.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because the method `a` doesn't
-  // have a body:
-  //
-  // ```dart
-  // extension E on String {
-  //   int [!a!]();
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Either provide an implementation for the member or remove it.
-  static const ParserErrorCode EXTENSION_DECLARES_ABSTRACT_MEMBER =
-      _EXTENSION_DECLARES_ABSTRACT_MEMBER;
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a constructor declaration is
-  // found in an extension. It isn't valid to define a constructor because
-  // extensions aren't classes, and it isn't possible to create an instance of
-  // an extension.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because there is a constructor
-  // declaration in `E`:
-  //
-  // ```dart
-  // extension E on String {
-  //   [!E!]() : super();
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Remove the constructor or replace it with a static method.
-  static const ParserErrorCode EXTENSION_DECLARES_CONSTRUCTOR =
-      _EXTENSION_DECLARES_CONSTRUCTOR;
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an instance field declaration is
-  // found in an extension. It isn't valid to define an instance field because
-  // extensions can only add behavior, not state.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `s` is an instance
-  // field:
-  //
-  // ```dart
-  // %language=2.9
-  // extension E on String {
-  //   String [!s!];
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Remove the field, make it a static field, or convert it to be a getter,
-  // setter, or method.
-  static const ParserErrorCode EXTENSION_DECLARES_INSTANCE_FIELD =
-      _EXTENSION_DECLARES_INSTANCE_FIELD;
-
-  static const ParserErrorCode EXTERNAL_CLASS = _EXTERNAL_CLASS;
-
-  static const ParserErrorCode EXTERNAL_CONSTRUCTOR_WITH_BODY =
-      _EXTERNAL_CONSTRUCTOR_WITH_BODY;
-
-  static const ParserErrorCode EXTERNAL_CONSTRUCTOR_WITH_INITIALIZER =
-      _EXTERNAL_CONSTRUCTOR_WITH_INITIALIZER;
-
-  static const ParserErrorCode EXTERNAL_ENUM = _EXTERNAL_ENUM;
-
-  static const ParserErrorCode EXTERNAL_FACTORY_REDIRECTION =
-      _EXTERNAL_FACTORY_REDIRECTION;
-
-  static const ParserErrorCode EXTERNAL_FACTORY_WITH_BODY =
-      _EXTERNAL_FACTORY_WITH_BODY;
-
-  static const ParserErrorCode EXTERNAL_FIELD = _EXTERNAL_FIELD;
-
-  static const ParserErrorCode EXTERNAL_GETTER_WITH_BODY = ParserErrorCode(
-      'EXTERNAL_GETTER_WITH_BODY', "External getters can't have a body.",
-      correction: "Try removing the body of the getter, or "
-          "removing the keyword 'external'.");
-
-  static const ParserErrorCode EXTERNAL_LATE_FIELD = _EXTERNAL_LATE_FIELD;
-
-  static const ParserErrorCode EXTERNAL_METHOD_WITH_BODY =
-      _EXTERNAL_METHOD_WITH_BODY;
-
-  static const ParserErrorCode EXTERNAL_OPERATOR_WITH_BODY = ParserErrorCode(
-      'EXTERNAL_OPERATOR_WITH_BODY', "External operators can't have a body.",
-      correction: "Try removing the body of the operator, or "
-          "removing the keyword 'external'.");
-
-  static const ParserErrorCode EXTERNAL_SETTER_WITH_BODY = ParserErrorCode(
-      'EXTERNAL_SETTER_WITH_BODY', "External setters can't have a body.",
-      correction: "Try removing the body of the setter, or "
-          "removing the keyword 'external'.");
-
-  static const ParserErrorCode EXTERNAL_TYPEDEF = _EXTERNAL_TYPEDEF;
-
-  static const ParserErrorCode EXTRANEOUS_MODIFIER = _EXTRANEOUS_MODIFIER;
-
-  static const ParserErrorCode FACTORY_TOP_LEVEL_DECLARATION =
-      _FACTORY_TOP_LEVEL_DECLARATION;
-
-  static const ParserErrorCode FACTORY_WITH_INITIALIZERS = ParserErrorCode(
-      'FACTORY_WITH_INITIALIZERS',
-      "A 'factory' constructor can't have initializers.",
-      correction:
-          "Try removing the 'factory' keyword to make this a generative constructor, or "
-          "removing the initializers.");
-
-  static const ParserErrorCode FACTORY_WITHOUT_BODY = ParserErrorCode(
-      'FACTORY_WITHOUT_BODY',
-      "A non-redirecting 'factory' constructor must have a body.",
-      correction: "Try adding a body to the constructor.");
-
-  static const ParserErrorCode FIELD_INITIALIZED_OUTSIDE_DECLARING_CLASS =
-      _FIELD_INITIALIZED_OUTSIDE_DECLARING_CLASS;
-
-  static const ParserErrorCode FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR =
-      _FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR;
-
-  static const ParserErrorCode FINAL_AND_COVARIANT = _FINAL_AND_COVARIANT;
-
-  static const ParserErrorCode FINAL_AND_COVARIANT_LATE_WITH_INITIALIZER =
-      _FINAL_AND_COVARIANT_LATE_WITH_INITIALIZER;
-
-  static const ParserErrorCode FINAL_AND_VAR = _FINAL_AND_VAR;
-
-  static const ParserErrorCode FINAL_CLASS = ParserErrorCode(
-      'FINAL_CLASS', "Classes can't be declared to be 'final'.",
-      correction: "Try removing the keyword 'final'.");
-
-  static const ParserErrorCode FINAL_CONSTRUCTOR = ParserErrorCode(
-      'FINAL_CONSTRUCTOR', "A constructor can't be declared to be 'final'.",
-      correction: "Try removing the keyword 'final'.");
-
-  static const ParserErrorCode FINAL_ENUM = ParserErrorCode(
-      'FINAL_ENUM', "Enums can't be declared to be 'final'.",
-      correction: "Try removing the keyword 'final'.");
-
-  static const ParserErrorCode FINAL_METHOD = ParserErrorCode('FINAL_METHOD',
-      "Getters, setters and methods can't be declared to be 'final'.",
-      correction: "Try removing the keyword 'final'.");
-
-  static const ParserErrorCode FINAL_TYPEDEF = ParserErrorCode(
-      'FINAL_TYPEDEF', "Typedefs can't be declared to be 'final'.",
-      correction: "Try removing the keyword 'final'.");
-
-  static const ParserErrorCode FUNCTION_TYPED_PARAMETER_VAR = ParserErrorCode(
-      'FUNCTION_TYPED_PARAMETER_VAR',
-      "Function-typed parameters can't specify 'const', 'final' or 'var' in place of a return type.",
-      correction: "Try replacing the keyword with a return type.");
-
-  static const ParserErrorCode GETTER_CONSTRUCTOR = _GETTER_CONSTRUCTOR;
-
-  static const ParserErrorCode GETTER_IN_FUNCTION = ParserErrorCode(
-      'GETTER_IN_FUNCTION',
-      "Getters can't be defined within methods or functions.",
-      correction: "Try moving the getter outside the method or function, or "
-          "converting the getter to a function.");
-
-  static const ParserErrorCode GETTER_WITH_PARAMETERS = ParserErrorCode(
-      'GETTER_WITH_PARAMETERS',
-      "Getters must be declared without a parameter list.",
-      correction: "Try removing the parameter list, or "
-          "removing the keyword 'get' to define a method rather than a getter.");
-
-  static const ParserErrorCode ILLEGAL_ASSIGNMENT_TO_NON_ASSIGNABLE =
-      _ILLEGAL_ASSIGNMENT_TO_NON_ASSIGNABLE;
-
-  static const ParserErrorCode IMPLEMENTS_BEFORE_EXTENDS =
-      _IMPLEMENTS_BEFORE_EXTENDS;
-
-  static const ParserErrorCode IMPLEMENTS_BEFORE_ON = _IMPLEMENTS_BEFORE_ON;
-
-  static const ParserErrorCode IMPLEMENTS_BEFORE_WITH = _IMPLEMENTS_BEFORE_WITH;
-
-  static const ParserErrorCode IMPORT_DIRECTIVE_AFTER_PART_DIRECTIVE =
-      _IMPORT_DIRECTIVE_AFTER_PART_DIRECTIVE;
-
-  static const ParserErrorCode INITIALIZED_VARIABLE_IN_FOR_EACH =
-      _INITIALIZED_VARIABLE_IN_FOR_EACH;
-
-  static const ParserErrorCode INVALID_AWAIT_IN_FOR = _INVALID_AWAIT_IN_FOR;
-
-  /**
-   * Parameters:
-   * 0: the invalid escape sequence
-   */
-  static const ParserErrorCode INVALID_CODE_POINT = ParserErrorCode(
-      'INVALID_CODE_POINT',
-      "The escape sequence '{0}' isn't a valid code point.");
-
-  static const ParserErrorCode INVALID_COMMENT_REFERENCE = ParserErrorCode(
-      'INVALID_COMMENT_REFERENCE',
-      "Comment references should contain a possibly prefixed identifier and "
-          "can start with 'new', but shouldn't contain anything else.");
-
-  static const ParserErrorCode INVALID_CONSTRUCTOR_NAME =
-      _INVALID_CONSTRUCTOR_NAME;
-
-  static const ParserErrorCode INVALID_GENERIC_FUNCTION_TYPE = ParserErrorCode(
-      'INVALID_GENERIC_FUNCTION_TYPE', "Invalid generic function type.",
-      correction:
-          "Try using a generic function type (returnType 'Function(' parameters ')').");
-
-  static const ParserErrorCode INVALID_HEX_ESCAPE = _INVALID_HEX_ESCAPE;
-
-  static const ParserErrorCode INVALID_INITIALIZER = _INVALID_INITIALIZER;
-
-  static const ParserErrorCode INVALID_LITERAL_IN_CONFIGURATION =
-      ParserErrorCode('INVALID_LITERAL_IN_CONFIGURATION',
-          "The literal in a configuration can't contain interpolation.",
-          correction: "Try removing the interpolation expressions.");
-
-  /**
-   * Parameters:
-   * 0: the operator that is invalid
-   */
-  static const ParserErrorCode INVALID_OPERATOR = _INVALID_OPERATOR;
-
-  /**
-   * Parameters:
-   * 0: the operator being applied to 'super'
-   *
-   * Only generated by the old parser.
-   * Replaced by INVALID_OPERATOR_QUESTIONMARK_PERIOD_FOR_SUPER.
-   */
-  static const ParserErrorCode INVALID_OPERATOR_FOR_SUPER = ParserErrorCode(
-      'INVALID_OPERATOR_FOR_SUPER',
-      "The operator '{0}' can't be used with 'super'.");
-
-  static const ParserErrorCode INVALID_OPERATOR_QUESTIONMARK_PERIOD_FOR_SUPER =
-      _INVALID_OPERATOR_QUESTIONMARK_PERIOD_FOR_SUPER;
-
-  static const ParserErrorCode INVALID_STAR_AFTER_ASYNC = ParserErrorCode(
-      'INVALID_STAR_AFTER_ASYNC',
-      "The modifier 'async*' isn't allowed for an expression function body.",
-      correction: "Try converting the body to a block.");
-
-  static const ParserErrorCode INVALID_SUPER_IN_INITIALIZER =
-      _INVALID_SUPER_IN_INITIALIZER;
-
-  static const ParserErrorCode INVALID_SYNC = ParserErrorCode('INVALID_SYNC',
-      "The modifier 'sync' isn't allowed for an expression function body.",
-      correction: "Try converting the body to a block.");
-
-  static const ParserErrorCode INVALID_THIS_IN_INITIALIZER =
-      _INVALID_THIS_IN_INITIALIZER;
-
-  static const ParserErrorCode INVALID_UNICODE_ESCAPE = _INVALID_UNICODE_ESCAPE;
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a member declared inside an
-  // extension uses the keyword `covariant` in the declaration of a parameter.
-  // Extensions aren't classes and don't have subclasses, so the keyword serves
-  // no purpose.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `i` is marked as being
-  // covariant:
-  //
-  // ```dart
-  // extension E on String {
-  //   void a([!covariant!] int i) {}
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Remove the `covariant` keyword:
-  //
-  // ```dart
-  // extension E on String {
-  //   void a(int i) {}
-  // }
-  // ```
-  static const ParserErrorCode INVALID_USE_OF_COVARIANT_IN_EXTENSION =
-      _INVALID_USE_OF_COVARIANT_IN_EXTENSION;
-
-  static const ParserErrorCode LIBRARY_DIRECTIVE_NOT_FIRST =
-      _LIBRARY_DIRECTIVE_NOT_FIRST;
-
-  static const ParserErrorCode LITERAL_WITH_CLASS_AND_NEW =
-      _LITERAL_WITH_CLASS_AND_NEW;
-
-  static const ParserErrorCode LITERAL_WITH_CLASS = _LITERAL_WITH_CLASS;
-
-  static const ParserErrorCode LITERAL_WITH_NEW = _LITERAL_WITH_NEW;
-
-  static const ParserErrorCode LOCAL_FUNCTION_DECLARATION_MODIFIER =
-      ParserErrorCode('LOCAL_FUNCTION_DECLARATION_MODIFIER',
-          "Local function declarations can't specify any modifiers.",
-          correction: "Try removing the modifier.");
-
-  static const ParserErrorCode MEMBER_WITH_CLASS_NAME = _MEMBER_WITH_CLASS_NAME;
-
-  static const ParserErrorCode MISSING_ASSIGNABLE_SELECTOR =
-      _MISSING_ASSIGNABLE_SELECTOR;
-
-  static const ParserErrorCode MISSING_ASSIGNMENT_IN_INITIALIZER =
-      _MISSING_ASSIGNMENT_IN_INITIALIZER;
-
-  static const ParserErrorCode MISSING_CATCH_OR_FINALLY =
-      _MISSING_CATCH_OR_FINALLY;
-
-  static const ParserErrorCode MISSING_CLOSING_PARENTHESIS = ParserErrorCode(
-      'MISSING_CLOSING_PARENTHESIS', "The closing parenthesis is missing.",
-      correction: "Try adding the closing parenthesis.");
-
-  static const ParserErrorCode MISSING_CONST_FINAL_VAR_OR_TYPE =
-      _MISSING_CONST_FINAL_VAR_OR_TYPE;
-
-  static const ParserErrorCode MISSING_ENUM_BODY = ParserErrorCode(
-      'MISSING_ENUM_BODY',
-      "An enum definition must have a body with at least one constant name.",
-      correction: "Try adding a body and defining at least one constant.");
-
-  static const ParserErrorCode MISSING_EXPRESSION_IN_INITIALIZER =
-      ParserErrorCode('MISSING_EXPRESSION_IN_INITIALIZER',
-          "Expected an expression after the assignment operator.",
-          correction: "Try adding the value to be assigned, or "
-              "remove the assignment operator.");
-
-  static const ParserErrorCode MISSING_EXPRESSION_IN_THROW =
-      _MISSING_EXPRESSION_IN_THROW;
-
-  static const ParserErrorCode MISSING_FUNCTION_BODY = ParserErrorCode(
-      'MISSING_FUNCTION_BODY', "A function body must be provided.",
-      correction: "Try adding a function body.");
-
-  static const ParserErrorCode MISSING_FUNCTION_KEYWORD = ParserErrorCode(
-      'MISSING_FUNCTION_KEYWORD',
-      "Function types must have the keyword 'Function' before the parameter list.",
-      correction: "Try adding the keyword 'Function'.");
-
-  static const ParserErrorCode MISSING_FUNCTION_PARAMETERS = ParserErrorCode(
-      'MISSING_FUNCTION_PARAMETERS',
-      "Functions must have an explicit list of parameters.",
-      correction: "Try adding a parameter list.");
-
-  static const ParserErrorCode MISSING_GET = ParserErrorCode('MISSING_GET',
-      "Getters must have the keyword 'get' before the getter name.",
-      correction: "Try adding the keyword 'get'.");
-
-  static const ParserErrorCode MISSING_IDENTIFIER =
-      ParserErrorCode('MISSING_IDENTIFIER', "Expected an identifier.");
-
-  static const ParserErrorCode MISSING_INITIALIZER = _MISSING_INITIALIZER;
-
-  static const ParserErrorCode MISSING_KEYWORD_OPERATOR =
-      _MISSING_KEYWORD_OPERATOR;
-
-  static const ParserErrorCode MISSING_METHOD_PARAMETERS = ParserErrorCode(
-      'MISSING_METHOD_PARAMETERS',
-      "Methods must have an explicit list of parameters.",
-      correction: "Try adding a parameter list.");
-
-  static const ParserErrorCode MISSING_NAME_FOR_NAMED_PARAMETER = ParserErrorCode(
-      'MISSING_NAME_FOR_NAMED_PARAMETER',
-      "Named parameters in a function type must have a name",
-      correction:
-          "Try providing a name for the parameter or removing the curly braces.");
-
-  static const ParserErrorCode MISSING_NAME_IN_LIBRARY_DIRECTIVE = ParserErrorCode(
-      'MISSING_NAME_IN_LIBRARY_DIRECTIVE',
-      "Library directives must include a library name.",
-      correction: "Try adding a library name after the keyword 'library', or "
-          "remove the library directive if the library doesn't have any parts.");
-
-  static const ParserErrorCode MISSING_NAME_IN_PART_OF_DIRECTIVE =
-      ParserErrorCode('MISSING_NAME_IN_PART_OF_DIRECTIVE',
-          "Part-of directives must include a library name.",
-          correction: "Try adding a library name after the 'of'.");
-
-  static const ParserErrorCode MISSING_PREFIX_IN_DEFERRED_IMPORT =
-      _MISSING_PREFIX_IN_DEFERRED_IMPORT;
-
-  static const ParserErrorCode MISSING_STAR_AFTER_SYNC = ParserErrorCode(
-      'MISSING_STAR_AFTER_SYNC',
-      "The modifier 'sync' must be followed by a star ('*').",
-      correction: "Try removing the modifier, or add a star.");
-
-  static const ParserErrorCode MISSING_STATEMENT = _MISSING_STATEMENT;
-
-  /**
-   * Parameters:
-   * 0: the terminator that is missing
-   */
-  static const ParserErrorCode MISSING_TERMINATOR_FOR_PARAMETER_GROUP =
-      ParserErrorCode('MISSING_TERMINATOR_FOR_PARAMETER_GROUP',
-          "There is no '{0}' to close the parameter group.",
-          correction: "Try inserting a '{0}' at the end of the group.");
-
-  static const ParserErrorCode MISSING_TYPEDEF_PARAMETERS = ParserErrorCode(
-      'MISSING_TYPEDEF_PARAMETERS',
-      "Typedefs must have an explicit list of parameters.",
-      correction: "Try adding a parameter list.");
-
-  static const ParserErrorCode MISSING_VARIABLE_IN_FOR_EACH = ParserErrorCode(
-      'MISSING_VARIABLE_IN_FOR_EACH',
-      "A loop variable must be declared in a for-each loop before the 'in', but none was found.",
-      correction: "Try declaring a loop variable.");
-
-  static const ParserErrorCode MIXED_PARAMETER_GROUPS = ParserErrorCode(
-      'MIXED_PARAMETER_GROUPS',
-      "Can't have both positional and named parameters in a single parameter list.",
-      correction: "Try choosing a single style of optional parameters.");
-
-  static const ParserErrorCode MIXIN_DECLARES_CONSTRUCTOR =
-      _MIXIN_DECLARES_CONSTRUCTOR;
-
-  static const ParserErrorCode MODIFIER_OUT_OF_ORDER = _MODIFIER_OUT_OF_ORDER;
-
-  static const ParserErrorCode MULTIPLE_EXTENDS_CLAUSES =
-      _MULTIPLE_EXTENDS_CLAUSES;
-
-  static const ParserErrorCode MULTIPLE_IMPLEMENTS_CLAUSES = ParserErrorCode(
-      'MULTIPLE_IMPLEMENTS_CLAUSES',
-      "Each class or mixin definition can have at most one implements clause.",
-      correction:
-          "Try combining all of the implements clauses into a single clause.");
-
-  static const ParserErrorCode MULTIPLE_LIBRARY_DIRECTIVES =
-      _MULTIPLE_LIBRARY_DIRECTIVES;
-
-  static const ParserErrorCode MULTIPLE_NAMED_PARAMETER_GROUPS = ParserErrorCode(
-      'MULTIPLE_NAMED_PARAMETER_GROUPS',
-      "Can't have multiple groups of named parameters in a single parameter list.",
-      correction: "Try combining all of the groups into a single group.");
-
-  static const ParserErrorCode MULTIPLE_ON_CLAUSES = _MULTIPLE_ON_CLAUSES;
-
-  static const ParserErrorCode MULTIPLE_PART_OF_DIRECTIVES =
-      _MULTIPLE_PART_OF_DIRECTIVES;
-
-  static const ParserErrorCode MULTIPLE_POSITIONAL_PARAMETER_GROUPS =
-      ParserErrorCode('MULTIPLE_POSITIONAL_PARAMETER_GROUPS',
-          "Can't have multiple groups of positional parameters in a single parameter list.",
-          correction: "Try combining all of the groups into a single group.");
-
-  /**
-   * Parameters:
-   * 0: the number of variables being declared
-   */
-  static const ParserErrorCode MULTIPLE_VARIABLES_IN_FOR_EACH = ParserErrorCode(
-      'MULTIPLE_VARIABLES_IN_FOR_EACH',
-      "A single loop variable must be declared in a for-each loop before "
-          "the 'in', but {0} were found.",
-      correction:
-          "Try moving all but one of the declarations inside the loop body.");
-
-  static const ParserErrorCode MULTIPLE_VARIANCE_MODIFIERS =
-      _MULTIPLE_VARIANCE_MODIFIERS;
-
-  static const ParserErrorCode MULTIPLE_WITH_CLAUSES = _MULTIPLE_WITH_CLAUSES;
-
-  static const ParserErrorCode NAMED_FUNCTION_EXPRESSION = ParserErrorCode(
-      'NAMED_FUNCTION_EXPRESSION', "Function expressions can't be named.",
-      correction: "Try removing the name, or "
-          "moving the function expression to a function declaration statement.");
-
-  static const ParserErrorCode NAMED_FUNCTION_TYPE = ParserErrorCode(
-      'NAMED_FUNCTION_TYPE', "Function types can't be named.",
-      correction: "Try replacing the name with the keyword 'Function'.");
-
-  static const ParserErrorCode NAMED_PARAMETER_OUTSIDE_GROUP = ParserErrorCode(
-      'NAMED_PARAMETER_OUTSIDE_GROUP',
-      "Named parameters must be enclosed in curly braces ('{' and '}').",
-      correction: "Try surrounding the named parameters in curly braces.");
-
-  static const ParserErrorCode NATIVE_CLAUSE_IN_NON_SDK_CODE = ParserErrorCode(
-      'NATIVE_CLAUSE_IN_NON_SDK_CODE',
-      "Native clause can only be used in the SDK and code that is loaded "
-          "through native extensions.",
-      correction: "Try removing the native clause.");
-
-  static const ParserErrorCode NATIVE_CLAUSE_SHOULD_BE_ANNOTATION =
-      _NATIVE_CLAUSE_SHOULD_BE_ANNOTATION;
-
-  static const ParserErrorCode NATIVE_FUNCTION_BODY_IN_NON_SDK_CODE =
-      ParserErrorCode(
-          'NATIVE_FUNCTION_BODY_IN_NON_SDK_CODE',
-          "Native functions can only be declared in the SDK and code that is "
-              "loaded through native extensions.",
-          correction: "Try removing the word 'native'.");
-
-  static const ParserErrorCode NON_CONSTRUCTOR_FACTORY = ParserErrorCode(
-      'NON_CONSTRUCTOR_FACTORY',
-      "Only a constructor can be declared to be a factory.",
-      correction: "Try removing the keyword 'factory'.");
-
-  static const ParserErrorCode NON_IDENTIFIER_LIBRARY_NAME = ParserErrorCode(
-      'NON_IDENTIFIER_LIBRARY_NAME',
-      "The name of a library must be an identifier.",
-      correction: "Try using an identifier as the name of the library.");
-
-  static const ParserErrorCode NON_PART_OF_DIRECTIVE_IN_PART = ParserErrorCode(
-      'NON_PART_OF_DIRECTIVE_IN_PART',
-      "The part-of directive must be the only directive in a part.",
-      correction: "Try removing the other directives, or "
-          "moving them to the library for which this is a part.");
-
-  static const ParserErrorCode NON_STRING_LITERAL_AS_URI = ParserErrorCode(
-      'NON_STRING_LITERAL_AS_URI', "The URI must be a string literal.",
-      correction: "Try enclosing the URI in either single or double quotes.");
-
-  /**
-   * Parameters:
-   * 0: the operator that the user is trying to define
-   */
-  static const ParserErrorCode NON_USER_DEFINABLE_OPERATOR = ParserErrorCode(
-      'NON_USER_DEFINABLE_OPERATOR',
-      "The operator '{0}' isn't user definable.");
-
-  static const ParserErrorCode NORMAL_BEFORE_OPTIONAL_PARAMETERS = ParserErrorCode(
-      'NORMAL_BEFORE_OPTIONAL_PARAMETERS',
-      "Normal parameters must occur before optional parameters.",
-      correction:
-          "Try moving all of the normal parameters before the optional parameters.");
-
-  static const ErrorCode NULL_AWARE_CASCADE_OUT_OF_ORDER =
-      _NULL_AWARE_CASCADE_OUT_OF_ORDER;
-
-  static const ParserErrorCode POSITIONAL_AFTER_NAMED_ARGUMENT = ParserErrorCode(
-      'POSITIONAL_AFTER_NAMED_ARGUMENT',
-      "Positional arguments must occur before named arguments.",
-      correction:
-          "Try moving all of the positional arguments before the named arguments.");
-
-  static const ParserErrorCode POSITIONAL_PARAMETER_OUTSIDE_GROUP = ParserErrorCode(
-      'POSITIONAL_PARAMETER_OUTSIDE_GROUP',
-      "Positional parameters must be enclosed in square brackets ('[' and ']').",
-      correction:
-          "Try surrounding the positional parameters in square brackets.");
-
-  static const ParserErrorCode PREFIX_AFTER_COMBINATOR =
-      _PREFIX_AFTER_COMBINATOR;
-
-  static const ParserErrorCode REDIRECTING_CONSTRUCTOR_WITH_BODY =
-      _REDIRECTING_CONSTRUCTOR_WITH_BODY;
-
-  static const ParserErrorCode REDIRECTION_IN_NON_FACTORY_CONSTRUCTOR =
-      _REDIRECTION_IN_NON_FACTORY_CONSTRUCTOR;
-
-  static const ParserErrorCode SETTER_CONSTRUCTOR = _SETTER_CONSTRUCTOR;
-
-  static const ParserErrorCode SETTER_IN_FUNCTION = ParserErrorCode(
-      'SETTER_IN_FUNCTION',
-      "Setters can't be defined within methods or functions.",
-      correction: "Try moving the setter outside the method or function.");
-
-  static const ParserErrorCode STACK_OVERFLOW = _STACK_OVERFLOW;
-
-  static const ParserErrorCode STATIC_CONSTRUCTOR = _STATIC_CONSTRUCTOR;
-
-  static const ParserErrorCode STATIC_GETTER_WITHOUT_BODY = ParserErrorCode(
-      'STATIC_GETTER_WITHOUT_BODY', "A 'static' getter must have a body.",
-      correction:
-          "Try adding a body to the getter, or removing the keyword 'static'.");
-
-  static const ParserErrorCode STATIC_OPERATOR = _STATIC_OPERATOR;
-
-  static const ParserErrorCode STATIC_SETTER_WITHOUT_BODY = ParserErrorCode(
-      'STATIC_SETTER_WITHOUT_BODY', "A 'static' setter must have a body.",
-      correction:
-          "Try adding a body to the setter, or removing the keyword 'static'.");
-
-  static const ParserErrorCode STATIC_TOP_LEVEL_DECLARATION = ParserErrorCode(
-      'STATIC_TOP_LEVEL_DECLARATION',
-      "Top-level declarations can't be declared to be static.",
-      correction: "Try removing the keyword 'static'.");
-
-  static const ParserErrorCode SWITCH_HAS_CASE_AFTER_DEFAULT_CASE =
-      _SWITCH_HAS_CASE_AFTER_DEFAULT_CASE;
-
-  static const ParserErrorCode SWITCH_HAS_MULTIPLE_DEFAULT_CASES =
-      _SWITCH_HAS_MULTIPLE_DEFAULT_CASES;
-
-  static const ParserErrorCode TOP_LEVEL_OPERATOR = _TOP_LEVEL_OPERATOR;
-
-  static const ParserErrorCode TYPE_ARGUMENTS_ON_TYPE_VARIABLE =
-      _TYPE_ARGUMENTS_ON_TYPE_VARIABLE;
-
-  static const ParserErrorCode TYPE_BEFORE_FACTORY = _TYPE_BEFORE_FACTORY;
-
-  static const ParserErrorCode TYPE_PARAMETER_ON_CONSTRUCTOR =
-      _TYPE_PARAMETER_ON_CONSTRUCTOR;
-
-  /**
-   * 7.1.1 Operators: Type parameters are not syntactically supported on an
-   * operator.
-   */
-  static const ParserErrorCode TYPE_PARAMETER_ON_OPERATOR = ParserErrorCode(
-      'TYPE_PARAMETER_ON_OPERATOR',
-      "Types parameters aren't allowed when defining an operator.",
-      correction: "Try removing the type parameters.");
-
-  static const ParserErrorCode TYPEDEF_IN_CLASS = _TYPEDEF_IN_CLASS;
-
-  /**
-   * Parameters:
-   * 0: the starting character that was missing
-   */
-  static const ParserErrorCode UNEXPECTED_TERMINATOR_FOR_PARAMETER_GROUP =
-      ParserErrorCode('UNEXPECTED_TERMINATOR_FOR_PARAMETER_GROUP',
-          "There is no '{0}' to open a parameter group.",
-          correction: "Try inserting the '{0}' at the appropriate location.");
-
-  /**
-   * Parameters:
-   * 0: the unexpected text that was found
-   */
-  static const ParserErrorCode UNEXPECTED_TOKEN = ParserErrorCode(
-      'UNEXPECTED_TOKEN', "Unexpected text '{0}'.",
-      correction: "Try removing the text.");
-
-  static const ParserErrorCode VAR_AND_TYPE = _VAR_AND_TYPE;
-
-  static const ParserErrorCode VAR_AS_TYPE_NAME = _VAR_AS_TYPE_NAME;
-
-  static const ParserErrorCode VAR_CLASS = ParserErrorCode(
-      'VAR_CLASS', "Classes can't be declared to be 'var'.",
-      correction: "Try removing the keyword 'var'.");
-
-  static const ParserErrorCode VAR_ENUM = ParserErrorCode(
-      'VAR_ENUM', "Enums can't be declared to be 'var'.",
-      correction: "Try removing the keyword 'var'.");
-
-  static const ParserErrorCode VAR_RETURN_TYPE = _VAR_RETURN_TYPE;
-
-  static const ParserErrorCode VAR_TYPEDEF =
-      ParserErrorCode('VAR_TYPEDEF', "Typedefs can't be declared to be 'var'.",
-          correction: "Try removing the keyword 'var', or "
-              "replacing it with the name of the return type.");
-
-  static const ParserErrorCode VOID_WITH_TYPE_ARGUMENTS =
-      _VOID_WITH_TYPE_ARGUMENTS;
-
-  static const ParserErrorCode WITH_BEFORE_EXTENDS = _WITH_BEFORE_EXTENDS;
-
-  static const ParserErrorCode WRONG_SEPARATOR_FOR_POSITIONAL_PARAMETER =
-      ParserErrorCode('WRONG_SEPARATOR_FOR_POSITIONAL_PARAMETER',
-          "The default value of a positional parameter should be preceded by '='.",
-          correction: "Try replacing the ':' with '='.");
-
-  /**
-   * Parameters:
-   * 0: the terminator that was expected
-   * 1: the terminator that was found
-   */
-  static const ParserErrorCode WRONG_TERMINATOR_FOR_PARAMETER_GROUP =
-      ParserErrorCode('WRONG_TERMINATOR_FOR_PARAMETER_GROUP',
-          "Expected '{0}' to close parameter group.",
-          correction: "Try replacing '{0}' with '{1}'.");
-
-  /**
-   * Initialize a newly created error code to have the given [name]. The message
-   * associated with the error will be created from the given [message]
-   * template. The correction associated with the error will be created from the
-   * given [correction] template.
-   */
-  const ParserErrorCode(
-    String name,
-    String message, {
-    String? correction,
-    bool hasPublishedDocs = false,
-    String? uniqueName,
-  }) : super(
-          correction: correction,
-          hasPublishedDocs: hasPublishedDocs,
-          message: message,
-          name: name,
-          uniqueName: uniqueName ?? 'ParserErrorCode.$name',
-        );
-
-  @override
-  ErrorSeverity get errorSeverity => ErrorSeverity.ERROR;
-
-  @override
-  ErrorType get type => ErrorType.SYNTACTIC_ERROR;
-}
+export 'package:analyzer/src/dart/error/syntactic_errors.analyzer.g.dart';
diff --git a/pkg/analyzer/lib/src/dart/error/syntactic_errors.g.dart b/pkg/analyzer/lib/src/dart/error/syntactic_errors.g.dart
index ed43512..4db09fe 100644
--- a/pkg/analyzer/lib/src/dart/error/syntactic_errors.g.dart
+++ b/pkg/analyzer/lib/src/dart/error/syntactic_errors.g.dart
@@ -4,7 +4,7 @@
 // Instead modify 'pkg/front_end/messages.yaml' and run
 // 'dart pkg/analyzer/tool/messages/generate.dart' to update.
 
-part of 'syntactic_errors.dart';
+part of 'syntactic_errors.analyzer.g.dart';
 
 final fastaAnalyzerErrorCodes = <ErrorCode?>[
   null,
@@ -129,554 +129,723 @@
 ];
 
 const ParserErrorCode _ABSTRACT_CLASS_MEMBER = ParserErrorCode(
-    'ABSTRACT_CLASS_MEMBER',
-    "Members of classes can't be declared to be 'abstract'.",
-    correction:
-        "Try removing the 'abstract' keyword. You can add the 'abstract' keyword before the class declaration.");
+  'ABSTRACT_CLASS_MEMBER',
+  "Members of classes can't be declared to be 'abstract'.",
+  correction:
+      "Try removing the 'abstract' keyword. You can add the 'abstract' keyword before the class declaration.",
+);
 
 const ParserErrorCode _ABSTRACT_EXTERNAL_FIELD = ParserErrorCode(
-    'ABSTRACT_EXTERNAL_FIELD',
-    "Fields can't be declared both 'abstract' and 'external'.",
-    correction: "Try removing the 'abstract' or 'external' keyword.");
+  'ABSTRACT_EXTERNAL_FIELD',
+  "Fields can't be declared both 'abstract' and 'external'.",
+  correction: "Try removing the 'abstract' or 'external' keyword.",
+);
 
 const ParserErrorCode _ABSTRACT_LATE_FIELD = ParserErrorCode(
-    'ABSTRACT_LATE_FIELD', "Abstract fields cannot be late.",
-    correction: "Try removing the 'abstract' or 'late' keyword.");
+  'ABSTRACT_LATE_FIELD',
+  "Abstract fields cannot be late.",
+  correction: "Try removing the 'abstract' or 'late' keyword.",
+);
 
 const ParserErrorCode _ABSTRACT_STATIC_FIELD = ParserErrorCode(
-    'ABSTRACT_STATIC_FIELD', "Static fields can't be declared 'abstract'.",
-    correction: "Try removing the 'abstract' or 'static' keyword.");
+  'ABSTRACT_STATIC_FIELD',
+  "Static fields can't be declared 'abstract'.",
+  correction: "Try removing the 'abstract' or 'static' keyword.",
+);
 
 const ParserErrorCode _ANNOTATION_ON_TYPE_ARGUMENT = ParserErrorCode(
-    'ANNOTATION_ON_TYPE_ARGUMENT',
-    "Type arguments can't have annotations because they aren't declarations.");
+  'ANNOTATION_ON_TYPE_ARGUMENT',
+  "Type arguments can't have annotations because they aren't declarations.",
+);
 
 const ParserErrorCode _ANNOTATION_WITH_TYPE_ARGUMENTS = ParserErrorCode(
-    'ANNOTATION_WITH_TYPE_ARGUMENTS',
-    "An annotation can't use type arguments.");
+  'ANNOTATION_WITH_TYPE_ARGUMENTS',
+  "An annotation can't use type arguments.",
+);
 
 const ParserErrorCode _ANNOTATION_WITH_TYPE_ARGUMENTS_UNINSTANTIATED =
-    ParserErrorCode('ANNOTATION_WITH_TYPE_ARGUMENTS_UNINSTANTIATED',
-        "An annotation with type arguments must be followed by an argument list.");
+    ParserErrorCode(
+  'ANNOTATION_WITH_TYPE_ARGUMENTS_UNINSTANTIATED',
+  "An annotation with type arguments must be followed by an argument list.",
+);
 
 const ParserErrorCode _BINARY_OPERATOR_WRITTEN_OUT = ParserErrorCode(
-    'BINARY_OPERATOR_WRITTEN_OUT',
-    "Binary operator '{0}' is written as '{1}' instead of the written out word.",
-    correction: "Try replacing '{0}' with '{1}'.");
+  'BINARY_OPERATOR_WRITTEN_OUT',
+  "Binary operator '{0}' is written as '{1}' instead of the written out word.",
+  correction: "Try replacing '{0}' with '{1}'.",
+);
 
 const ParserErrorCode _BREAK_OUTSIDE_OF_LOOP = ParserErrorCode(
-    'BREAK_OUTSIDE_OF_LOOP',
-    "A break statement can't be used outside of a loop or switch statement.",
-    correction: "Try removing the break statement.");
+  'BREAK_OUTSIDE_OF_LOOP',
+  "A break statement can't be used outside of a loop or switch statement.",
+  correction: "Try removing the break statement.",
+);
 
-const ParserErrorCode _CATCH_SYNTAX = ParserErrorCode('CATCH_SYNTAX',
-    "'catch' must be followed by '(identifier)' or '(identifier, identifier)'.",
-    correction:
-        "No types are needed, the first is given by 'on', the second is always 'StackTrace'.");
+const ParserErrorCode _CATCH_SYNTAX = ParserErrorCode(
+  'CATCH_SYNTAX',
+  "'catch' must be followed by '(identifier)' or '(identifier, identifier)'.",
+  correction:
+      "No types are needed, the first is given by 'on', the second is always 'StackTrace'.",
+);
 
 const ParserErrorCode _CATCH_SYNTAX_EXTRA_PARAMETERS = ParserErrorCode(
-    'CATCH_SYNTAX_EXTRA_PARAMETERS',
-    "'catch' must be followed by '(identifier)' or '(identifier, identifier)'.",
-    correction:
-        "No types are needed, the first is given by 'on', the second is always 'StackTrace'.");
+  'CATCH_SYNTAX_EXTRA_PARAMETERS',
+  "'catch' must be followed by '(identifier)' or '(identifier, identifier)'.",
+  correction:
+      "No types are needed, the first is given by 'on', the second is always 'StackTrace'.",
+);
 
 const ParserErrorCode _CLASS_IN_CLASS = ParserErrorCode(
-    'CLASS_IN_CLASS', "Classes can't be declared inside other classes.",
-    correction: "Try moving the class to the top-level.");
+  'CLASS_IN_CLASS',
+  "Classes can't be declared inside other classes.",
+  correction: "Try moving the class to the top-level.",
+);
 
 const ParserErrorCode _COLON_IN_PLACE_OF_IN = ParserErrorCode(
-    'COLON_IN_PLACE_OF_IN', "For-in loops use 'in' rather than a colon.",
-    correction: "Try replacing the colon with the keyword 'in'.");
+  'COLON_IN_PLACE_OF_IN',
+  "For-in loops use 'in' rather than a colon.",
+  correction: "Try replacing the colon with the keyword 'in'.",
+);
 
 const ParserErrorCode _CONFLICTING_MODIFIERS = ParserErrorCode(
-    'CONFLICTING_MODIFIERS',
-    "Members can't be declared to be both '{0}' and '{1}'.",
-    correction: "Try removing one of the keywords.");
+  'CONFLICTING_MODIFIERS',
+  "Members can't be declared to be both '{0}' and '{1}'.",
+  correction: "Try removing one of the keywords.",
+);
 
 const ParserErrorCode _CONSTRUCTOR_WITH_RETURN_TYPE = ParserErrorCode(
-    'CONSTRUCTOR_WITH_RETURN_TYPE', "Constructors can't have a return type.",
-    correction: "Try removing the return type.");
+  'CONSTRUCTOR_WITH_RETURN_TYPE',
+  "Constructors can't have a return type.",
+  correction: "Try removing the return type.",
+);
 
 const ParserErrorCode _CONSTRUCTOR_WITH_TYPE_ARGUMENTS = ParserErrorCode(
-    'CONSTRUCTOR_WITH_TYPE_ARGUMENTS',
-    "A constructor invocation can't have type arguments after the constructor name.",
-    correction:
-        "Try removing the type arguments or placing them after the class name.");
+  'CONSTRUCTOR_WITH_TYPE_ARGUMENTS',
+  "A constructor invocation can't have type arguments after the constructor name.",
+  correction:
+      "Try removing the type arguments or placing them after the class name.",
+);
 
-const ParserErrorCode _CONST_AND_FINAL = ParserErrorCode('CONST_AND_FINAL',
-    "Members can't be declared to be both 'const' and 'final'.",
-    correction: "Try removing either the 'const' or 'final' keyword.");
+const ParserErrorCode _CONST_AND_FINAL = ParserErrorCode(
+  'CONST_AND_FINAL',
+  "Members can't be declared to be both 'const' and 'final'.",
+  correction: "Try removing either the 'const' or 'final' keyword.",
+);
 
 const ParserErrorCode _CONST_CLASS = ParserErrorCode(
-    'CONST_CLASS', "Classes can't be declared to be 'const'.",
-    correction:
-        "Try removing the 'const' keyword. If you're trying to indicate that instances of the class can be constants, place the 'const' keyword on  the class' constructor(s).");
+  'CONST_CLASS',
+  "Classes can't be declared to be 'const'.",
+  correction:
+      "Try removing the 'const' keyword. If you're trying to indicate that instances of the class can be constants, place the 'const' keyword on  the class' constructor(s).",
+);
 
-const ParserErrorCode _CONST_FACTORY = ParserErrorCode('CONST_FACTORY',
-    "Only redirecting factory constructors can be declared to be 'const'.",
-    correction:
-        "Try removing the 'const' keyword, or replacing the body with '=' followed by a valid target.");
+const ParserErrorCode _CONST_FACTORY = ParserErrorCode(
+  'CONST_FACTORY',
+  "Only redirecting factory constructors can be declared to be 'const'.",
+  correction:
+      "Try removing the 'const' keyword, or replacing the body with '=' followed by a valid target.",
+);
 
-const ParserErrorCode _CONST_METHOD = ParserErrorCode('CONST_METHOD',
-    "Getters, setters and methods can't be declared to be 'const'.",
-    correction: "Try removing the 'const' keyword.");
+const ParserErrorCode _CONST_METHOD = ParserErrorCode(
+  'CONST_METHOD',
+  "Getters, setters and methods can't be declared to be 'const'.",
+  correction: "Try removing the 'const' keyword.",
+);
 
 const ParserErrorCode _CONTINUE_OUTSIDE_OF_LOOP = ParserErrorCode(
-    'CONTINUE_OUTSIDE_OF_LOOP',
-    "A continue statement can't be used outside of a loop or switch statement.",
-    correction: "Try removing the continue statement.");
+  'CONTINUE_OUTSIDE_OF_LOOP',
+  "A continue statement can't be used outside of a loop or switch statement.",
+  correction: "Try removing the continue statement.",
+);
 
 const ParserErrorCode _CONTINUE_WITHOUT_LABEL_IN_CASE = ParserErrorCode(
-    'CONTINUE_WITHOUT_LABEL_IN_CASE',
-    "A continue statement in a switch statement must have a label as a target.",
-    correction:
-        "Try adding a label associated with one of the case clauses to the continue statement.");
+  'CONTINUE_WITHOUT_LABEL_IN_CASE',
+  "A continue statement in a switch statement must have a label as a target.",
+  correction:
+      "Try adding a label associated with one of the case clauses to the continue statement.",
+);
 
 const ParserErrorCode _COVARIANT_AND_STATIC = ParserErrorCode(
-    'COVARIANT_AND_STATIC',
-    "Members can't be declared to be both 'covariant' and 'static'.",
-    correction: "Try removing either the 'covariant' or 'static' keyword.");
+  'COVARIANT_AND_STATIC',
+  "Members can't be declared to be both 'covariant' and 'static'.",
+  correction: "Try removing either the 'covariant' or 'static' keyword.",
+);
 
-const ParserErrorCode _COVARIANT_MEMBER = ParserErrorCode('COVARIANT_MEMBER',
-    "Getters, setters and methods can't be declared to be 'covariant'.",
-    correction: "Try removing the 'covariant' keyword.");
+const ParserErrorCode _COVARIANT_MEMBER = ParserErrorCode(
+  'COVARIANT_MEMBER',
+  "Getters, setters and methods can't be declared to be 'covariant'.",
+  correction: "Try removing the 'covariant' keyword.",
+);
 
 const ParserErrorCode _DEFERRED_AFTER_PREFIX = ParserErrorCode(
-    'DEFERRED_AFTER_PREFIX',
-    "The deferred keyword should come immediately before the prefix ('as' clause).",
-    correction: "Try moving the deferred keyword before the prefix.");
+  'DEFERRED_AFTER_PREFIX',
+  "The deferred keyword should come immediately before the prefix ('as' clause).",
+  correction: "Try moving the deferred keyword before the prefix.",
+);
 
 const ParserErrorCode _DIRECTIVE_AFTER_DECLARATION = ParserErrorCode(
-    'DIRECTIVE_AFTER_DECLARATION',
-    "Directives must appear before any declarations.",
-    correction: "Try moving the directive before any declarations.");
+  'DIRECTIVE_AFTER_DECLARATION',
+  "Directives must appear before any declarations.",
+  correction: "Try moving the directive before any declarations.",
+);
 
 const ParserErrorCode _DUPLICATED_MODIFIER = ParserErrorCode(
-    'DUPLICATED_MODIFIER', "The modifier '{0}' was already specified.",
-    correction: "Try removing all but one occurrence of the modifier.");
+  'DUPLICATED_MODIFIER',
+  "The modifier '{0}' was already specified.",
+  correction: "Try removing all but one occurrence of the modifier.",
+);
 
 const ParserErrorCode _DUPLICATE_DEFERRED = ParserErrorCode(
-    'DUPLICATE_DEFERRED',
-    "An import directive can only have one 'deferred' keyword.",
-    correction: "Try removing all but one 'deferred' keyword.");
+  'DUPLICATE_DEFERRED',
+  "An import directive can only have one 'deferred' keyword.",
+  correction: "Try removing all but one 'deferred' keyword.",
+);
 
 const ParserErrorCode _DUPLICATE_LABEL_IN_SWITCH_STATEMENT = ParserErrorCode(
-    'DUPLICATE_LABEL_IN_SWITCH_STATEMENT',
-    "The label '{0}' was already used in this switch statement.",
-    correction: "Try choosing a different name for this label.");
+  'DUPLICATE_LABEL_IN_SWITCH_STATEMENT',
+  "The label '{0}' was already used in this switch statement.",
+  correction: "Try choosing a different name for this label.",
+);
 
-const ParserErrorCode _DUPLICATE_PREFIX = ParserErrorCode('DUPLICATE_PREFIX',
-    "An import directive can only have one prefix ('as' clause).",
-    correction: "Try removing all but one prefix.");
+const ParserErrorCode _DUPLICATE_PREFIX = ParserErrorCode(
+  'DUPLICATE_PREFIX',
+  "An import directive can only have one prefix ('as' clause).",
+  correction: "Try removing all but one prefix.",
+);
 
 const ParserErrorCode _ENUM_IN_CLASS = ParserErrorCode(
-    'ENUM_IN_CLASS', "Enums can't be declared inside classes.",
-    correction: "Try moving the enum to the top-level.");
+  'ENUM_IN_CLASS',
+  "Enums can't be declared inside classes.",
+  correction: "Try moving the enum to the top-level.",
+);
 
 const ParserErrorCode _EQUALITY_CANNOT_BE_EQUALITY_OPERAND = ParserErrorCode(
-    'EQUALITY_CANNOT_BE_EQUALITY_OPERAND',
-    "A comparison expression can't be an operand of another comparison expression.",
-    correction: "Try putting parentheses around one of the comparisons.");
+  'EQUALITY_CANNOT_BE_EQUALITY_OPERAND',
+  "A comparison expression can't be an operand of another comparison expression.",
+  correction: "Try putting parentheses around one of the comparisons.",
+);
 
 const ParserErrorCode _EXPECTED_BODY = ParserErrorCode(
-    'EXPECTED_BODY', "A {0} must have a body, even if it is empty.",
-    correction: "Try adding an empty body.");
+  'EXPECTED_BODY',
+  "A {0} must have a body, even if it is empty.",
+  correction: "Try adding an empty body.",
+);
 
-const ParserErrorCode _EXPECTED_ELSE_OR_COMMA =
-    ParserErrorCode('EXPECTED_ELSE_OR_COMMA', "Expected 'else' or comma.");
+const ParserErrorCode _EXPECTED_ELSE_OR_COMMA = ParserErrorCode(
+  'EXPECTED_ELSE_OR_COMMA',
+  "Expected 'else' or comma.",
+);
 
 const ParserErrorCode _EXPECTED_IDENTIFIER_BUT_GOT_KEYWORD = ParserErrorCode(
-    'EXPECTED_IDENTIFIER_BUT_GOT_KEYWORD',
-    "'{0}' can't be used as an identifier because it's a keyword.",
-    correction: "Try renaming this to be an identifier that isn't a keyword.");
+  'EXPECTED_IDENTIFIER_BUT_GOT_KEYWORD',
+  "'{0}' can't be used as an identifier because it's a keyword.",
+  correction: "Try renaming this to be an identifier that isn't a keyword.",
+);
 
-const ParserErrorCode _EXPECTED_INSTEAD =
-    ParserErrorCode('EXPECTED_INSTEAD', "Expected '{0}' instead of this.");
+const ParserErrorCode _EXPECTED_INSTEAD = ParserErrorCode(
+  'EXPECTED_INSTEAD',
+  "Expected '{0}' instead of this.",
+);
 
 const ParserErrorCode _EXPERIMENT_NOT_ENABLED = ParserErrorCode(
-    'EXPERIMENT_NOT_ENABLED',
-    "This requires the '{0}' language feature to be enabled.",
-    correction:
-        "Try updating your pubspec.yaml to set the minimum SDK constraint to {1} or higher, and running 'pub get'.");
+  'EXPERIMENT_NOT_ENABLED',
+  "This requires the '{0}' language feature to be enabled.",
+  correction:
+      "Try updating your pubspec.yaml to set the minimum SDK constraint to {1} or higher, and running 'pub get'.",
+);
 
 const ParserErrorCode _EXPORT_DIRECTIVE_AFTER_PART_DIRECTIVE = ParserErrorCode(
-    'EXPORT_DIRECTIVE_AFTER_PART_DIRECTIVE',
-    "Export directives must precede part directives.",
-    correction: "Try moving the export directives before the part directives.");
+  'EXPORT_DIRECTIVE_AFTER_PART_DIRECTIVE',
+  "Export directives must precede part directives.",
+  correction: "Try moving the export directives before the part directives.",
+);
 
 const ParserErrorCode _EXTENSION_DECLARES_ABSTRACT_MEMBER = ParserErrorCode(
-    'EXTENSION_DECLARES_ABSTRACT_MEMBER',
-    "Extensions can't declare abstract members.",
-    correction: "Try providing an implementation for the member.",
-    hasPublishedDocs: true);
+  'EXTENSION_DECLARES_ABSTRACT_MEMBER',
+  "Extensions can't declare abstract members.",
+  correction: "Try providing an implementation for the member.",
+  hasPublishedDocs: true,
+);
 
 const ParserErrorCode _EXTENSION_DECLARES_CONSTRUCTOR = ParserErrorCode(
-    'EXTENSION_DECLARES_CONSTRUCTOR', "Extensions can't declare constructors.",
-    correction: "Try removing the constructor declaration.",
-    hasPublishedDocs: true);
+  'EXTENSION_DECLARES_CONSTRUCTOR',
+  "Extensions can't declare constructors.",
+  correction: "Try removing the constructor declaration.",
+  hasPublishedDocs: true,
+);
 
 const ParserErrorCode _EXTENSION_DECLARES_INSTANCE_FIELD = ParserErrorCode(
-    'EXTENSION_DECLARES_INSTANCE_FIELD',
-    "Extensions can't declare instance fields",
-    correction:
-        "Try removing the field declaration or making it a static field",
-    hasPublishedDocs: true);
+  'EXTENSION_DECLARES_INSTANCE_FIELD',
+  "Extensions can't declare instance fields",
+  correction: "Try removing the field declaration or making it a static field",
+  hasPublishedDocs: true,
+);
 
 const ParserErrorCode _EXTERNAL_CLASS = ParserErrorCode(
-    'EXTERNAL_CLASS', "Classes can't be declared to be 'external'.",
-    correction: "Try removing the keyword 'external'.");
+  'EXTERNAL_CLASS',
+  "Classes can't be declared to be 'external'.",
+  correction: "Try removing the keyword 'external'.",
+);
 
 const ParserErrorCode _EXTERNAL_CONSTRUCTOR_WITH_BODY = ParserErrorCode(
-    'EXTERNAL_CONSTRUCTOR_WITH_BODY',
-    "External constructors can't have a body.",
-    correction:
-        "Try removing the body of the constructor, or removing the keyword 'external'.");
+  'EXTERNAL_CONSTRUCTOR_WITH_BODY',
+  "External constructors can't have a body.",
+  correction:
+      "Try removing the body of the constructor, or removing the keyword 'external'.",
+);
 
 const ParserErrorCode _EXTERNAL_CONSTRUCTOR_WITH_INITIALIZER = ParserErrorCode(
-    'EXTERNAL_CONSTRUCTOR_WITH_INITIALIZER',
-    "An external constructor can't have any initializers.");
+  'EXTERNAL_CONSTRUCTOR_WITH_INITIALIZER',
+  "An external constructor can't have any initializers.",
+);
 
 const ParserErrorCode _EXTERNAL_ENUM = ParserErrorCode(
-    'EXTERNAL_ENUM', "Enums can't be declared to be 'external'.",
-    correction: "Try removing the keyword 'external'.");
+  'EXTERNAL_ENUM',
+  "Enums can't be declared to be 'external'.",
+  correction: "Try removing the keyword 'external'.",
+);
 
 const ParserErrorCode _EXTERNAL_FACTORY_REDIRECTION = ParserErrorCode(
-    'EXTERNAL_FACTORY_REDIRECTION', "A redirecting factory can't be external.",
-    correction: "Try removing the 'external' modifier.");
+  'EXTERNAL_FACTORY_REDIRECTION',
+  "A redirecting factory can't be external.",
+  correction: "Try removing the 'external' modifier.",
+);
 
 const ParserErrorCode _EXTERNAL_FACTORY_WITH_BODY = ParserErrorCode(
-    'EXTERNAL_FACTORY_WITH_BODY', "External factories can't have a body.",
-    correction:
-        "Try removing the body of the factory, or removing the keyword 'external'.");
+  'EXTERNAL_FACTORY_WITH_BODY',
+  "External factories can't have a body.",
+  correction:
+      "Try removing the body of the factory, or removing the keyword 'external'.",
+);
 
 const ParserErrorCode _EXTERNAL_FIELD = ParserErrorCode(
-    'EXTERNAL_FIELD', "Fields can't be declared to be 'external'.",
-    correction:
-        "Try removing the keyword 'external', or replacing the field by an external getter and/or setter.");
+  'EXTERNAL_FIELD',
+  "Fields can't be declared to be 'external'.",
+  correction:
+      "Try removing the keyword 'external', or replacing the field by an external getter and/or setter.",
+);
 
 const ParserErrorCode _EXTERNAL_LATE_FIELD = ParserErrorCode(
-    'EXTERNAL_LATE_FIELD', "External fields cannot be late.",
-    correction: "Try removing the 'external' or 'late' keyword.");
+  'EXTERNAL_LATE_FIELD',
+  "External fields cannot be late.",
+  correction: "Try removing the 'external' or 'late' keyword.",
+);
 
 const ParserErrorCode _EXTERNAL_METHOD_WITH_BODY = ParserErrorCode(
-    'EXTERNAL_METHOD_WITH_BODY',
-    "An external or native method can't have a body.");
+  'EXTERNAL_METHOD_WITH_BODY',
+  "An external or native method can't have a body.",
+);
 
 const ParserErrorCode _EXTERNAL_TYPEDEF = ParserErrorCode(
-    'EXTERNAL_TYPEDEF', "Typedefs can't be declared to be 'external'.",
-    correction: "Try removing the keyword 'external'.");
+  'EXTERNAL_TYPEDEF',
+  "Typedefs can't be declared to be 'external'.",
+  correction: "Try removing the keyword 'external'.",
+);
 
 const ParserErrorCode _EXTRANEOUS_MODIFIER = ParserErrorCode(
-    'EXTRANEOUS_MODIFIER', "Can't have modifier '{0}' here.",
-    correction: "Try removing '{0}'.");
+  'EXTRANEOUS_MODIFIER',
+  "Can't have modifier '{0}' here.",
+  correction: "Try removing '{0}'.",
+);
 
 const ParserErrorCode _FACTORY_TOP_LEVEL_DECLARATION = ParserErrorCode(
-    'FACTORY_TOP_LEVEL_DECLARATION',
-    "Top-level declarations can't be declared to be 'factory'.",
-    correction: "Try removing the keyword 'factory'.");
+  'FACTORY_TOP_LEVEL_DECLARATION',
+  "Top-level declarations can't be declared to be 'factory'.",
+  correction: "Try removing the keyword 'factory'.",
+);
 
-const ParserErrorCode _FIELD_INITIALIZED_OUTSIDE_DECLARING_CLASS = ParserErrorCode(
-    'FIELD_INITIALIZED_OUTSIDE_DECLARING_CLASS',
-    "A field can only be initialized in its declaring class",
-    correction:
-        "Try passing a value into the superclass constructor, or moving the initialization into the constructor body.");
+const ParserErrorCode _FIELD_INITIALIZED_OUTSIDE_DECLARING_CLASS =
+    ParserErrorCode(
+  'FIELD_INITIALIZED_OUTSIDE_DECLARING_CLASS',
+  "A field can only be initialized in its declaring class",
+  correction:
+      "Try passing a value into the superclass constructor, or moving the initialization into the constructor body.",
+);
 
 const ParserErrorCode _FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR = ParserErrorCode(
-    'FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR',
-    "Field formal parameters can only be used in a constructor.",
-    correction: "Try removing 'this.'.");
+  'FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR',
+  "Field formal parameters can only be used in a constructor.",
+  correction: "Try removing 'this.'.",
+);
 
 const ParserErrorCode _FINAL_AND_COVARIANT = ParserErrorCode(
-    'FINAL_AND_COVARIANT',
-    "Members can't be declared to be both 'final' and 'covariant'.",
-    correction: "Try removing either the 'final' or 'covariant' keyword.");
+  'FINAL_AND_COVARIANT',
+  "Members can't be declared to be both 'final' and 'covariant'.",
+  correction: "Try removing either the 'final' or 'covariant' keyword.",
+);
 
-const ParserErrorCode _FINAL_AND_COVARIANT_LATE_WITH_INITIALIZER = ParserErrorCode(
-    'FINAL_AND_COVARIANT_LATE_WITH_INITIALIZER',
-    "Members marked 'late' with an initializer can't be declared to be both 'final' and 'covariant'.",
-    correction:
-        "Try removing either the 'final' or 'covariant' keyword, or removing the initializer.");
+const ParserErrorCode _FINAL_AND_COVARIANT_LATE_WITH_INITIALIZER =
+    ParserErrorCode(
+  'FINAL_AND_COVARIANT_LATE_WITH_INITIALIZER',
+  "Members marked 'late' with an initializer can't be declared to be both 'final' and 'covariant'.",
+  correction:
+      "Try removing either the 'final' or 'covariant' keyword, or removing the initializer.",
+);
 
 const ParserErrorCode _FINAL_AND_VAR = ParserErrorCode(
-    'FINAL_AND_VAR', "Members can't be declared to be both 'final' and 'var'.",
-    correction: "Try removing the keyword 'var'.");
+  'FINAL_AND_VAR',
+  "Members can't be declared to be both 'final' and 'var'.",
+  correction: "Try removing the keyword 'var'.",
+);
 
 const ParserErrorCode _GETTER_CONSTRUCTOR = ParserErrorCode(
-    'GETTER_CONSTRUCTOR', "Constructors can't be a getter.",
-    correction: "Try removing 'get'.");
+  'GETTER_CONSTRUCTOR',
+  "Constructors can't be a getter.",
+  correction: "Try removing 'get'.",
+);
 
 const ParserErrorCode _ILLEGAL_ASSIGNMENT_TO_NON_ASSIGNABLE = ParserErrorCode(
-    'ILLEGAL_ASSIGNMENT_TO_NON_ASSIGNABLE',
-    "Illegal assignment to non-assignable expression.");
+  'ILLEGAL_ASSIGNMENT_TO_NON_ASSIGNABLE',
+  "Illegal assignment to non-assignable expression.",
+);
 
 const ParserErrorCode _IMPLEMENTS_BEFORE_EXTENDS = ParserErrorCode(
-    'IMPLEMENTS_BEFORE_EXTENDS',
-    "The extends clause must be before the implements clause.",
-    correction: "Try moving the extends clause before the implements clause.");
+  'IMPLEMENTS_BEFORE_EXTENDS',
+  "The extends clause must be before the implements clause.",
+  correction: "Try moving the extends clause before the implements clause.",
+);
 
 const ParserErrorCode _IMPLEMENTS_BEFORE_ON = ParserErrorCode(
-    'IMPLEMENTS_BEFORE_ON',
-    "The on clause must be before the implements clause.",
-    correction: "Try moving the on clause before the implements clause.");
+  'IMPLEMENTS_BEFORE_ON',
+  "The on clause must be before the implements clause.",
+  correction: "Try moving the on clause before the implements clause.",
+);
 
 const ParserErrorCode _IMPLEMENTS_BEFORE_WITH = ParserErrorCode(
-    'IMPLEMENTS_BEFORE_WITH',
-    "The with clause must be before the implements clause.",
-    correction: "Try moving the with clause before the implements clause.");
+  'IMPLEMENTS_BEFORE_WITH',
+  "The with clause must be before the implements clause.",
+  correction: "Try moving the with clause before the implements clause.",
+);
 
 const ParserErrorCode _IMPORT_DIRECTIVE_AFTER_PART_DIRECTIVE = ParserErrorCode(
-    'IMPORT_DIRECTIVE_AFTER_PART_DIRECTIVE',
-    "Import directives must precede part directives.",
-    correction: "Try moving the import directives before the part directives.");
+  'IMPORT_DIRECTIVE_AFTER_PART_DIRECTIVE',
+  "Import directives must precede part directives.",
+  correction: "Try moving the import directives before the part directives.",
+);
 
 const ParserErrorCode _INITIALIZED_VARIABLE_IN_FOR_EACH = ParserErrorCode(
-    'INITIALIZED_VARIABLE_IN_FOR_EACH',
-    "The loop variable in a for-each loop can't be initialized.",
-    correction:
-        "Try removing the initializer, or using a different kind of loop.");
+  'INITIALIZED_VARIABLE_IN_FOR_EACH',
+  "The loop variable in a for-each loop can't be initialized.",
+  correction:
+      "Try removing the initializer, or using a different kind of loop.",
+);
 
 const ParserErrorCode _INVALID_AWAIT_IN_FOR = ParserErrorCode(
-    'INVALID_AWAIT_IN_FOR',
-    "The keyword 'await' isn't allowed for a normal 'for' statement.",
-    correction: "Try removing the keyword, or use a for-each statement.");
+  'INVALID_AWAIT_IN_FOR',
+  "The keyword 'await' isn't allowed for a normal 'for' statement.",
+  correction: "Try removing the keyword, or use a for-each statement.",
+);
 
 const ParserErrorCode _INVALID_CONSTRUCTOR_NAME = ParserErrorCode(
-    'INVALID_CONSTRUCTOR_NAME',
-    "The name of a constructor must match the name of the enclosing class.");
+  'INVALID_CONSTRUCTOR_NAME',
+  "The name of a constructor must match the name of the enclosing class.",
+);
 
 const ParserErrorCode _INVALID_HEX_ESCAPE = ParserErrorCode(
-    'INVALID_HEX_ESCAPE',
-    "An escape sequence starting with '\\x' must be followed by 2 hexadecimal digits.");
+  'INVALID_HEX_ESCAPE',
+  "An escape sequence starting with '\\x' must be followed by 2 hexadecimal digits.",
+);
 
 const ParserErrorCode _INVALID_INITIALIZER = ParserErrorCode(
-    'INVALID_INITIALIZER', "Not a valid initializer.",
-    correction: "To initialize a field, use the syntax 'name = value'.");
+  'INVALID_INITIALIZER',
+  "Not a valid initializer.",
+  correction: "To initialize a field, use the syntax 'name = value'.",
+);
 
 const ParserErrorCode _INVALID_OPERATOR = ParserErrorCode(
-    'INVALID_OPERATOR', "The string '{0}' isn't a user-definable operator.");
+  'INVALID_OPERATOR',
+  "The string '{0}' isn't a user-definable operator.",
+);
 
 const ParserErrorCode _INVALID_OPERATOR_QUESTIONMARK_PERIOD_FOR_SUPER =
-    ParserErrorCode('INVALID_OPERATOR_QUESTIONMARK_PERIOD_FOR_SUPER',
-        "The operator '?.' cannot be used with 'super' because 'super' cannot be null.",
-        correction: "Try replacing '?.' with '.'");
+    ParserErrorCode(
+  'INVALID_OPERATOR_QUESTIONMARK_PERIOD_FOR_SUPER',
+  "The operator '?.' cannot be used with 'super' because 'super' cannot be null.",
+  correction: "Try replacing '?.' with '.'",
+);
 
 const ParserErrorCode _INVALID_SUPER_IN_INITIALIZER = ParserErrorCode(
-    'INVALID_SUPER_IN_INITIALIZER',
-    "Can only use 'super' in an initializer for calling the superclass constructor (e.g. 'super()' or 'super.namedConstructor()')");
+  'INVALID_SUPER_IN_INITIALIZER',
+  "Can only use 'super' in an initializer for calling the superclass constructor (e.g. 'super()' or 'super.namedConstructor()')",
+);
 
 const ParserErrorCode _INVALID_THIS_IN_INITIALIZER = ParserErrorCode(
-    'INVALID_THIS_IN_INITIALIZER',
-    "Can only use 'this' in an initializer for field initialization (e.g. 'this.x = something') and constructor redirection (e.g. 'this()' or 'this.namedConstructor())");
+  'INVALID_THIS_IN_INITIALIZER',
+  "Can only use 'this' in an initializer for field initialization (e.g. 'this.x = something') and constructor redirection (e.g. 'this()' or 'this.namedConstructor())",
+);
 
 const ParserErrorCode _INVALID_UNICODE_ESCAPE = ParserErrorCode(
-    'INVALID_UNICODE_ESCAPE',
-    "An escape sequence starting with '\\u' must be followed by 4 hexadecimal digits or from 1 to 6 digits between '{' and '}'.");
+  'INVALID_UNICODE_ESCAPE',
+  "An escape sequence starting with '\\u' must be followed by 4 hexadecimal digits or from 1 to 6 digits between '{' and '}'.",
+);
 
 const ParserErrorCode _INVALID_USE_OF_COVARIANT_IN_EXTENSION = ParserErrorCode(
-    'INVALID_USE_OF_COVARIANT_IN_EXTENSION',
-    "Can't have modifier '{0}' in an extension.",
-    correction: "Try removing '{0}'.",
-    hasPublishedDocs: true);
+  'INVALID_USE_OF_COVARIANT_IN_EXTENSION',
+  "Can't have modifier '{0}' in an extension.",
+  correction: "Try removing '{0}'.",
+  hasPublishedDocs: true,
+);
 
 const ParserErrorCode _LIBRARY_DIRECTIVE_NOT_FIRST = ParserErrorCode(
-    'LIBRARY_DIRECTIVE_NOT_FIRST',
-    "The library directive must appear before all other directives.",
-    correction:
-        "Try moving the library directive before any other directives.");
+  'LIBRARY_DIRECTIVE_NOT_FIRST',
+  "The library directive must appear before all other directives.",
+  correction: "Try moving the library directive before any other directives.",
+);
 
 const ParserErrorCode _LITERAL_WITH_CLASS = ParserErrorCode(
-    'LITERAL_WITH_CLASS', "A {0} literal can't be prefixed by '{1}'.",
-    correction: "Try removing '{1}'");
+  'LITERAL_WITH_CLASS',
+  "A {0} literal can't be prefixed by '{1}'.",
+  correction: "Try removing '{1}'",
+);
 
 const ParserErrorCode _LITERAL_WITH_CLASS_AND_NEW = ParserErrorCode(
-    'LITERAL_WITH_CLASS_AND_NEW',
-    "A {0} literal can't be prefixed by 'new {1}'.",
-    correction: "Try removing 'new' and '{1}'");
+  'LITERAL_WITH_CLASS_AND_NEW',
+  "A {0} literal can't be prefixed by 'new {1}'.",
+  correction: "Try removing 'new' and '{1}'",
+);
 
 const ParserErrorCode _LITERAL_WITH_NEW = ParserErrorCode(
-    'LITERAL_WITH_NEW', "A literal can't be prefixed by 'new'.",
-    correction: "Try removing 'new'");
+  'LITERAL_WITH_NEW',
+  "A literal can't be prefixed by 'new'.",
+  correction: "Try removing 'new'",
+);
 
 const ParserErrorCode _MEMBER_WITH_CLASS_NAME = ParserErrorCode(
-    'MEMBER_WITH_CLASS_NAME',
-    "A class member can't have the same name as the enclosing class.",
-    correction: "Try renaming the member.");
+  'MEMBER_WITH_CLASS_NAME',
+  "A class member can't have the same name as the enclosing class.",
+  correction: "Try renaming the member.",
+);
 
 const ParserErrorCode _MISSING_ASSIGNABLE_SELECTOR = ParserErrorCode(
-    'MISSING_ASSIGNABLE_SELECTOR',
-    "Missing selector such as '.identifier' or '[0]'.",
-    correction: "Try adding a selector.");
+  'MISSING_ASSIGNABLE_SELECTOR',
+  "Missing selector such as '.identifier' or '[0]'.",
+  correction: "Try adding a selector.",
+);
 
 const ParserErrorCode _MISSING_ASSIGNMENT_IN_INITIALIZER = ParserErrorCode(
-    'MISSING_ASSIGNMENT_IN_INITIALIZER',
-    "Expected an assignment after the field name.",
-    correction: "To initialize a field, use the syntax 'name = value'.");
+  'MISSING_ASSIGNMENT_IN_INITIALIZER',
+  "Expected an assignment after the field name.",
+  correction: "To initialize a field, use the syntax 'name = value'.",
+);
 
 const ParserErrorCode _MISSING_CATCH_OR_FINALLY = ParserErrorCode(
-    'MISSING_CATCH_OR_FINALLY',
-    "A try block must be followed by an 'on', 'catch', or 'finally' clause.",
-    correction:
-        "Try adding either a catch or finally clause, or remove the try statement.");
+  'MISSING_CATCH_OR_FINALLY',
+  "A try block must be followed by an 'on', 'catch', or 'finally' clause.",
+  correction:
+      "Try adding either a catch or finally clause, or remove the try statement.",
+);
 
 const ParserErrorCode _MISSING_CONST_FINAL_VAR_OR_TYPE = ParserErrorCode(
-    'MISSING_CONST_FINAL_VAR_OR_TYPE',
-    "Variables must be declared using the keywords 'const', 'final', 'var' or a type name.",
-    correction:
-        "Try adding the name of the type of the variable or the keyword 'var'.");
+  'MISSING_CONST_FINAL_VAR_OR_TYPE',
+  "Variables must be declared using the keywords 'const', 'final', 'var' or a type name.",
+  correction:
+      "Try adding the name of the type of the variable or the keyword 'var'.",
+);
 
 const ParserErrorCode _MISSING_EXPRESSION_IN_THROW = ParserErrorCode(
-    'MISSING_EXPRESSION_IN_THROW', "Missing expression after 'throw'.",
-    correction:
-        "Add an expression after 'throw' or use 'rethrow' to throw a caught exception");
+  'MISSING_EXPRESSION_IN_THROW',
+  "Missing expression after 'throw'.",
+  correction:
+      "Add an expression after 'throw' or use 'rethrow' to throw a caught exception",
+);
 
-const ParserErrorCode _MISSING_INITIALIZER =
-    ParserErrorCode('MISSING_INITIALIZER', "Expected an initializer.");
+const ParserErrorCode _MISSING_INITIALIZER = ParserErrorCode(
+  'MISSING_INITIALIZER',
+  "Expected an initializer.",
+);
 
 const ParserErrorCode _MISSING_KEYWORD_OPERATOR = ParserErrorCode(
-    'MISSING_KEYWORD_OPERATOR',
-    "Operator declarations must be preceded by the keyword 'operator'.",
-    correction: "Try adding the keyword 'operator'.");
+  'MISSING_KEYWORD_OPERATOR',
+  "Operator declarations must be preceded by the keyword 'operator'.",
+  correction: "Try adding the keyword 'operator'.",
+);
 
 const ParserErrorCode _MISSING_PREFIX_IN_DEFERRED_IMPORT = ParserErrorCode(
-    'MISSING_PREFIX_IN_DEFERRED_IMPORT',
-    "Deferred imports should have a prefix.",
-    correction: "Try adding a prefix to the import by adding an 'as' clause.");
+  'MISSING_PREFIX_IN_DEFERRED_IMPORT',
+  "Deferred imports should have a prefix.",
+  correction: "Try adding a prefix to the import by adding an 'as' clause.",
+);
 
-const ParserErrorCode _MISSING_STATEMENT =
-    ParserErrorCode('MISSING_STATEMENT', "Expected a statement.");
+const ParserErrorCode _MISSING_STATEMENT = ParserErrorCode(
+  'MISSING_STATEMENT',
+  "Expected a statement.",
+);
 
 const ParserErrorCode _MIXIN_DECLARES_CONSTRUCTOR = ParserErrorCode(
-    'MIXIN_DECLARES_CONSTRUCTOR', "Mixins can't declare constructors.");
+  'MIXIN_DECLARES_CONSTRUCTOR',
+  "Mixins can't declare constructors.",
+);
 
 const ParserErrorCode _MODIFIER_OUT_OF_ORDER = ParserErrorCode(
-    'MODIFIER_OUT_OF_ORDER',
-    "The modifier '{0}' should be before the modifier '{1}'.",
-    correction: "Try re-ordering the modifiers.");
+  'MODIFIER_OUT_OF_ORDER',
+  "The modifier '{0}' should be before the modifier '{1}'.",
+  correction: "Try re-ordering the modifiers.",
+);
 
 const ParserErrorCode _MULTIPLE_EXTENDS_CLAUSES = ParserErrorCode(
-    'MULTIPLE_EXTENDS_CLAUSES',
-    "Each class definition can have at most one extends clause.",
-    correction:
-        "Try choosing one superclass and define your class to implement (or mix in) the others.");
+  'MULTIPLE_EXTENDS_CLAUSES',
+  "Each class definition can have at most one extends clause.",
+  correction:
+      "Try choosing one superclass and define your class to implement (or mix in) the others.",
+);
 
 const ParserErrorCode _MULTIPLE_LIBRARY_DIRECTIVES = ParserErrorCode(
-    'MULTIPLE_LIBRARY_DIRECTIVES',
-    "Only one library directive may be declared in a file.",
-    correction: "Try removing all but one of the library directives.");
+  'MULTIPLE_LIBRARY_DIRECTIVES',
+  "Only one library directive may be declared in a file.",
+  correction: "Try removing all but one of the library directives.",
+);
 
 const ParserErrorCode _MULTIPLE_ON_CLAUSES = ParserErrorCode(
-    'MULTIPLE_ON_CLAUSES',
-    "Each mixin definition can have at most one on clause.",
-    correction: "Try combining all of the on clauses into a single clause.");
+  'MULTIPLE_ON_CLAUSES',
+  "Each mixin definition can have at most one on clause.",
+  correction: "Try combining all of the on clauses into a single clause.",
+);
 
 const ParserErrorCode _MULTIPLE_PART_OF_DIRECTIVES = ParserErrorCode(
-    'MULTIPLE_PART_OF_DIRECTIVES',
-    "Only one part-of directive may be declared in a file.",
-    correction: "Try removing all but one of the part-of directives.");
+  'MULTIPLE_PART_OF_DIRECTIVES',
+  "Only one part-of directive may be declared in a file.",
+  correction: "Try removing all but one of the part-of directives.",
+);
 
 const ParserErrorCode _MULTIPLE_VARIANCE_MODIFIERS = ParserErrorCode(
-    'MULTIPLE_VARIANCE_MODIFIERS',
-    "Each type parameter can have at most one variance modifier.",
-    correction: "Use at most one of the 'in', 'out', or 'inout' modifiers.");
+  'MULTIPLE_VARIANCE_MODIFIERS',
+  "Each type parameter can have at most one variance modifier.",
+  correction: "Use at most one of the 'in', 'out', or 'inout' modifiers.",
+);
 
 const ParserErrorCode _MULTIPLE_WITH_CLAUSES = ParserErrorCode(
-    'MULTIPLE_WITH_CLAUSES',
-    "Each class definition can have at most one with clause.",
-    correction: "Try combining all of the with clauses into a single clause.");
+  'MULTIPLE_WITH_CLAUSES',
+  "Each class definition can have at most one with clause.",
+  correction: "Try combining all of the with clauses into a single clause.",
+);
 
 const ParserErrorCode _NATIVE_CLAUSE_SHOULD_BE_ANNOTATION = ParserErrorCode(
-    'NATIVE_CLAUSE_SHOULD_BE_ANNOTATION',
-    "Native clause in this form is deprecated.",
-    correction:
-        "Try removing this native clause and adding @native() or @native('native-name') before the declaration.");
+  'NATIVE_CLAUSE_SHOULD_BE_ANNOTATION',
+  "Native clause in this form is deprecated.",
+  correction:
+      "Try removing this native clause and adding @native() or @native('native-name') before the declaration.",
+);
 
 const ParserErrorCode _NULL_AWARE_CASCADE_OUT_OF_ORDER = ParserErrorCode(
-    'NULL_AWARE_CASCADE_OUT_OF_ORDER',
-    "The '?..' cascade operator must be first in the cascade sequence.",
-    correction:
-        "Try moving the '?..' operator to be the first cascade operator in the sequence.");
+  'NULL_AWARE_CASCADE_OUT_OF_ORDER',
+  "The '?..' cascade operator must be first in the cascade sequence.",
+  correction:
+      "Try moving the '?..' operator to be the first cascade operator in the sequence.",
+);
 
 const ParserErrorCode _PREFIX_AFTER_COMBINATOR = ParserErrorCode(
-    'PREFIX_AFTER_COMBINATOR',
-    "The prefix ('as' clause) should come before any show/hide combinators.",
-    correction: "Try moving the prefix before the combinators.");
+  'PREFIX_AFTER_COMBINATOR',
+  "The prefix ('as' clause) should come before any show/hide combinators.",
+  correction: "Try moving the prefix before the combinators.",
+);
 
 const ParserErrorCode _REDIRECTING_CONSTRUCTOR_WITH_BODY = ParserErrorCode(
-    'REDIRECTING_CONSTRUCTOR_WITH_BODY',
-    "Redirecting constructors can't have a body.",
-    correction:
-        "Try removing the body, or not making this a redirecting constructor.");
+  'REDIRECTING_CONSTRUCTOR_WITH_BODY',
+  "Redirecting constructors can't have a body.",
+  correction:
+      "Try removing the body, or not making this a redirecting constructor.",
+);
 
 const ParserErrorCode _REDIRECTION_IN_NON_FACTORY_CONSTRUCTOR = ParserErrorCode(
-    'REDIRECTION_IN_NON_FACTORY_CONSTRUCTOR',
-    "Only factory constructor can specify '=' redirection.",
-    correction:
-        "Try making this a factory constructor, or remove the redirection.");
+  'REDIRECTION_IN_NON_FACTORY_CONSTRUCTOR',
+  "Only factory constructor can specify '=' redirection.",
+  correction:
+      "Try making this a factory constructor, or remove the redirection.",
+);
 
 const ParserErrorCode _SETTER_CONSTRUCTOR = ParserErrorCode(
-    'SETTER_CONSTRUCTOR', "Constructors can't be a setter.",
-    correction: "Try removing 'set'.");
+  'SETTER_CONSTRUCTOR',
+  "Constructors can't be a setter.",
+  correction: "Try removing 'set'.",
+);
 
 const ParserErrorCode _STACK_OVERFLOW = ParserErrorCode(
-    'STACK_OVERFLOW', "The file has too many nested expressions or statements.",
-    correction: "Try simplifying the code.");
+  'STACK_OVERFLOW',
+  "The file has too many nested expressions or statements.",
+  correction: "Try simplifying the code.",
+);
 
 const ParserErrorCode _STATIC_CONSTRUCTOR = ParserErrorCode(
-    'STATIC_CONSTRUCTOR', "Constructors can't be static.",
-    correction: "Try removing the keyword 'static'.");
+  'STATIC_CONSTRUCTOR',
+  "Constructors can't be static.",
+  correction: "Try removing the keyword 'static'.",
+);
 
 const ParserErrorCode _STATIC_OPERATOR = ParserErrorCode(
-    'STATIC_OPERATOR', "Operators can't be static.",
-    correction: "Try removing the keyword 'static'.");
+  'STATIC_OPERATOR',
+  "Operators can't be static.",
+  correction: "Try removing the keyword 'static'.",
+);
 
 const ParserErrorCode _SWITCH_HAS_CASE_AFTER_DEFAULT_CASE = ParserErrorCode(
-    'SWITCH_HAS_CASE_AFTER_DEFAULT_CASE',
-    "The default case should be the last case in a switch statement.",
-    correction: "Try moving the default case after the other case clauses.");
+  'SWITCH_HAS_CASE_AFTER_DEFAULT_CASE',
+  "The default case should be the last case in a switch statement.",
+  correction: "Try moving the default case after the other case clauses.",
+);
 
 const ParserErrorCode _SWITCH_HAS_MULTIPLE_DEFAULT_CASES = ParserErrorCode(
-    'SWITCH_HAS_MULTIPLE_DEFAULT_CASES',
-    "The 'default' case can only be declared once.",
-    correction: "Try removing all but one default case.");
+  'SWITCH_HAS_MULTIPLE_DEFAULT_CASES',
+  "The 'default' case can only be declared once.",
+  correction: "Try removing all but one default case.",
+);
 
 const ParserErrorCode _TOP_LEVEL_OPERATOR = ParserErrorCode(
-    'TOP_LEVEL_OPERATOR', "Operators must be declared within a class.",
-    correction:
-        "Try removing the operator, moving it to a class, or converting it to be a function.");
+  'TOP_LEVEL_OPERATOR',
+  "Operators must be declared within a class.",
+  correction:
+      "Try removing the operator, moving it to a class, or converting it to be a function.",
+);
 
 const ParserErrorCode _TYPEDEF_IN_CLASS = ParserErrorCode(
-    'TYPEDEF_IN_CLASS', "Typedefs can't be declared inside classes.",
-    correction: "Try moving the typedef to the top-level.");
+  'TYPEDEF_IN_CLASS',
+  "Typedefs can't be declared inside classes.",
+  correction: "Try moving the typedef to the top-level.",
+);
 
 const ParserErrorCode _TYPE_ARGUMENTS_ON_TYPE_VARIABLE = ParserErrorCode(
-    'TYPE_ARGUMENTS_ON_TYPE_VARIABLE',
-    "Can't use type arguments with type variable '{0}'.",
-    correction: "Try removing the type arguments.");
+  'TYPE_ARGUMENTS_ON_TYPE_VARIABLE',
+  "Can't use type arguments with type variable '{0}'.",
+  correction: "Try removing the type arguments.",
+);
 
 const ParserErrorCode _TYPE_BEFORE_FACTORY = ParserErrorCode(
-    'TYPE_BEFORE_FACTORY', "Factory constructors cannot have a return type.",
-    correction: "Try removing the type appearing before 'factory'.");
+  'TYPE_BEFORE_FACTORY',
+  "Factory constructors cannot have a return type.",
+  correction: "Try removing the type appearing before 'factory'.",
+);
 
 const ParserErrorCode _TYPE_PARAMETER_ON_CONSTRUCTOR = ParserErrorCode(
-    'TYPE_PARAMETER_ON_CONSTRUCTOR', "Constructors can't have type parameters.",
-    correction: "Try removing the type parameters.");
+  'TYPE_PARAMETER_ON_CONSTRUCTOR',
+  "Constructors can't have type parameters.",
+  correction: "Try removing the type parameters.",
+);
 
-const ParserErrorCode _VAR_AND_TYPE = ParserErrorCode('VAR_AND_TYPE',
-    "Variables can't be declared using both 'var' and a type name.",
-    correction: "Try removing 'var.'");
+const ParserErrorCode _VAR_AND_TYPE = ParserErrorCode(
+  'VAR_AND_TYPE',
+  "Variables can't be declared using both 'var' and a type name.",
+  correction: "Try removing 'var.'",
+);
 
 const ParserErrorCode _VAR_AS_TYPE_NAME = ParserErrorCode(
-    'VAR_AS_TYPE_NAME', "The keyword 'var' can't be used as a type name.");
+  'VAR_AS_TYPE_NAME',
+  "The keyword 'var' can't be used as a type name.",
+);
 
 const ParserErrorCode _VAR_RETURN_TYPE = ParserErrorCode(
-    'VAR_RETURN_TYPE', "The return type can't be 'var'.",
-    correction:
-        "Try removing the keyword 'var', or replacing it with the name of the return type.");
+  'VAR_RETURN_TYPE',
+  "The return type can't be 'var'.",
+  correction:
+      "Try removing the keyword 'var', or replacing it with the name of the return type.",
+);
 
 const ParserErrorCode _VOID_WITH_TYPE_ARGUMENTS = ParserErrorCode(
-    'VOID_WITH_TYPE_ARGUMENTS', "Type 'void' can't have type arguments.",
-    correction: "Try removing the type arguments.");
+  'VOID_WITH_TYPE_ARGUMENTS',
+  "Type 'void' can't have type arguments.",
+  correction: "Try removing the type arguments.",
+);
 
 const ParserErrorCode _WITH_BEFORE_EXTENDS = ParserErrorCode(
-    'WITH_BEFORE_EXTENDS', "The extends clause must be before the with clause.",
-    correction: "Try moving the extends clause before the with clause.");
+  'WITH_BEFORE_EXTENDS',
+  "The extends clause must be before the with clause.",
+  correction: "Try moving the extends clause before the with clause.",
+);
diff --git a/pkg/analyzer/lib/src/error/codes.dart b/pkg/analyzer/lib/src/error/codes.dart
index 0b43ce7..1687c1d 100644
--- a/pkg/analyzer/lib/src/error/codes.dart
+++ b/pkg/analyzer/lib/src/error/codes.dart
@@ -2,15800 +2,8 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analyzer/error/error.dart';
-import 'package:analyzer/src/error/analyzer_error_code.dart';
-
 export 'package:analyzer/src/analysis_options/error/option_codes.dart';
 export 'package:analyzer/src/dart/error/hint_codes.dart';
 export 'package:analyzer/src/dart/error/lint_codes.dart';
 export 'package:analyzer/src/dart/error/todo_codes.dart';
-
-// It is hard to visually separate each code's _doc comment_ from its published
-// _documentation comment_ when each is written as an end-of-line comment.
-// ignore_for_file: slash_for_doc_comments
-
-/**
- * The error codes used for compile time errors. The convention for this class
- * is for the name of the error code to indicate the problem that caused the
- * error to be generated and for the error message to explain what is wrong and,
- * when appropriate, how the problem can be corrected.
- */
-class CompileTimeErrorCode extends AnalyzerErrorCode {
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a field that has the `abstract`
-  // modifier also has an initializer.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because `f` is marked as
-  // `abstract` and has an initializer:
-  //
-  // ```dart
-  // abstract class C {
-  //   abstract int [!f!] = 0;
-  // }
-  // ```
-  //
-  // The following code produces this diagnostic because `f` is marked as
-  // `abstract` and there's an initializer in the constructor:
-  //
-  // ```dart
-  // abstract class C {
-  //   abstract int f;
-  //
-  //   C() : [!f!] = 0;
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the field must be abstract, then remove the initializer:
-  //
-  // ```dart
-  // abstract class C {
-  //   abstract int f;
-  // }
-  // ```
-  //
-  // If the field isn't required to be abstract, then remove the keyword:
-  //
-  // ```dart
-  // abstract class C {
-  //   int f = 0;
-  // }
-  // ```
-  static const CompileTimeErrorCode ABSTRACT_FIELD_CONSTRUCTOR_INITIALIZER =
-      CompileTimeErrorCode(
-    'ABSTRACT_FIELD_INITIALIZER',
-    "Abstract fields can't have initializers.",
-    correction: "Try removing the field initializer or the 'abstract' keyword "
-        "from the field declaration.",
-    hasPublishedDocs: true,
-    uniqueName: 'ABSTRACT_FIELD_CONSTRUCTOR_INITIALIZER',
-  );
-
-  /**
-   * No parameters.
-   */
-  static const CompileTimeErrorCode ABSTRACT_FIELD_INITIALIZER =
-      CompileTimeErrorCode('ABSTRACT_FIELD_INITIALIZER',
-          "Abstract fields can't have initializers.",
-          correction: "Try removing the initializer or the 'abstract' keyword.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the display name for the kind of the found abstract member
-   * 1: the name of the member
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an inherited member is
-  // referenced using `super`, but there is no concrete implementation of the
-  // member in the superclass chain. Abstract members can't be invoked.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `B` doesn't inherit a
-  // concrete implementation of `a`:
-  //
-  // ```dart
-  // abstract class A {
-  //   int get a;
-  // }
-  // class B extends A {
-  //   int get a => super.[!a!];
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Remove the invocation of the abstract member, possibly replacing it with an
-  // invocation of a concrete member.
-  // TODO(brianwilkerson) This either needs to be generalized (use 'member'
-  //  rather than '{0}') or split into multiple codes.
-  static const CompileTimeErrorCode ABSTRACT_SUPER_MEMBER_REFERENCE =
-      CompileTimeErrorCode('ABSTRACT_SUPER_MEMBER_REFERENCE',
-          "The {0} '{1}' is always abstract in the supertype.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the ambiguous element
-   * 1: the name of the first library in which the type is found
-   * 2: the name of the second library in which the type is found
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when two or more export directives
-  // cause the same name to be exported from multiple libraries.
-  //
-  // #### Example
-  //
-  // Given a file named `a.dart` containing
-  //
-  // ```dart
-  // %uri="lib/a.dart"
-  // class C {}
-  // ```
-  //
-  // And a file named `b.dart` containing
-  //
-  // ```dart
-  // %uri="lib/b.dart"
-  // class C {}
-  // ```
-  //
-  // The following code produces this diagnostic because the name `C` is being
-  // exported from both `a.dart` and `b.dart`:
-  //
-  // ```dart
-  // export 'a.dart';
-  // export [!'b.dart'!];
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If none of the names in one of the libraries needs to be exported, then
-  // remove the unnecessary export directives:
-  //
-  // ```dart
-  // export 'a.dart';
-  // ```
-  //
-  // If all of the export directives are needed, then hide the name in all
-  // except one of the directives:
-  //
-  // ```dart
-  // export 'a.dart';
-  // export 'b.dart' hide C;
-  // ```
-  static const CompileTimeErrorCode AMBIGUOUS_EXPORT = CompileTimeErrorCode(
-      'AMBIGUOUS_EXPORT',
-      "The name '{0}' is defined in the libraries '{1}' and '{2}'.",
-      correction: "Try removing the export of one of the libraries, or "
-          "explicitly hiding the name in one of the export directives.",
-      hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the member
-   * 1: the name of the first declaring extension
-   * 2: the name of the second declaring extension
-   */
-  // #### Description
-  //
-  // When code refers to a member of an object (for example, `o.m()` or `o.m` or
-  // `o[i]`) where the static type of `o` doesn't declare the member (`m` or
-  // `[]`, for example), then the analyzer tries to find the member in an
-  // extension. For example, if the member is `m`, then the analyzer looks for
-  // extensions that declare a member named `m` and have an extended type that
-  // the static type of `o` can be assigned to. When there's more than one such
-  // extension in scope, the extension whose extended type is most specific is
-  // selected.
-  //
-  // The analyzer produces this diagnostic when none of the extensions has an
-  // extended type that's more specific than the extended types of all of the
-  // other extensions, making the reference to the member ambiguous.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because there's no way to
-  // choose between the member in `E1` and the member in `E2`:
-  //
-  // ```dart
-  // extension E1 on String {
-  //   int get charCount => 1;
-  // }
-  //
-  // extension E2 on String {
-  //   int get charCount => 2;
-  // }
-  //
-  // void f(String s) {
-  //   print(s.[!charCount!]);
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you don't need both extensions, then you can delete or hide one of them.
-  //
-  // If you need both, then explicitly select the one you want to use by using
-  // an extension override:
-  //
-  // ```dart
-  // extension E1 on String {
-  //   int get charCount => length;
-  // }
-  //
-  // extension E2 on String {
-  //   int get charCount => length;
-  // }
-  //
-  // void f(String s) {
-  //   print(E2(s).charCount);
-  // }
-  // ```
-  static const CompileTimeErrorCode AMBIGUOUS_EXTENSION_MEMBER_ACCESS =
-      CompileTimeErrorCode(
-          'AMBIGUOUS_EXTENSION_MEMBER_ACCESS',
-          "A member named '{0}' is defined in extensions {1}, and "
-              "none are more specific.",
-          correction:
-              "Try using an extension override to specify the extension "
-              "you want to be chosen.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the ambiguous type
-   * 1: the name of the first library that the type is found
-   * 2: the name of the second library that the type is found
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a name is referenced that is
-  // declared in two or more imported libraries.
-  //
-  // #### Examples
-  //
-  // Given a library (`a.dart`) that defines a class (`C` in this example):
-  //
-  // ```dart
-  // %uri="lib/a.dart"
-  // class A {}
-  // class C {}
-  // ```
-  //
-  // And a library (`b.dart`) that defines a different class with the same name:
-  //
-  // ```dart
-  // %uri="lib/b.dart"
-  // class B {}
-  // class C {}
-  // ```
-  //
-  // The following code produces this diagnostic:
-  //
-  // ```dart
-  // import 'a.dart';
-  // import 'b.dart';
-  //
-  // void f([!C!] c1, [!C!] c2) {}
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If any of the libraries aren't needed, then remove the import directives
-  // for them:
-  //
-  // ```dart
-  // import 'a.dart';
-  //
-  // void f(C c1, C c2) {}
-  // ```
-  //
-  // If the name is still defined by more than one library, then add a `hide`
-  // clause to the import directives for all except one library:
-  //
-  // ```dart
-  // import 'a.dart' hide C;
-  // import 'b.dart';
-  //
-  // void f(C c1, C c2) {}
-  // ```
-  //
-  // If you must be able to reference more than one of these types, then add a
-  // prefix to each of the import directives, and qualify the references with
-  // the appropriate prefix:
-  //
-  // ```dart
-  // import 'a.dart' as a;
-  // import 'b.dart' as b;
-  //
-  // void f(a.C c1, b.C c2) {}
-  // ```
-  static const CompileTimeErrorCode AMBIGUOUS_IMPORT = CompileTimeErrorCode(
-      'AMBIGUOUS_IMPORT', "The name '{0}' is defined in the libraries {1}.",
-      correction: "Try using 'as prefix' for one of the import directives, or "
-          "hiding the name from all but one of the imports.",
-      hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // Because map and set literals use the same delimiters (`{` and `}`), the
-  // analyzer looks at the type arguments and the elements to determine which
-  // kind of literal you meant. When there are no type arguments, then the
-  // analyzer uses the types of the elements. If all of the elements are literal
-  // map entries and all of the spread operators are spreading a `Map` then it's
-  // a `Map`. If none of the elements are literal map entries and all of the
-  // spread operators are spreading an `Iterable`, then it's a `Set`. If neither
-  // of those is true then it's ambiguous.
-  //
-  // The analyzer produces this diagnostic when at least one element is a
-  // literal map entry or a spread operator spreading a `Map`, and at least one
-  // element is neither of these, making it impossible for the analyzer to
-  // determine whether you are writing a map literal or a set literal.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic:
-  //
-  // ```dart
-  // union(Map<String, String> a, List<String> b, Map<String, String> c) =>
-  //     [!{...a, ...b, ...c}!];
-  // ```
-  //
-  // The list `b` can only be spread into a set, and the maps `a` and `c` can
-  // only be spread into a map, and the literal can't be both.
-  //
-  // #### Common fixes
-  //
-  // There are two common ways to fix this problem. The first is to remove all
-  // of the spread elements of one kind or another, so that the elements are
-  // consistent. In this case, that likely means removing the list and deciding
-  // what to do about the now unused parameter:
-  //
-  // ```dart
-  // union(Map<String, String> a, List<String> b, Map<String, String> c) =>
-  //     {...a, ...c};
-  // ```
-  //
-  // The second fix is to change the elements of one kind into elements that are
-  // consistent with the other elements. For example, you can add the elements
-  // of the list as keys that map to themselves:
-  //
-  // ```dart
-  // union(Map<String, String> a, List<String> b, Map<String, String> c) =>
-  //     {...a, for (String s in b) s: s, ...c};
-  // ```
-  static const CompileTimeErrorCode AMBIGUOUS_SET_OR_MAP_LITERAL_BOTH =
-      CompileTimeErrorCode(
-          'AMBIGUOUS_SET_OR_MAP_LITERAL_BOTH',
-          "The literal can't be either a map or a set because it contains at "
-              "least one literal map entry or a spread operator spreading a "
-              "'Map', and at least one element which is neither of these.",
-          correction:
-              "Try removing or changing some of the elements so that all of "
-              "the elements are consistent.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // Because map and set literals use the same delimiters (`{` and `}`), the
-  // analyzer looks at the type arguments and the elements to determine which
-  // kind of literal you meant. When there are no type arguments and all of the
-  // elements are spread elements (which are allowed in both kinds of literals)
-  // then the analyzer uses the types of the expressions that are being spread.
-  // If all of the expressions have the type `Iterable`, then it's a set
-  // literal; if they all have the type `Map`, then it's a map literal.
-  //
-  // This diagnostic is produced when none of the expressions being spread have
-  // a type that allows the analyzer to decide whether you were writing a map
-  // literal or a set literal.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic:
-  //
-  // ```dart
-  // union(a, b) => [!{...a, ...b}!];
-  // ```
-  //
-  // The problem occurs because there are no type arguments, and there is no
-  // information about the type of either `a` or `b`.
-  //
-  // #### Common fixes
-  //
-  // There are three common ways to fix this problem. The first is to add type
-  // arguments to the literal. For example, if the literal is intended to be a
-  // map literal, you might write something like this:
-  //
-  // ```dart
-  // union(a, b) => <String, String>{...a, ...b};
-  // ```
-  //
-  // The second fix is to add type information so that the expressions have
-  // either the type `Iterable` or the type `Map`. You can add an explicit cast
-  // or, in this case, add types to the declarations of the two parameters:
-  //
-  // ```dart
-  // union(List<int> a, List<int> b) => {...a, ...b};
-  // ```
-  //
-  // The third fix is to add context information. In this case, that means
-  // adding a return type to the function:
-  //
-  // ```dart
-  // Set<String> union(a, b) => {...a, ...b};
-  // ```
-  //
-  // In other cases, you might add a type somewhere else. For example, say the
-  // original code looks like this:
-  //
-  // ```dart
-  // union(a, b) {
-  //   var x = [!{...a, ...b}!];
-  //   return x;
-  // }
-  // ```
-  //
-  // You might add a type annotation on `x`, like this:
-  //
-  // ```dart
-  // union(a, b) {
-  //   Map<String, String> x = {...a, ...b};
-  //   return x;
-  // }
-  // ```
-  static const CompileTimeErrorCode AMBIGUOUS_SET_OR_MAP_LITERAL_EITHER =
-      CompileTimeErrorCode(
-          'AMBIGUOUS_SET_OR_MAP_LITERAL_EITHER',
-          "This literal must be either a map or a set, but the elements don't "
-              "have enough information for type inference to work.",
-          correction:
-              "Try adding type arguments to the literal (one for sets, two "
-              "for maps).",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the actual argument type
-   * 1: the name of the expected type
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the static type of an argument
-  // can't be assigned to the static type of the corresponding parameter.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because a `num` can't be
-  // assigned to a `String`:
-  //
-  // ```dart
-  // %language=2.9
-  // String f(String x) => x;
-  // String g(num y) => f([!y!]);
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If possible, rewrite the code so that the static type is assignable. In the
-  // example above you might be able to change the type of the parameter `y`:
-  //
-  // ```dart
-  // %language=2.9
-  // String f(String x) => x;
-  // String g(String y) => f(y);
-  // ```
-  //
-  // If that fix isn't possible, then add code to handle the case where the
-  // argument value isn't the required type. One approach is to coerce other
-  // types to the required type:
-  //
-  // ```dart
-  // %language=2.9
-  // String f(String x) => x;
-  // String g(num y) => f(y.toString());
-  // ```
-  //
-  // Another approach is to add explicit type tests and fallback code:
-  //
-  // ```dart
-  // %language=2.9
-  // String f(String x) => x;
-  // String g(num y) => f(y is String ? y : '');
-  // ```
-  //
-  // If you believe that the runtime type of the argument will always be the
-  // same as the static type of the parameter, and you're willing to risk having
-  // an exception thrown at runtime if you're wrong, then add an explicit cast:
-  //
-  // ```dart
-  // String f(String x) => x;
-  // String g(num y) => f(y as String);
-  // ```
-  static const CompileTimeErrorCode ARGUMENT_TYPE_NOT_ASSIGNABLE =
-      CompileTimeErrorCode(
-          'ARGUMENT_TYPE_NOT_ASSIGNABLE',
-          "The argument type '{0}' can't be assigned to the parameter type "
-              "'{1}'.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a redirecting constructor (a
-  // constructor that redirects to another constructor in the same class) has an
-  // assert in the initializer list.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the unnamed constructor
-  // is a redirecting constructor and also has an assert in the initializer
-  // list:
-  //
-  // ```dart
-  // class C {
-  //   C(int x) : [!assert(x > 0)!], this.name();
-  //   C.name() {}
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the assert isn't needed, then remove it:
-  //
-  // ```dart
-  // class C {
-  //   C(int x) : this.name();
-  //   C.name() {}
-  // }
-  // ```
-  //
-  // If the assert is needed, then convert the constructor into a factory
-  // constructor:
-  //
-  // ```dart
-  // class C {
-  //   factory C(int x) {
-  //     assert(x > 0);
-  //     return C.name();
-  //   }
-  //   C.name() {}
-  // }
-  // ```
-  static const CompileTimeErrorCode ASSERT_IN_REDIRECTING_CONSTRUCTOR =
-      CompileTimeErrorCode('ASSERT_IN_REDIRECTING_CONSTRUCTOR',
-          "A redirecting constructor can't have an 'assert' initializer.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when it finds an assignment to a
-  // top-level variable, a static field, or a local variable that has the
-  // `const` modifier. The value of a compile-time constant can't be changed at
-  // runtime.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because `c` is being assigned a
-  // value even though it has the `const` modifier:
-  //
-  // ```dart
-  // const c = 0;
-  //
-  // void f() {
-  //   [!c!] = 1;
-  //   print(c);
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the variable must be assignable, then remove the `const` modifier:
-  //
-  // ```dart
-  // var c = 0;
-  //
-  // void f() {
-  //   c = 1;
-  //   print(c);
-  // }
-  // ```
-  //
-  // If the constant shouldn't be changed, then either remove the assignment or
-  // use a local variable in place of references to the constant:
-  //
-  // ```dart
-  // const c = 0;
-  //
-  // void f() {
-  //   var v = 1;
-  //   print(v);
-  // }
-  // ```
-  static const CompileTimeErrorCode ASSIGNMENT_TO_CONST = CompileTimeErrorCode(
-      'ASSIGNMENT_TO_CONST', "Constant variables can't be assigned a value.",
-      correction: "Try removing the assignment, or "
-          "remove the modifier 'const' from the variable.",
-      hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the final variable
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when it finds an invocation of a
-  // setter, but there's no setter because the field with the same name was
-  // declared to be `final` or `const`.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `v` is final:
-  //
-  // ```dart
-  // class C {
-  //   final v = 0;
-  // }
-  //
-  // f(C c) {
-  //   c.[!v!] = 1;
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you need to be able to set the value of the field, then remove the
-  // modifier `final` from the field:
-  //
-  // ```dart
-  // class C {
-  //   int v = 0;
-  // }
-  //
-  // f(C c) {
-  //   c.v = 1;
-  // }
-  // ```
-  static const CompileTimeErrorCode ASSIGNMENT_TO_FINAL = CompileTimeErrorCode(
-      'ASSIGNMENT_TO_FINAL',
-      "'{0}' can't be used as a setter because it's final.",
-      correction: "Try finding a different setter, or making '{0}' non-final.",
-      hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a local variable that was
-  // declared to be final is assigned after it was initialized.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `x` is final, so it
-  // can't have a value assigned to it after it was initialized:
-  //
-  // ```dart
-  // void f() {
-  //   final x = 0;
-  //   [!x!] = 3;
-  //   print(x);
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Remove the keyword `final`, and replace it with `var` if there's no type
-  // annotation:
-  //
-  // ```dart
-  // void f() {
-  //   var x = 0;
-  //   x = 3;
-  //   print(x);
-  // }
-  // ```
-  static const CompileTimeErrorCode ASSIGNMENT_TO_FINAL_LOCAL =
-      CompileTimeErrorCode('ASSIGNMENT_TO_FINAL_LOCAL',
-          "The final variable '{0}' can only be set once.",
-          correction: "Try making '{0}' non-final.", hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a reference to a setter is
-  // found; there is no setter defined for the type; but there is a getter
-  // defined with the same name.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because there is no setter
-  // named `x` in `C`, but there is a getter named `x`:
-  //
-  // ```dart
-  // class C {
-  //   int get x => 0;
-  //   set y(int p) {}
-  // }
-  //
-  // void f(C c) {
-  //   c.[!x!] = 1;
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you want to invoke an existing setter, then correct the name:
-  //
-  // ```dart
-  // class C {
-  //   int get x => 0;
-  //   set y(int p) {}
-  // }
-  //
-  // void f(C c) {
-  //   c.y = 1;
-  // }
-  // ```
-  //
-  // If you want to invoke the setter but it just doesn't exist yet, then
-  // declare it:
-  //
-  // ```dart
-  // class C {
-  //   int get x => 0;
-  //   set x(int p) {}
-  //   set y(int p) {}
-  // }
-  //
-  // void f(C c) {
-  //   c.x = 1;
-  // }
-  // ```
-  static const CompileTimeErrorCode ASSIGNMENT_TO_FINAL_NO_SETTER =
-      CompileTimeErrorCode('ASSIGNMENT_TO_FINAL_NO_SETTER',
-          "There isn’t a setter named '{0}' in class '{1}'.",
-          correction:
-              "Try correcting the name to reference an existing setter, or "
-              "declare the setter.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the name of a function appears
-  // on the left-hand side of an assignment expression.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the assignment to the
-  // function `f` is invalid:
-  //
-  // ```dart
-  // void f() {}
-  //
-  // void g() {
-  //   [!f!] = () {};
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the right-hand side should be assigned to something else, such as a
-  // local variable, then change the left-hand side:
-  //
-  // ```dart
-  // void f() {}
-  //
-  // void g() {
-  //   var x = () {};
-  //   print(x);
-  // }
-  // ```
-  //
-  // If the intent is to change the implementation of the function, then define
-  // a function-valued variable instead of a function:
-  //
-  // ```dart
-  // void Function() f = () {};
-  //
-  // void g() {
-  //   f = () {};
-  // }
-  // ```
-  static const CompileTimeErrorCode ASSIGNMENT_TO_FUNCTION =
-      CompileTimeErrorCode(
-          'ASSIGNMENT_TO_FUNCTION', "Functions can't be assigned a value.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the target of an assignment is a
-  // method.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `f` can't be assigned a
-  // value because it's a method:
-  //
-  // ```dart
-  // class C {
-  //   void f() {}
-  //
-  //   void g() {
-  //     [!f!] = null;
-  //   }
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Rewrite the code so that there isn't an assignment to a method.
-  static const CompileTimeErrorCode ASSIGNMENT_TO_METHOD = CompileTimeErrorCode(
-      'ASSIGNMENT_TO_METHOD', "Methods can't be assigned a value.",
-      hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the name of a type name appears
-  // on the left-hand side of an assignment expression.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the assignment to the
-  // class `C` is invalid:
-  //
-  // ```dart
-  // class C {}
-  //
-  // void f() {
-  //   [!C!] = null;
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the right-hand side should be assigned to something else, such as a
-  // local variable, then change the left-hand side:
-  //
-  // ```dart
-  // void f() {}
-  //
-  // void g() {
-  //   var c = null;
-  //   print(c);
-  // }
-  // ```
-  static const CompileTimeErrorCode ASSIGNMENT_TO_TYPE = CompileTimeErrorCode(
-      'ASSIGNMENT_TO_TYPE', "Types can't be assigned a value.",
-      hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an async for-in loop is found in
-  // a function or method whose body isn't marked as being either `async` or
-  // `async*`.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the body of `f` isn't
-  // marked as being either `async` or `async*`, but `f` contains an async
-  // for-in loop:
-  //
-  // ```dart
-  // void f(list) {
-  //   await for (var e [!in!] list) {
-  //     print(e);
-  //   }
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the function should return a `Future`, then mark the body with `async`:
-  //
-  // ```dart
-  // Future<void> f(list) async {
-  //   await for (var e in list) {
-  //     print(e);
-  //   }
-  // }
-  // ```
-  //
-  // If the function should return a `Stream` of values, then mark the body with
-  // `async*`:
-  //
-  // ```dart
-  // Stream<void> f(list) async* {
-  //   await for (var e in list) {
-  //     print(e);
-  //   }
-  // }
-  // ```
-  //
-  // If the function should be synchronous, then remove the `await` before the
-  // loop:
-  //
-  // ```dart
-  // void f(list) {
-  //   for (var e in list) {
-  //     print(e);
-  //   }
-  // }
-  // ```
-  static const CompileTimeErrorCode ASYNC_FOR_IN_WRONG_CONTEXT =
-      CompileTimeErrorCode('ASYNC_FOR_IN_WRONG_CONTEXT',
-          "The async for-in loop can only be used in an async function.",
-          correction:
-              "Try marking the function body with either 'async' or 'async*', "
-              "or removing the 'await' before the for-in loop.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a local variable that has the
-  // `late` modifier uses an `await` expression in the initializer.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because an `await` expression
-  // is used in the initializer for `v`, a local variable that is marked `late`:
-  //
-  // ```dart
-  // Future<int> f() async {
-  //   late var v = [!await!] 42;
-  //   return v;
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the initializer can be rewritten to not use `await`, then rewrite it:
-  //
-  // ```dart
-  // Future<int> f() async {
-  //   late var v = 42;
-  //   return v;
-  // }
-  // ```
-  //
-  // If the initializer can't be rewritten, then remove the `late` modifier:
-  //
-  // ```dart
-  // Future<int> f() async {
-  //   var v = await 42;
-  //   return v;
-  // }
-  // ```
-  static const CompileTimeErrorCode AWAIT_IN_LATE_LOCAL_VARIABLE_INITIALIZER =
-      CompileTimeErrorCode(
-          'AWAIT_IN_LATE_LOCAL_VARIABLE_INITIALIZER',
-          "The 'await' expression can't be used in a 'late' local variable's "
-              "initializer.",
-          correction:
-              "Try removing the 'late' modifier, or rewriting the initializer "
-              "without using the 'await' expression.",
-          hasPublishedDocs: true);
-
-  /**
-   * 16.30 Await Expressions: It is a compile-time error if the function
-   * immediately enclosing _a_ is not declared asynchronous. (Where _a_ is the
-   * await expression.)
-   */
-  static const CompileTimeErrorCode AWAIT_IN_WRONG_CONTEXT =
-      CompileTimeErrorCode('AWAIT_IN_WRONG_CONTEXT',
-          "The await expression can only be used in an async function.",
-          correction:
-              "Try marking the function body with either 'async' or 'async*'.");
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a method or function has a
-  // return type that's [potentially non-nullable][] but would implicitly return
-  // `null` if control reached the end of the function.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the method `m` has an
-  // implicit return of `null` inserted at the end of the method, but the method
-  // is declared to not return `null`:
-  //
-  // ```dart
-  // class C {
-  //   int [!m!](int t) {
-  //     print(t);
-  //   }
-  // }
-  // ```
-  //
-  // The following code produces this diagnostic because the method `m` has an
-  // implicit return of `null` inserted at the end of the method, but because
-  // the class `C` can be instantiated with a non-nullable type argument, the
-  // method is effectively declared to not return `null`:
-  //
-  // ```dart
-  // class C<T> {
-  //   T [!m!](T t) {
-  //     print(t);
-  //   }
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If there's a reasonable value that can be returned, then add a `return`
-  // statement at the end of the method:
-  //
-  // ```dart
-  // class C<T> {
-  //   T m(T t) {
-  //     print(t);
-  //     return t;
-  //   }
-  // }
-  // ```
-  //
-  // If the method won't reach the implicit return, then add a `throw` at the
-  // end of the method:
-  //
-  // ```dart
-  // class C<T> {
-  //   T m(T t) {
-  //     print(t);
-  //     throw '';
-  //   }
-  // }
-  // ```
-  //
-  // If the method intentionally returns `null` at the end, then change the
-  // return type so that it's valid to return `null`:
-  //
-  // ```dart
-  // class C<T> {
-  //   T? m(T t) {
-  //     print(t);
-  //   }
-  // }
-  // ```
-  static const CompileTimeErrorCode BODY_MIGHT_COMPLETE_NORMALLY =
-      CompileTimeErrorCode(
-          'BODY_MIGHT_COMPLETE_NORMALLY',
-          "The body might complete normally, causing 'null' to be returned, "
-              "but the return type is a potentially non-nullable type.",
-          correction:
-              "Try adding either a return or a throw statement at the end.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a break in a case clause inside
-  // a switch statement has a label that is associated with another case clause.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the label `l` is
-  // associated with the case clause for `0`:
-  //
-  // ```dart
-  // void f(int i) {
-  //   switch (i) {
-  //     l: case 0:
-  //       break;
-  //     case 1:
-  //       break [!l!];
-  //   }
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the intent is to transfer control to the statement after the switch,
-  // then remove the label from the break statement:
-  //
-  // ```dart
-  // void f(int i) {
-  //   switch (i) {
-  //     case 0:
-  //       break;
-  //     case 1:
-  //       break;
-  //   }
-  // }
-  // ```
-  //
-  // If the intent is to transfer control to a different case block, then use
-  // `continue` rather than `break`:
-  //
-  // ```dart
-  // void f(int i) {
-  //   switch (i) {
-  //     l: case 0:
-  //       break;
-  //     case 1:
-  //       continue l;
-  //   }
-  // }
-  // ```
-  static const CompileTimeErrorCode BREAK_LABEL_ON_SWITCH_MEMBER =
-      CompileTimeErrorCode('BREAK_LABEL_ON_SWITCH_MEMBER',
-          "A break label resolves to the 'case' or 'default' statement.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the built-in identifier that is being used
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the name used in the declaration
-  // of a class, extension, mixin, typedef, type parameter, or import prefix is
-  // a built-in identifier. Built-in identifiers can’t be used to name any of
-  // these kinds of declarations.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because `mixin` is a built-in
-  // identifier:
-  //
-  // ```dart
-  // extension [!mixin!] on int {}
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Choose a different name for the declaration.
-  static const CompileTimeErrorCode BUILT_IN_IDENTIFIER_AS_EXTENSION_NAME =
-      CompileTimeErrorCode('BUILT_IN_IDENTIFIER_IN_DECLARATION',
-          "The built-in identifier '{0}' can't be used as an extension name.",
-          correction: "Try choosing a different name for the extension.",
-          hasPublishedDocs: true,
-          uniqueName: 'BUILT_IN_IDENTIFIER_AS_EXTENSION_NAME');
-
-  /**
-   * Parameters:
-   * 0: the built-in identifier that is being used
-   */
-  static const CompileTimeErrorCode BUILT_IN_IDENTIFIER_AS_PREFIX_NAME =
-      CompileTimeErrorCode('BUILT_IN_IDENTIFIER_IN_DECLARATION',
-          "The built-in identifier '{0}' can't be used as a prefix name.",
-          correction: "Try choosing a different name for the prefix.",
-          hasPublishedDocs: true,
-          uniqueName: 'BUILT_IN_IDENTIFIER_AS_PREFIX_NAME');
-
-  /**
-   * Parameters:
-   * 0: the built-in identifier that is being used
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a built-in identifier is used
-  // where a type name is expected.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `import` can't be used
-  // as a type because it's a built-in identifier:
-  //
-  // ```dart
-  // [!import!]<int> x;
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Replace the built-in identifier with the name of a valid type:
-  //
-  // ```dart
-  // List<int> x;
-  // ```
-  static const CompileTimeErrorCode BUILT_IN_IDENTIFIER_AS_TYPE =
-      CompileTimeErrorCode('BUILT_IN_IDENTIFIER_AS_TYPE',
-          "The built-in identifier '{0}' can't be used as a type.",
-          correction: "Try correcting the name to match an existing type.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the built-in identifier that is being used
-   */
-  static const CompileTimeErrorCode BUILT_IN_IDENTIFIER_AS_TYPE_NAME =
-      CompileTimeErrorCode('BUILT_IN_IDENTIFIER_IN_DECLARATION',
-          "The built-in identifier '{0}' can't be used as a type name.",
-          correction: "Try choosing a different name for the type.",
-          hasPublishedDocs: true,
-          uniqueName: 'BUILT_IN_IDENTIFIER_AS_TYPE_NAME');
-
-  /**
-   * Parameters:
-   * 0: the built-in identifier that is being used
-   */
-  static const CompileTimeErrorCode BUILT_IN_IDENTIFIER_AS_TYPE_PARAMETER_NAME =
-      CompileTimeErrorCode(
-          'BUILT_IN_IDENTIFIER_IN_DECLARATION',
-          "The built-in identifier '{0}' can't be used as a type parameter "
-              "name.",
-          correction: "Try choosing a different name for the type parameter.",
-          hasPublishedDocs: true,
-          uniqueName: 'BUILT_IN_IDENTIFIER_AS_TYPE_PARAMETER_NAME');
-
-  /**
-   * Parameters:
-   * 0: the built-in identifier that is being used
-   */
-  static const CompileTimeErrorCode BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME =
-      CompileTimeErrorCode('BUILT_IN_IDENTIFIER_IN_DECLARATION',
-          "The built-in identifier '{0}' can't be used as a typedef name.",
-          correction: "Try choosing a different name for the typedef.",
-          hasPublishedDocs: true,
-          uniqueName: 'BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME');
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the last statement in a `case`
-  // block isn't one of the required terminators: `break`, `continue`,
-  // `rethrow`, `return`, or `throw`.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because the `case` block ends
-  // with an assignment:
-  //
-  // ```dart
-  // %language=2.9
-  // void f(int x) {
-  //   switch (x) {
-  //     [!case!] 0:
-  //       x += 2;
-  //     default:
-  //       x += 1;
-  //   }
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Add one of the required terminators:
-  //
-  // ```dart
-  // %language=2.9
-  // void f(int x) {
-  //   switch (x) {
-  //     case 0:
-  //       x += 2;
-  //       break;
-  //     default:
-  //       x += 1;
-  //   }
-  // }
-  // ```
-  static const CompileTimeErrorCode CASE_BLOCK_NOT_TERMINATED =
-      CompileTimeErrorCode(
-          'CASE_BLOCK_NOT_TERMINATED',
-          "The last statement of the 'case' should be 'break', 'continue', "
-              "'rethrow', 'return', or 'throw'.",
-          correction: "Try adding one of the required statements.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the this of the switch case expression
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the type of the expression
-  // following the keyword `case` has an implementation of the `==` operator
-  // other than the one in `Object`.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the expression
-  // following the keyword `case` (`C(0)`) has the type `C`, and the class `C`
-  // overrides the `==` operator:
-  //
-  // ```dart
-  // class C {
-  //   final int value;
-  //
-  //   const C(this.value);
-  //
-  //   bool operator ==(Object other) {
-  //     return false;
-  //   }
-  // }
-  //
-  // void f(C c) {
-  //   switch (c) {
-  //     case [!C(0)!]:
-  //       break;
-  //   }
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If there isn't a strong reason not to do so, then rewrite the code to use
-  // an if-else structure:
-  //
-  // ```dart
-  // class C {
-  //   final int value;
-  //
-  //   const C(this.value);
-  //
-  //   bool operator ==(Object other) {
-  //     return false;
-  //   }
-  // }
-  //
-  // void f(C c) {
-  //   if (c == C(0)) {
-  //     // ...
-  //   }
-  // }
-  // ```
-  //
-  // If you can't rewrite the switch statement and the implementation of `==`
-  // isn't necessary, then remove it:
-  //
-  // ```dart
-  // class C {
-  //   final int value;
-  //
-  //   const C(this.value);
-  // }
-  //
-  // void f(C c) {
-  //   switch (c) {
-  //     case C(0):
-  //       break;
-  //   }
-  // }
-  // ```
-  //
-  // If you can't rewrite the switch statement and you can't remove the
-  // definition of `==`, then find some other value that can be used to control
-  // the switch:
-  //
-  // ```dart
-  // class C {
-  //   final int value;
-  //
-  //   const C(this.value);
-  //
-  //   bool operator ==(Object other) {
-  //     return false;
-  //   }
-  // }
-  //
-  // void f(C c) {
-  //   switch (c.value) {
-  //     case 0:
-  //       break;
-  //   }
-  // }
-  // ```
-  static const CompileTimeErrorCode CASE_EXPRESSION_TYPE_IMPLEMENTS_EQUALS =
-      CompileTimeErrorCode(
-          'CASE_EXPRESSION_TYPE_IMPLEMENTS_EQUALS',
-          "The switch case expression type '{0}' can't override the '==' "
-              "operator.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the type of the case expression
-   * 1: the type of the switch expression
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the expression following `case`
-  // in a `switch` statement has a static type that isn't a subtype of the
-  // static type of the expression following `switch`.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because `1` is an `int`, which
-  // isn't a subtype of `String` (the type of `s`):
-  //
-  // ```dart
-  // void f(String s) {
-  //   switch (s) {
-  //     case [!1!]:
-  //       break;
-  //   }
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the value of the `case` expression is wrong, then change the `case`
-  // expression so that it has the required type:
-  //
-  // ```dart
-  // void f(String s) {
-  //   switch (s) {
-  //     case '1':
-  //       break;
-  //   }
-  // }
-  // ```
-  //
-  // If the value of the `case` expression is correct, then change the `switch`
-  // expression to have the required type:
-  //
-  // ```dart
-  // void f(int s) {
-  //   switch (s) {
-  //     case 1:
-  //       break;
-  //   }
-  // }
-  // ```
-  static const CompileTimeErrorCode
-      CASE_EXPRESSION_TYPE_IS_NOT_SWITCH_EXPRESSION_SUBTYPE =
-      CompileTimeErrorCode(
-          'CASE_EXPRESSION_TYPE_IS_NOT_SWITCH_EXPRESSION_SUBTYPE',
-          "The switch case expression type '{0}' must be a subtype of the "
-              "switch expression type '{1}'.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the name following the `as` in a
-  // cast expression is defined to be something other than a type.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `x` is a variable, not
-  // a type:
-  //
-  // ```dart
-  // num x = 0;
-  // int y = x as [!x!];
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Replace the name with the name of a type:
-  //
-  // ```dart
-  // num x = 0;
-  // int y = x as int;
-  // ```
-  static const CompileTimeErrorCode CAST_TO_NON_TYPE = CompileTimeErrorCode(
-      'CAST_TO_NON_TYPE',
-      "The name '{0}' isn't a type, so it can't be used in an 'as' expression.",
-      correction: "Try changing the name to the name of an existing type, or "
-          "creating a type with the name '{0}'.",
-      hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the member
-   */
-  static const CompileTimeErrorCode
-      CLASS_INSTANTIATION_ACCESS_TO_INSTANCE_MEMBER = CompileTimeErrorCode(
-          'CLASS_INSTANTIATION_ACCESS_TO_MEMBER',
-          "The instance member '{0}' can't be accessed on a class "
-              "instantiation.",
-          correction:
-              "Try changing the member name to the name of a constructor.",
-          uniqueName: 'CLASS_INSTANTIATION_ACCESS_TO_INSTANCE_MEMBER');
-
-  /**
-   * Parameters:
-   * 0: the name of the member
-   */
-  static const CompileTimeErrorCode
-      CLASS_INSTANTIATION_ACCESS_TO_STATIC_MEMBER = CompileTimeErrorCode(
-          'CLASS_INSTANTIATION_ACCESS_TO_MEMBER',
-          "The static member '{0}' can't be accessed on a class instantiation.",
-          correction: "Try removing the type arguments from the class name, or "
-              "changing the member name to the name of a constructor.",
-          uniqueName: 'CLASS_INSTANTIATION_ACCESS_TO_STATIC_MEMBER');
-
-  /**
-   * Parameters:
-   * 0: the name of the member
-   */
-  static const CompileTimeErrorCode
-      CLASS_INSTANTIATION_ACCESS_TO_UNKNOWN_MEMBER = CompileTimeErrorCode(
-          'CLASS_INSTANTIATION_ACCESS_TO_MEMBER',
-          "The class '{0} doesn't have a constructor named '{1}.",
-          correction: "Try invoking a different constructor, or defining a "
-              "constructor named '{1}'.",
-          uniqueName: 'CLASS_INSTANTIATION_ACCESS_TO_UNKNOWN_MEMBER');
-
-  /**
-   * Parameters:
-   * 0: the name of the abstract method
-   * 1: the name of the enclosing class
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a member of a concrete class is
-  // found that doesn't have a concrete implementation. Concrete classes aren't
-  // allowed to contain abstract members.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `m` is an abstract
-  // method but `C` isn't an abstract class:
-  //
-  // ```dart
-  // class C {
-  //   [!void m();!]
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If it's valid to create instances of the class, provide an implementation
-  // for the member:
-  //
-  // ```dart
-  // class C {
-  //   void m() {}
-  // }
-  // ```
-  //
-  // If it isn't valid to create instances of the class, mark the class as being
-  // abstract:
-  //
-  // ```dart
-  // abstract class C {
-  //   void m();
-  // }
-  // ```
-  static const CompileTimeErrorCode CONCRETE_CLASS_WITH_ABSTRACT_MEMBER =
-      CompileTimeErrorCode('CONCRETE_CLASS_WITH_ABSTRACT_MEMBER',
-          "'{0}' must have a method body because '{1}' isn't abstract.",
-          correction: "Try making '{1}' abstract, or adding a body to '{0}'.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the constructor and field
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a named constructor and either a
-  // static method or static field have the same name. Both are accessed using
-  // the name of the class, so having the same name makes the reference
-  // ambiguous.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the static field `foo`
-  // and the named constructor `foo` have the same name:
-  //
-  // ```dart
-  // class C {
-  //   C.[!foo!]();
-  //   static int foo = 0;
-  // }
-  // ```
-  //
-  // The following code produces this diagnostic because the static method `foo`
-  // and the named constructor `foo` have the same name:
-  //
-  // ```dart
-  // class C {
-  //   C.[!foo!]();
-  //   static void foo() {}
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Rename either the member or the constructor.
-  static const CompileTimeErrorCode CONFLICTING_CONSTRUCTOR_AND_STATIC_FIELD =
-      CompileTimeErrorCode(
-          'CONFLICTING_CONSTRUCTOR_AND_STATIC_MEMBER',
-          "'{0}' can't be used to name both a constructor and a static field "
-              "in this class.",
-          correction: "Try renaming either the constructor or the field.",
-          hasPublishedDocs: true,
-          uniqueName: 'CONFLICTING_CONSTRUCTOR_AND_STATIC_FIELD');
-
-  /**
-   * Parameters:
-   * 0: the name of the constructor and getter
-   */
-  static const CompileTimeErrorCode CONFLICTING_CONSTRUCTOR_AND_STATIC_GETTER =
-      CompileTimeErrorCode(
-          'CONFLICTING_CONSTRUCTOR_AND_STATIC_MEMBER',
-          "'{0}' can't be used to name both a constructor and a static getter "
-              "in this class.",
-          correction: "Try renaming either the constructor or the getter.",
-          hasPublishedDocs: true,
-          uniqueName: 'CONFLICTING_CONSTRUCTOR_AND_STATIC_GETTER');
-
-  /**
-   * Parameters:
-   * 0: the name of the constructor
-   */
-  static const CompileTimeErrorCode CONFLICTING_CONSTRUCTOR_AND_STATIC_METHOD =
-      CompileTimeErrorCode(
-          'CONFLICTING_CONSTRUCTOR_AND_STATIC_MEMBER',
-          "'{0}' can't be used to name both a constructor and a static method "
-              "in this class.",
-          correction: "Try renaming either the constructor or the method.",
-          hasPublishedDocs: true,
-          uniqueName: 'CONFLICTING_CONSTRUCTOR_AND_STATIC_METHOD');
-
-  /**
-   * Parameters:
-   * 0: the name of the constructor and setter
-   */
-  static const CompileTimeErrorCode CONFLICTING_CONSTRUCTOR_AND_STATIC_SETTER =
-      CompileTimeErrorCode(
-          'CONFLICTING_CONSTRUCTOR_AND_STATIC_MEMBER',
-          "'{0}' can't be used to name both a constructor and a static setter "
-              "in this class.",
-          correction: "Try renaming either the constructor or the setter.",
-          hasPublishedDocs: true,
-          uniqueName: 'CONFLICTING_CONSTRUCTOR_AND_STATIC_SETTER');
-
-  /**
-   * 10.11 Class Member Conflicts: Let `C` be a class. It is a compile-time
-   * error if `C` declares a getter or a setter with basename `n`, and has a
-   * method named `n`.
-   *
-   * Parameters:
-   * 0: the name of the class defining the conflicting field
-   * 1: the name of the conflicting field
-   * 2: the name of the class defining the method with which the field conflicts
-   */
-  static const CompileTimeErrorCode CONFLICTING_FIELD_AND_METHOD =
-      CompileTimeErrorCode(
-          'CONFLICTING_FIELD_AND_METHOD',
-          "Class '{0}' can't define field '{1}' and have method '{2}.{1}' "
-              "with the same name.",
-          correction: "Try converting the getter to a method, or "
-              "renaming the field to a name that doesn't conflict.");
-
-  /**
-   * Parameters:
-   * 0: the name of the type parameter
-   * 1: detail text explaining why the type could not be inferred
-   */
-  static const CompileTimeErrorCode COULD_NOT_INFER = CompileTimeErrorCode(
-      'COULD_NOT_INFER', "Couldn't infer type parameter '{0}'.{1}");
-
-  /**
-   * Parameters:
-   * 0: the name of the class implementing the conflicting interface
-   * 1: the first conflicting type
-   * 2: the second conflicting type
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a class attempts to implement a
-  // generic interface multiple times, and the values of the type arguments
-  // aren't the same.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because `C` is defined to
-  // implement both `I<int>` (because it extends `A`) and `I<String>` (because
-  // it implements`B`), but `int` and `String` aren't the same type:
-  //
-  // ```dart
-  // class I<T> {}
-  // class A implements I<int> {}
-  // class B implements I<String> {}
-  // class [!C!] extends A implements B {}
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Rework the type hierarchy to avoid this situation. For example, you might
-  // make one or both of the inherited types generic so that `C` can specify the
-  // same type for both type arguments:
-  //
-  // ```dart
-  // class I<T> {}
-  // class A<S> implements I<S> {}
-  // class B implements I<String> {}
-  // class C extends A<String> implements B {}
-  // ```
-  static const CompileTimeErrorCode CONFLICTING_GENERIC_INTERFACES =
-      CompileTimeErrorCode(
-          'CONFLICTING_GENERIC_INTERFACES',
-          "The class '{0}' can't implement both '{1}' and '{2}' because the "
-              "type arguments are different.",
-          hasPublishedDocs: true);
-
-  /**
-   * 10.11 Class Member Conflicts: Let `C` be a class. It is a compile-time
-   * error if `C` declares a method named `n`, and has a getter or a setter
-   * with basename `n`.
-   *
-   * Parameters:
-   * 0: the name of the class defining the conflicting method
-   * 1: the name of the conflicting method
-   * 2: the name of the class defining the field with which the method conflicts
-   */
-  static const CompileTimeErrorCode CONFLICTING_METHOD_AND_FIELD =
-      CompileTimeErrorCode(
-          'CONFLICTING_METHOD_AND_FIELD',
-          "Class '{0}' can't define method '{1}' and have field '{2}.{1}' "
-              "with the same name.",
-          correction: "Try converting the method to a getter, or "
-              "renaming the method to a name that doesn't conflict.");
-
-  /**
-   * 10.11 Class Member Conflicts: Let `C` be a class. It is a compile-time
-   * error if `C` declares a static member with basename `n`, and has an
-   * instance member with basename `n`.
-   *
-   * Parameters:
-   * 0: the name of the class defining the conflicting member
-   * 1: the name of the conflicting static member
-   * 2: the name of the class defining the field with which the method conflicts
-   */
-  static const CompileTimeErrorCode CONFLICTING_STATIC_AND_INSTANCE =
-      CompileTimeErrorCode(
-          'CONFLICTING_STATIC_AND_INSTANCE',
-          "Class '{0}' can't define static member '{1}' and have instance "
-              "member '{2}.{1}' with the same name.",
-          correction:
-              "Try renaming the member to a name that doesn't conflict.");
-
-  /**
-   * Parameters:
-   * 0: the name of the type variable
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a class, mixin, or extension
-  // declaration declares a type parameter with the same name as the class,
-  // mixin, or extension that declares it.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the type parameter `C`
-  // has the same name as the class `C` of which it's a part:
-  //
-  // ```dart
-  // class C<[!C!]> {}
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Rename either the type parameter, or the class, mixin, or extension:
-  //
-  // ```dart
-  // class C<T> {}
-  // ```
-  static const CompileTimeErrorCode CONFLICTING_TYPE_VARIABLE_AND_CLASS =
-      CompileTimeErrorCode(
-    'CONFLICTING_TYPE_VARIABLE_AND_CONTAINER',
-    "'{0}' can't be used to name both a type variable and the class in "
-        "which the type variable is defined.",
-    correction: "Try renaming either the type variable or the class.",
-    hasPublishedDocs: true,
-    uniqueName: 'CONFLICTING_TYPE_VARIABLE_AND_CLASS',
-  );
-
-  /**
-   * Parameters:
-   * 0: the name of the type variable
-   */
-  static const CompileTimeErrorCode CONFLICTING_TYPE_VARIABLE_AND_EXTENSION =
-      CompileTimeErrorCode(
-    'CONFLICTING_TYPE_VARIABLE_AND_CONTAINER',
-    "'{0}' can't be used to name both a type variable and the extension "
-        "in which the type variable is defined.",
-    correction: "Try renaming either the type variable or the extension.",
-    hasPublishedDocs: true,
-    uniqueName: 'CONFLICTING_TYPE_VARIABLE_AND_EXTENSION',
-  );
-
-  /**
-   * Parameters:
-   * 0: the name of the type variable
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a class, mixin, or extension
-  // declaration declares a type parameter with the same name as one of the
-  // members of the class, mixin, or extension that declares it.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the type parameter `T`
-  // has the same name as the field `T`:
-  //
-  // ```dart
-  // class C<[!T!]> {
-  //   int T = 0;
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Rename either the type parameter or the member with which it conflicts:
-  //
-  // ```dart
-  // class C<T> {
-  //   int total = 0;
-  // }
-  // ```
-  static const CompileTimeErrorCode CONFLICTING_TYPE_VARIABLE_AND_MEMBER_CLASS =
-      CompileTimeErrorCode(
-    'CONFLICTING_TYPE_VARIABLE_AND_MEMBER',
-    "'{0}' can't be used to name both a type variable and a member in "
-        "this class.",
-    correction: "Try renaming either the type variable or the member.",
-    hasPublishedDocs: true,
-    uniqueName: 'CONFLICTING_TYPE_VARIABLE_AND_MEMBER_CLASS',
-  );
-
-  /**
-   * Parameters:
-   * 0: the name of the type variable
-   */
-  static const CompileTimeErrorCode CONFLICTING_TYPE_VARIABLE_AND_MEMBER_MIXIN =
-      CompileTimeErrorCode(
-    'CONFLICTING_TYPE_VARIABLE_AND_MEMBER',
-    "'{0}' can't be used to name both a type variable and a member in "
-        "this mixin.",
-    correction: "Try renaming either the type variable or the member.",
-    hasPublishedDocs: true,
-    uniqueName: 'CONFLICTING_TYPE_VARIABLE_AND_MEMBER_MIXIN',
-  );
-
-  /**
-   * Parameters:
-   * 0: the name of the type variable
-   */
-  static const CompileTimeErrorCode
-      CONFLICTING_TYPE_VARIABLE_AND_MEMBER_EXTENSION = CompileTimeErrorCode(
-    'CONFLICTING_TYPE_VARIABLE_AND_MEMBER',
-    "'{0}' can't be used to name both a type variable and a member in "
-        "this extension.",
-    correction: "Try renaming either the type variable or the member.",
-    hasPublishedDocs: true,
-    uniqueName: 'CONFLICTING_TYPE_VARIABLE_AND_MEMBER_EXTENSION',
-  );
-
-  /**
-   * Parameters:
-   * 0: the name of the type variable
-   */
-  static const CompileTimeErrorCode CONFLICTING_TYPE_VARIABLE_AND_MIXIN =
-      CompileTimeErrorCode(
-    'CONFLICTING_TYPE_VARIABLE_AND_CONTAINER',
-    "'{0}' can't be used to name both a type variable and the mixin in "
-        "which the type variable is defined.",
-    correction: "Try renaming either the type variable or the mixin.",
-    hasPublishedDocs: true,
-    uniqueName: 'CONFLICTING_TYPE_VARIABLE_AND_MIXIN',
-  );
-
-  /**
-   * 16.12.2 Const: It is a compile-time error if evaluation of a constant
-   * object results in an uncaught exception being thrown.
-   */
-  static const CompileTimeErrorCode CONST_CONSTRUCTOR_FIELD_TYPE_MISMATCH =
-      CompileTimeErrorCode(
-    'CONST_CONSTRUCTOR_FIELD_TYPE_MISMATCH',
-    "In a const constructor, a value of type '{0}' can't be assigned to the "
-        "field '{1}', which has type '{2}'.",
-    correction: "Try using a subtype, or removing the keyword 'const'.",
-  );
-
-  /**
-   * Parameters:
-   * 0: the type of the runtime value of the argument
-   * 1: the static type of the parameter
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the runtime type of a constant
-  // value can't be assigned to the static type of a constant constructor's
-  // parameter.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the runtime type of `i`
-  // is `int`, which can't be assigned to the static type of `s`:
-  //
-  // ```dart
-  // class C {
-  //   final String s;
-  //
-  //   const C(this.s);
-  // }
-  //
-  // const dynamic i = 0;
-  //
-  // void f() {
-  //   const C([!i!]);
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Pass a value of the correct type to the constructor:
-  //
-  // ```dart
-  // class C {
-  //   final String s;
-  //
-  //   const C(this.s);
-  // }
-  //
-  // const dynamic i = 0;
-  //
-  // void f() {
-  //   const C('$i');
-  // }
-  // ```
-  static const CompileTimeErrorCode CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH =
-      CompileTimeErrorCode(
-          'CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH',
-          "A value of type '{0}' can't be assigned to a parameter of type "
-              "'{1}' in a const constructor.",
-          correction: "Try using a subtype, or removing the keyword 'const'.",
-          hasPublishedDocs: true);
-
-  /**
-   * 16.12.2 Const: It is a compile-time error if evaluation of a constant
-   * object results in an uncaught exception being thrown.
-   */
-  static const CompileTimeErrorCode CONST_CONSTRUCTOR_THROWS_EXCEPTION =
-      CompileTimeErrorCode('CONST_CONSTRUCTOR_THROWS_EXCEPTION',
-          "Const constructors can't throw exceptions.",
-          correction: "Try removing the throw statement, or "
-              "removing the keyword 'const'.");
-
-  /**
-   * Parameters:
-   * 0: the name of the field
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a constructor has the keyword
-  // `const`, but a field in the class is initialized to a non-constant value.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the field `s` is
-  // initialized to a non-constant value:
-  //
-  // ```dart
-  // class C {
-  //   final String s = 3.toString();
-  //   [!const!] C();
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the field can be initialized to a constant value, then change the
-  // initializer to a constant expression:
-  //
-  // ```dart
-  // class C {
-  //   final String s = '3';
-  //   const C();
-  // }
-  // ```
-  //
-  // If the field can't be initialized to a constant value, then remove the
-  // keyword `const` from the constructor:
-  //
-  // ```dart
-  // class C {
-  //   final String s = 3.toString();
-  //   C();
-  // }
-  // ```
-  static const CompileTimeErrorCode
-      CONST_CONSTRUCTOR_WITH_FIELD_INITIALIZED_BY_NON_CONST =
-      CompileTimeErrorCode(
-          'CONST_CONSTRUCTOR_WITH_FIELD_INITIALIZED_BY_NON_CONST',
-          "Can't define the 'const' constructor because the field '{0}' is "
-              "initialized with a non-constant value.",
-          correction: "Try initializing the field to a constant value, or "
-              "removing the keyword 'const' from the constructor.",
-          hasPublishedDocs: true);
-
-  /**
-   * 7.6.3 Constant Constructors: The superinitializer that appears, explicitly
-   * or implicitly, in the initializer list of a constant constructor must
-   * specify a constant constructor of the superclass of the immediately
-   * enclosing class or a compile-time error occurs.
-   *
-   * 12.1 Mixin Application: For each generative constructor named ... an
-   * implicitly declared constructor named ... is declared. If Sq is a
-   * generative const constructor, and M does not declare any fields, Cq is
-   * also a const constructor.
-   *
-   * Parameters:
-   * 0: the name of the instance field.
-   */
-  static const CompileTimeErrorCode CONST_CONSTRUCTOR_WITH_MIXIN_WITH_FIELD =
-      CompileTimeErrorCode(
-    'CONST_CONSTRUCTOR_WITH_MIXIN_WITH_FIELD',
-    "This constructor can't be declared 'const' because a mixin adds the "
-        "instance field: {0}.",
-    correction: "Try removing the 'const' keyword or removing the 'with' "
-        "clause from the class declaration, or removing the field from "
-        "the mixin class.",
-    uniqueName: 'CONST_CONSTRUCTOR_WITH_MIXIN_WITH_FIELD',
-  );
-
-  /**
-   * 7.6.3 Constant Constructors: The superinitializer that appears, explicitly
-   * or implicitly, in the initializer list of a constant constructor must
-   * specify a constant constructor of the superclass of the immediately
-   * enclosing class or a compile-time error occurs.
-   *
-   * 12.1 Mixin Application: For each generative constructor named ... an
-   * implicitly declared constructor named ... is declared. If Sq is a
-   * generative const constructor, and M does not declare any fields, Cq is
-   * also a const constructor.
-   *
-   * Parameters:
-   * 0: the names of the instance fields.
-   */
-  static const CompileTimeErrorCode CONST_CONSTRUCTOR_WITH_MIXIN_WITH_FIELDS =
-      CompileTimeErrorCode(
-    'CONST_CONSTRUCTOR_WITH_MIXIN_WITH_FIELD',
-    "This constructor can't be declared 'const' because the mixins add "
-        "the instance fields: {0}.",
-    correction: "Try removing the 'const' keyword or removing the 'with' "
-        "clause from the class declaration, or removing the fields from "
-        "the mixin classes.",
-    uniqueName: 'CONST_CONSTRUCTOR_WITH_MIXIN_WITH_FIELDS',
-  );
-
-  /**
-   * Parameters:
-   * 0: the name of the superclass
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a constructor that is marked as
-  // `const` invokes a constructor from its superclass that isn't marked as
-  // `const`.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the `const` constructor
-  // in `B` invokes the constructor `nonConst` from the class `A`, and the
-  // superclass constructor isn't a `const` constructor:
-  //
-  // ```dart
-  // class A {
-  //   const A();
-  //   A.nonConst();
-  // }
-  //
-  // class B extends A {
-  //   const B() : [!super.nonConst()!];
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If it isn't essential to invoke the superclass constructor that is
-  // currently being invoked, then invoke a constant constructor from the
-  // superclass:
-  //
-  // ```dart
-  // class A {
-  //   const A();
-  //   A.nonConst();
-  // }
-  //
-  // class B extends A {
-  //   const B() : super();
-  // }
-  // ```
-  //
-  // If it's essential that the current constructor be invoked and if you can
-  // modify it, then add `const` to the constructor in the superclass:
-  //
-  // ```dart
-  // class A {
-  //   const A();
-  //   const A.nonConst();
-  // }
-  //
-  // class B extends A {
-  //   const B() : super.nonConst();
-  // }
-  // ```
-  //
-  // If it's essential that the current constructor be invoked and you can't
-  // modify it, then remove `const` from the constructor in the subclass:
-  //
-  // ```dart
-  // class A {
-  //   const A();
-  //   A.nonConst();
-  // }
-  //
-  // class B extends A {
-  //   B() : super.nonConst();
-  // }
-  // ```
-  static const CompileTimeErrorCode CONST_CONSTRUCTOR_WITH_NON_CONST_SUPER =
-      CompileTimeErrorCode(
-          'CONST_CONSTRUCTOR_WITH_NON_CONST_SUPER',
-          "A constant constructor can't call a non-constant super constructor "
-              "of '{0}'.",
-          correction: "Try calling a constant constructor in the superclass, "
-              "or removing the keyword 'const' from the constructor.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a constructor is marked as a
-  // const constructor, but the constructor is defined in a class that has at
-  // least one non-final instance field (either directly or by inheritance).
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because the field `x` isn't
-  // final:
-  //
-  // ```dart
-  // class C {
-  //   int x;
-  //
-  //   const [!C!](this.x);
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If it's possible to mark all of the fields as final, then do so:
-  //
-  // ```dart
-  // class C {
-  //   final int x;
-  //
-  //   const C(this.x);
-  // }
-  // ```
-  //
-  // If it isn't possible to mark all of the fields as final, then remove the
-  // keyword `const` from the constructor:
-  //
-  // ```dart
-  // class C {
-  //   int x;
-  //
-  //   C(this.x);
-  // }
-  // ```
-  static const CompileTimeErrorCode CONST_CONSTRUCTOR_WITH_NON_FINAL_FIELD =
-      CompileTimeErrorCode('CONST_CONSTRUCTOR_WITH_NON_FINAL_FIELD',
-          "Can't define a const constructor for a class with non-final fields.",
-          correction: "Try making all of the fields final, or "
-              "removing the keyword 'const' from the constructor.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a class from a library that is
-  // imported using a deferred import is used to create a `const` object.
-  // Constants are evaluated at compile time, and classes from deferred
-  // libraries aren't available at compile time.
-  //
-  // For more information, see the language tour's coverage of
-  // [deferred loading](https://dart.dev/guides/language/language-tour#lazily-loading-a-library).
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because it attempts to create a
-  // `const` instance of a class from a deferred library:
-  //
-  // ```dart
-  // import 'dart:convert' deferred as convert;
-  //
-  // const json2 = [!convert.JsonCodec()!];
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the object isn't required to be a constant, then change the code so that
-  // a non-constant instance is created:
-  //
-  // ```dart
-  // import 'dart:convert' deferred as convert;
-  //
-  // final json2 = convert.JsonCodec();
-  // ```
-  //
-  // If the object must be a constant, then remove `deferred` from the import
-  // directive:
-  //
-  // ```dart
-  // import 'dart:convert' as convert;
-  //
-  // const json2 = convert.JsonCodec();
-  // ```
-  static const CompileTimeErrorCode CONST_DEFERRED_CLASS = CompileTimeErrorCode(
-      'CONST_DEFERRED_CLASS', "Deferred classes can't be created with 'const'.",
-      correction: "Try using 'new' to create the instance, or "
-          "changing the import to not be deferred.",
-      hasPublishedDocs: true);
-
-  /**
-   * 16.12.2 Const: It is a compile-time error if evaluation of a constant
-   * object results in an uncaught exception being thrown.
-   */
-  static const CompileTimeErrorCode CONST_EVAL_THROWS_EXCEPTION =
-      CompileTimeErrorCode('CONST_EVAL_THROWS_EXCEPTION',
-          "Evaluation of this constant expression throws an exception.");
-
-  /**
-   * 16.12.2 Const: It is a compile-time error if evaluation of a constant
-   * object results in an uncaught exception being thrown.
-   */
-  static const CompileTimeErrorCode CONST_EVAL_THROWS_IDBZE =
-      CompileTimeErrorCode(
-          'CONST_EVAL_THROWS_IDBZE',
-          "Evaluation of this constant expression throws an "
-              "IntegerDivisionByZeroException.");
-
-  /**
-   * 16.12.2 Const: An expression of one of the forms !e, e1 && e2 or e1 || e2,
-   * where e, e1 and e2 are constant expressions that evaluate to a boolean
-   * value.
-   */
-  static const CompileTimeErrorCode CONST_EVAL_TYPE_BOOL = CompileTimeErrorCode(
-      'CONST_EVAL_TYPE_BOOL',
-      "In constant expressions, operands of this operator must be of type "
-          "'bool'.");
-
-  /**
-   * 16.12.2 Const: An expression of one of the forms !e, e1 && e2 or e1 || e2,
-   * where e, e1 and e2 are constant expressions that evaluate to a boolean
-   * value.
-   */
-  static const CompileTimeErrorCode CONST_EVAL_TYPE_BOOL_INT =
-      CompileTimeErrorCode(
-          'CONST_EVAL_TYPE_BOOL_INT',
-          "In constant expressions, operands of this operator must be of type "
-              "'bool' or 'int'.");
-
-  /**
-   * 16.12.2 Const: An expression of one of the forms e1 == e2 or e1 != e2 where
-   * e1 and e2 are constant expressions that evaluate to a numeric, string or
-   * boolean value or to null.
-   */
-  static const CompileTimeErrorCode CONST_EVAL_TYPE_BOOL_NUM_STRING =
-      CompileTimeErrorCode(
-          'CONST_EVAL_TYPE_BOOL_NUM_STRING',
-          "In constant expressions, operands of this operator must be of type "
-              "'bool', 'num', 'String' or 'null'.");
-
-  /**
-   * 16.12.2 Const: An expression of one of the forms ~e, e1 ^ e2, e1 & e2,
-   * e1 | e2, e1 >> e2 or e1 << e2, where e, e1 and e2 are constant expressions
-   * that evaluate to an integer value or to null.
-   */
-  static const CompileTimeErrorCode CONST_EVAL_TYPE_INT = CompileTimeErrorCode(
-      'CONST_EVAL_TYPE_INT',
-      "In constant expressions, operands of this operator must be of type "
-          "'int'.");
-
-  /**
-   * 16.12.2 Const: An expression of one of the forms e, e1 + e2, e1 - e2, e1 *
-   * e2, e1 / e2, e1 ~/ e2, e1 > e2, e1 < e2, e1 >= e2, e1 <= e2 or e1 % e2,
-   * where e, e1 and e2 are constant expressions that evaluate to a numeric
-   * value or to null.
-   */
-  static const CompileTimeErrorCode CONST_EVAL_TYPE_NUM = CompileTimeErrorCode(
-      'CONST_EVAL_TYPE_NUM',
-      "In constant expressions, operands of this operator must be of type "
-          "'num'.");
-
-  static const CompileTimeErrorCode CONST_EVAL_TYPE_TYPE = CompileTimeErrorCode(
-      'CONST_EVAL_TYPE_TYPE',
-      "In constant expressions, operands of this operator must be of type "
-          "'Type'.");
-
-  /**
-   * Parameters:
-   * 0: the name of the type of the initializer expression
-   * 1: the name of the type of the field
-   */
-  static const CompileTimeErrorCode CONST_FIELD_INITIALIZER_NOT_ASSIGNABLE =
-      CompileTimeErrorCode(
-    'FIELD_INITIALIZER_NOT_ASSIGNABLE',
-    "The initializer type '{0}' can't be assigned to the field type "
-        "'{1}' in a const constructor.",
-    correction: "Try using a subtype, or removing the 'const' keyword",
-    hasPublishedDocs: true,
-    uniqueName: 'CONST_FIELD_INITIALIZER_NOT_ASSIGNABLE',
-  );
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a value that isn't statically
-  // known to be a constant is assigned to a variable that's declared to be a
-  // `const` variable.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `x` isn't declared to
-  // be `const`:
-  //
-  // ```dart
-  // var x = 0;
-  // const y = [!x!];
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the value being assigned can be declared to be `const`, then change the
-  // declaration:
-  //
-  // ```dart
-  // const x = 0;
-  // const y = x;
-  // ```
-  //
-  // If the value can't be declared to be `const`, then remove the `const`
-  // modifier from the variable, possibly using `final` in its place:
-  //
-  // ```dart
-  // var x = 0;
-  // final y = x;
-  // ```
-  static const CompileTimeErrorCode CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE =
-      CompileTimeErrorCode('CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE',
-          "Const variables must be initialized with a constant value.",
-          correction:
-              "Try changing the initializer to be a constant expression.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a `const` variable is
-  // initialized using a `const` variable from a library that is imported using
-  // a deferred import. Constants are evaluated at compile time, and values from
-  // deferred libraries aren't available at compile time.
-  //
-  // For more information, see the language tour's coverage of
-  // [deferred loading](https://dart.dev/guides/language/language-tour#lazily-loading-a-library).
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the variable `pi` is
-  // being initialized using the constant `math.pi` from the library
-  // `dart:math`, and `dart:math` is imported as a deferred library:
-  //
-  // ```dart
-  // import 'dart:math' deferred as math;
-  //
-  // const pi = [!math.pi!];
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you need to reference the value of the constant from the imported
-  // library, then remove the keyword `deferred`:
-  //
-  // ```dart
-  // import 'dart:math' as math;
-  //
-  // const pi = math.pi;
-  // ```
-  //
-  // If you don't need to reference the imported constant, then remove the
-  // reference:
-  //
-  // ```dart
-  // const pi = 3.14;
-  // ```
-  static const CompileTimeErrorCode
-      CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE_FROM_DEFERRED_LIBRARY =
-      CompileTimeErrorCode(
-          'CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE_FROM_DEFERRED_LIBRARY',
-          "Constant values from a deferred library can't be used to initialize "
-              "a 'const' variable.",
-          correction:
-              "Try initializing the variable without referencing members of "
-              "the deferred library, or changing the import to not be "
-              "deferred.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an instance field is marked as
-  // being const.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `f` is an instance
-  // field:
-  //
-  // ```dart
-  // class C {
-  //   [!const!] int f = 3;
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the field needs to be an instance field, then remove the keyword
-  // `const`, or replace it with `final`:
-  //
-  // ```dart
-  // class C {
-  //   final int f = 3;
-  // }
-  // ```
-  //
-  // If the field really should be a const field, then make it a static field:
-  //
-  // ```dart
-  // class C {
-  //   static const int f = 3;
-  // }
-  // ```
-  static const CompileTimeErrorCode CONST_INSTANCE_FIELD = CompileTimeErrorCode(
-      'CONST_INSTANCE_FIELD', "Only static fields can be declared as const.",
-      correction: "Try declaring the field as final, or adding the keyword "
-          "'static'.",
-      hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the type of the entry's key
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the class of object used as a
-  // key in a constant map literal implements the `==` operator. The
-  // implementation of constant maps uses the `==` operator, so any
-  // implementation other than the one inherited from `Object` requires
-  // executing arbitrary code at compile time, which isn't supported.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the constant map
-  // contains a key whose type is `C`, and the class `C` overrides the
-  // implementation of `==`:
-  //
-  // ```dart
-  // class C {
-  //   const C();
-  //
-  //   bool operator ==(Object other) => true;
-  // }
-  //
-  // const map = {[!C()!] : 0};
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you can remove the implementation of `==` from the class, then do so:
-  //
-  // ```dart
-  // class C {
-  //   const C();
-  // }
-  //
-  // const map = {C() : 0};
-  // ```
-  //
-  // If you can't remove the implementation of `==` from the class, then make
-  // the map be non-constant:
-  //
-  // ```dart
-  // class C {
-  //   const C();
-  //
-  //   bool operator ==(Object other) => true;
-  // }
-  //
-  // final map = {C() : 0};
-  // ```
-  static const CompileTimeErrorCode
-      CONST_MAP_KEY_EXPRESSION_TYPE_IMPLEMENTS_EQUALS = CompileTimeErrorCode(
-          'CONST_MAP_KEY_EXPRESSION_TYPE_IMPLEMENTS_EQUALS',
-          "The type of a key in a constant map can't override the '==' "
-              "operator, but the class '{0}' does.",
-          correction: "Try using a different value for the key, or "
-              "removing the keyword 'const' from the map.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the uninitialized final variable
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a variable that is declared to
-  // be a constant doesn't have an initializer.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `c` isn't initialized:
-  //
-  // ```dart
-  // const [!c!];
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Add an initializer:
-  //
-  // ```dart
-  // const c = 'c';
-  // ```
-  static const CompileTimeErrorCode CONST_NOT_INITIALIZED =
-      CompileTimeErrorCode(
-          'CONST_NOT_INITIALIZED', "The constant '{0}' must be initialized.",
-          correction: "Try adding an initialization to the declaration.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the type of the element
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the class of object used as an
-  // element in a constant set literal implements the `==` operator. The
-  // implementation of constant sets uses the `==` operator, so any
-  // implementation other than the one inherited from `Object` requires
-  // executing arbitrary code at compile time, which isn't supported.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the constant set
-  // contains an element whose type is `C`, and the class `C` overrides the
-  // implementation of `==`:
-  //
-  // ```dart
-  // class C {
-  //   const C();
-  //
-  //   bool operator ==(Object other) => true;
-  // }
-  //
-  // const set = {[!C()!]};
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you can remove the implementation of `==` from the class, then do so:
-  //
-  // ```dart
-  // class C {
-  //   const C();
-  // }
-  //
-  // const set = {C()};
-  // ```
-  //
-  // If you can't remove the implementation of `==` from the class, then make
-  // the set be non-constant:
-  //
-  // ```dart
-  // class C {
-  //   const C();
-  //
-  //   bool operator ==(Object other) => true;
-  // }
-  //
-  // final set = {C()};
-  // ```
-  static const CompileTimeErrorCode CONST_SET_ELEMENT_TYPE_IMPLEMENTS_EQUALS =
-      CompileTimeErrorCode(
-          'CONST_SET_ELEMENT_TYPE_IMPLEMENTS_EQUALS',
-          "The type of an element in a constant set can't override the '==' "
-              "operator, but the type '{0}' does.",
-          correction: "Try using a different value for the element, or "
-              "removing the keyword 'const' from the set.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the expression of a spread
-  // operator in a constant list or set evaluates to something other than a list
-  // or a set.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because the value of `list1` is
-  // `null`, which is neither a list nor a set:
-  //
-  // ```dart
-  // %language=2.9
-  // const List<int> list1 = null;
-  // const List<int> list2 = [...[!list1!]];
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Change the expression to something that evaluates to either a constant list
-  // or a constant set:
-  //
-  // ```dart
-  // %language=2.9
-  // const List<int> list1 = [];
-  // const List<int> list2 = [...list1];
-  // ```
-  static const CompileTimeErrorCode CONST_SPREAD_EXPECTED_LIST_OR_SET =
-      CompileTimeErrorCode('CONST_SPREAD_EXPECTED_LIST_OR_SET',
-          "A list or a set is expected in this spread.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the expression of a spread
-  // operator in a constant map evaluates to something other than a map.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because the value of `map1` is
-  // `null`, which isn't a map:
-  //
-  // ```dart
-  // %language=2.9
-  // const Map<String, int> map1 = null;
-  // const Map<String, int> map2 = {...[!map1!]};
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Change the expression to something that evaluates to a constant map:
-  //
-  // ```dart
-  // %language=2.9
-  // const Map<String, int> map1 = {};
-  // const Map<String, int> map2 = {...map1};
-  // ```
-  static const CompileTimeErrorCode CONST_SPREAD_EXPECTED_MAP =
-      CompileTimeErrorCode(
-          'CONST_SPREAD_EXPECTED_MAP', "A map is expected in this spread.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the keyword `const` is used to
-  // invoke a constructor that isn't marked with `const`.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because the constructor in `A`
-  // isn't a const constructor:
-  //
-  // ```dart
-  // class A {
-  //   A();
-  // }
-  //
-  // A f() => [!const!] A();
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If it's desirable and possible to make the class a constant class (by
-  // making all of the fields of the class, including inherited fields, final),
-  // then add the keyword `const` to the constructor:
-  //
-  // ```dart
-  // class A {
-  //   const A();
-  // }
-  //
-  // A f() => const A();
-  // ```
-  //
-  // Otherwise, remove the keyword `const`:
-  //
-  // ```dart
-  // class A {
-  //   A();
-  // }
-  //
-  // A f() => A();
-  // ```
-  static const CompileTimeErrorCode CONST_WITH_NON_CONST = CompileTimeErrorCode(
-      'CONST_WITH_NON_CONST',
-      "The constructor being called isn't a const constructor.",
-      correction: "Try removing 'const' from the constructor invocation.",
-      hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a const constructor is invoked
-  // with an argument that isn't a constant expression.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `i` isn't a constant:
-  //
-  // ```dart
-  // class C {
-  //   final int i;
-  //   const C(this.i);
-  // }
-  // C f(int i) => const C([!i!]);
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Either make all of the arguments constant expressions, or remove the
-  // `const` keyword to use the non-constant form of the constructor:
-  //
-  // ```dart
-  // class C {
-  //   final int i;
-  //   const C(this.i);
-  // }
-  // C f(int i) => C(i);
-  // ```
-  static const CompileTimeErrorCode CONST_WITH_NON_CONSTANT_ARGUMENT =
-      CompileTimeErrorCode('CONST_WITH_NON_CONSTANT_ARGUMENT',
-          "Arguments of a constant creation must be constant expressions.",
-          correction: "Try making the argument a valid constant, or "
-              "use 'new' to call the constructor.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the non-type element
-   */
-  static const CompileTimeErrorCode CONST_WITH_NON_TYPE = CompileTimeErrorCode(
-    'CREATION_WITH_NON_TYPE',
-    "The name '{0}' isn't a class.",
-    correction: "Try correcting the name to match an existing class.",
-    hasPublishedDocs: true,
-    isUnresolvedIdentifier: true,
-    uniqueName: 'CONST_WITH_NON_TYPE',
-  );
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a type parameter is used as a
-  // type argument in a `const` invocation of a constructor. This isn't allowed
-  // because the value of the type parameter (the actual type that will be used
-  // at runtime) can't be known at compile time.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the type parameter `T`
-  // is being used as a type argument when creating a constant:
-  //
-  // ```dart
-  // class C<T> {
-  //   const C();
-  // }
-  //
-  // C<T> newC<T>() => const C<[!T!]>();
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the type that will be used for the type parameter can be known at
-  // compile time, then remove the use of the type parameter:
-  //
-  // ```dart
-  // class C<T> {
-  //   const C();
-  // }
-  //
-  // C<int> newC() => const C<int>();
-  // ```
-  //
-  // If the type that will be used for the type parameter can't be known until
-  // runtime, then remove the keyword `const`:
-  //
-  // ```dart
-  // class C<T> {
-  //   const C();
-  // }
-  //
-  // C<T> newC<T>() => C<T>();
-  // ```
-  static const CompileTimeErrorCode CONST_WITH_TYPE_PARAMETERS =
-      CompileTimeErrorCode('CONST_WITH_TYPE_PARAMETERS',
-          "A constant creation can't use a type parameter as a type argument.",
-          correction: "Try replacing the type parameter with a different type.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  static const CompileTimeErrorCode
-      CONST_WITH_TYPE_PARAMETERS_CONSTRUCTOR_TEAROFF = CompileTimeErrorCode(
-          'CONST_WITH_TYPE_PARAMETERS',
-          "A constant constructor tearoff can't use a type parameter as a type "
-              "argument.",
-          correction: "Try replacing the type parameter with a different type.",
-          uniqueName: 'CONST_WITH_TYPE_PARAMETERS_CONSTRUCTOR_TEAROFF',
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  static const CompileTimeErrorCode
-      CONST_WITH_TYPE_PARAMETERS_FUNCTION_TEAROFF = CompileTimeErrorCode(
-          'CONST_WITH_TYPE_PARAMETERS',
-          "A constant function tearoff can't use a type parameter as a type "
-              "argument.",
-          correction: "Try replacing the type parameter with a different type.",
-          uniqueName: 'CONST_WITH_TYPE_PARAMETERS_FUNCTION_TEAROFF',
-          hasPublishedDocs: true);
-
-  /**
-   * 16.12.2 Const: It is a compile-time error if <i>T.id</i> is not the name of
-   * a constant constructor declared by the type <i>T</i>.
-   *
-   * Parameters:
-   * 0: the name of the type
-   * 1: the name of the requested constant constructor
-   */
-  static const CompileTimeErrorCode CONST_WITH_UNDEFINED_CONSTRUCTOR =
-      CompileTimeErrorCode('CONST_WITH_UNDEFINED_CONSTRUCTOR',
-          "The class '{0}' doesn't have a constant constructor '{1}'.",
-          correction: "Try calling a different constructor.");
-
-  /**
-   * 16.12.2 Const: It is a compile-time error if <i>T.id</i> is not the name of
-   * a constant constructor declared by the type <i>T</i>.
-   *
-   * Parameters:
-   * 0: the name of the type
-   */
-  static const CompileTimeErrorCode CONST_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT =
-      CompileTimeErrorCode('CONST_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT',
-          "The class '{0}' doesn't have an unnamed constant constructor.",
-          correction: "Try calling a different constructor.");
-
-  static const CompileTimeErrorCode CONTINUE_LABEL_ON_SWITCH =
-      CompileTimeErrorCode('CONTINUE_LABEL_ON_SWITCH',
-          "A continue label resolves to switch, must be loop or switch member");
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when it finds a use of the default
-  // constructor for the class `List` in code that has opted in to null safety.
-  //
-  // #### Example
-  //
-  // Assuming the following code is opted in to null safety, it produces this
-  // diagnostic because it uses the default `List` constructor:
-  //
-  // ```dart
-  // var l = [!List<int>!]();
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If no initial size is provided, then convert the code to use a list
-  // literal:
-  //
-  // ```dart
-  // var l = <int>[];
-  // ```
-  //
-  // If an initial size needs to be provided and there is a single reasonable
-  // initial value for the elements, then use `List.filled`:
-  //
-  // ```dart
-  // var l = List.filled(3, 0);
-  // ```
-  //
-  // If an initial size needs to be provided but each element needs to be
-  // computed, then use `List.generate`:
-  //
-  // ```dart
-  // var l = List.generate(3, (i) => i);
-  // ```
-  static const CompileTimeErrorCode DEFAULT_LIST_CONSTRUCTOR =
-      CompileTimeErrorCode(
-          'DEFAULT_LIST_CONSTRUCTOR',
-          "The default 'List' constructor isn't available when null safety is "
-              "enabled.",
-          correction: "Try using a list literal, 'List.filled' or "
-              "'List.generate'.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a factory constructor that
-  // redirects to another constructor specifies a default value for an optional
-  // parameter.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the factory constructor
-  // in `A` has a default value for the optional parameter `x`:
-  //
-  // ```dart
-  // class A {
-  //   factory A([int [!x!] = 0]) = B;
-  // }
-  //
-  // class B implements A {
-  //   B([int x = 1]) {}
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Remove the default value from the factory constructor:
-  //
-  // ```dart
-  // class A {
-  //   factory A([int x]) = B;
-  // }
-  //
-  // class B implements A {
-  //   B([int x = 1]) {}
-  // }
-  // ```
-  //
-  // Note that this fix might change the value used when the optional parameter
-  // is omitted. If that happens, and if that change is a problem, then consider
-  // making the optional parameter a required parameter in the factory method:
-  //
-  // ```dart
-  // class A {
-  //  factory A(int x) = B;
-  // }
-  //
-  // class B implements A {
-  //   B([int x = 1]) {}
-  // }
-  // ```
-  static const CompileTimeErrorCode
-      DEFAULT_VALUE_IN_REDIRECTING_FACTORY_CONSTRUCTOR = CompileTimeErrorCode(
-          'DEFAULT_VALUE_IN_REDIRECTING_FACTORY_CONSTRUCTOR',
-          "Default values aren't allowed in factory constructors that redirect "
-              "to another constructor.",
-          correction: "Try removing the default value.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a named parameter has both the
-  // `required` modifier and a default value. If the parameter is required, then
-  // a value for the parameter is always provided at the call sites, so the
-  // default value can never be used.
-  //
-  // #### Examples
-  //
-  // The following code generates this diagnostic:
-  //
-  // ```dart
-  // void log({required String [!message!] = 'no message'}) {}
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the parameter is really required, then remove the default value:
-  //
-  // ```dart
-  // void log({required String message}) {}
-  // ```
-  //
-  // If the parameter isn't always required, then remove the `required`
-  // modifier:
-  //
-  // ```dart
-  // void log({String message = 'no message'}) {}
-  // ```
-  static const CompileTimeErrorCode DEFAULT_VALUE_ON_REQUIRED_PARAMETER =
-      CompileTimeErrorCode('DEFAULT_VALUE_ON_REQUIRED_PARAMETER',
-          "Required named parameters can't have a default value.",
-          correction: "Try removing either the default value or the 'required' "
-              "modifier.");
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a library that is imported using
-  // a deferred import declares an extension that is visible in the importing
-  // library. Extension methods are resolved at compile time, and extensions
-  // from deferred libraries aren't available at compile time.
-  //
-  // For more information, see the language tour's coverage of
-  // [deferred loading](https://dart.dev/guides/language/language-tour#lazily-loading-a-library).
-  //
-  // #### Example
-  //
-  // Given a file (`a.dart`) that defines a named extension:
-  //
-  // ```dart
-  // %uri="lib/a.dart"
-  // class C {}
-  //
-  // extension E on String {
-  //   int get size => length;
-  // }
-  // ```
-  //
-  // The following code produces this diagnostic because the named extension is
-  // visible to the library:
-  //
-  // ```dart
-  // import [!'a.dart'!] deferred as a;
-  //
-  // void f() {
-  //   a.C();
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the library must be imported as `deferred`, then either add a `show`
-  // clause listing the names being referenced or add a `hide` clause listing
-  // all of the named extensions. Adding a `show` clause would look like this:
-  //
-  // ```dart
-  // import 'a.dart' deferred as a show C;
-  //
-  // void f() {
-  //   a.C();
-  // }
-  // ```
-  //
-  // Adding a `hide` clause would look like this:
-  //
-  // ```dart
-  // import 'a.dart' deferred as a hide E;
-  //
-  // void f() {
-  //   a.C();
-  // }
-  // ```
-  //
-  // With the first fix, the benefit is that if new extensions are added to the
-  // imported library, then the extensions won't cause a diagnostic to be
-  // generated.
-  //
-  // If the library doesn't need to be imported as `deferred`, or if you need to
-  // make use of the extension method declared in it, then remove the keyword
-  // `deferred`:
-  //
-  // ```dart
-  // import 'a.dart' as a;
-  //
-  // void f() {
-  //   a.C();
-  // }
-  // ```
-  static const CompileTimeErrorCode DEFERRED_IMPORT_OF_EXTENSION =
-      CompileTimeErrorCode('DEFERRED_IMPORT_OF_EXTENSION',
-          "Imports of deferred libraries must hide all extensions.",
-          correction:
-              "Try adding either a show combinator listing the names you need "
-              "to reference or a hide combinator listing all of the "
-              "extensions.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the variable that is invalid
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when [definite assignment][] analysis
-  // shows that a local variable that's marked as `late` is read before being
-  // assigned.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because `x` wasn't assigned a
-  // value before being read:
-  //
-  // ```dart
-  // void f(bool b) {
-  //   late int x;
-  //   print([!x!]);
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Assign a value to the variable before reading from it:
-  //
-  // ```dart
-  // void f(bool b) {
-  //   late int x;
-  //   x = b ? 1 : 0;
-  //   print(x);
-  // }
-  // ```
-  static const CompileTimeErrorCode DEFINITELY_UNASSIGNED_LATE_LOCAL_VARIABLE =
-      CompileTimeErrorCode(
-          'DEFINITELY_UNASSIGNED_LATE_LOCAL_VARIABLE',
-          "The late local variable '{0}' is definitely unassigned at this "
-              "point.",
-          correction:
-              "Ensure that it is assigned on necessary execution paths.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a class declares more than one
-  // unnamed constructor or when it declares more than one constructor with the
-  // same name.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because there are two
-  // declarations for the unnamed constructor:
-  //
-  // ```dart
-  // class C {
-  //   C();
-  //
-  //   [!C!]();
-  // }
-  // ```
-  //
-  // The following code produces this diagnostic because there are two
-  // declarations for the constructor named `m`:
-  //
-  // ```dart
-  // class C {
-  //   C.m();
-  //
-  //   [!C.m!]();
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If there are multiple unnamed constructors and all of the constructors are
-  // needed, then give all of them, or all except one of them, a name:
-  //
-  // ```dart
-  // class C {
-  //   C();
-  //
-  //   C.n();
-  // }
-  // ```
-  //
-  // If there are multiple unnamed constructors and all except one of them are
-  // unneeded, then remove the constructors that aren't needed:
-  //
-  // ```dart
-  // class C {
-  //   C();
-  // }
-  // ```
-  //
-  // If there are multiple named constructors and all of the constructors are
-  // needed, then rename all except one of them:
-  //
-  // ```dart
-  // class C {
-  //   C.m();
-  //
-  //   C.n();
-  // }
-  // ```
-  //
-  // If there are multiple named constructors and all except one of them are
-  // unneeded, then remove the constructorsthat aren't needed:
-  //
-  // ```dart
-  // class C {
-  //   C.m();
-  // }
-  // ```
-  static const CompileTimeErrorCode DUPLICATE_CONSTRUCTOR_DEFAULT =
-      CompileTimeErrorCode(
-    'DUPLICATE_CONSTRUCTOR',
-    "The unnamed constructor is already defined.",
-    correction: "Try giving one of the constructors a name.",
-    hasPublishedDocs: true,
-    uniqueName: 'DUPLICATE_CONSTRUCTOR_DEFAULT',
-  );
-
-  /**
-   * Parameters:
-   * 0: the name of the duplicate entity
-   */
-  static const CompileTimeErrorCode DUPLICATE_CONSTRUCTOR_NAME =
-      CompileTimeErrorCode(
-    'DUPLICATE_CONSTRUCTOR',
-    "The constructor with name '{0}' is already defined.",
-    correction: "Try renaming one of the constructors.",
-    hasPublishedDocs: true,
-    uniqueName: 'DUPLICATE_CONSTRUCTOR_NAME',
-  );
-
-  /**
-   * Parameters:
-   * 0: the name of the duplicate entity
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a name is declared, and there is
-  // a previous declaration with the same name in the same scope.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because the name `x` is
-  // declared twice:
-  //
-  // ```dart
-  // int x = 0;
-  // int [!x!] = 1;
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Choose a different name for one of the declarations.
-  //
-  // ```dart
-  // int x = 0;
-  // int y = 1;
-  // ```
-  static const CompileTimeErrorCode DUPLICATE_DEFINITION = CompileTimeErrorCode(
-      'DUPLICATE_DEFINITION', "The name '{0}' is already defined.",
-      correction: "Try renaming one of the declarations.",
-      hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the field
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when there's more than one field
-  // formal parameter for the same field in a constructor's parameter list. It
-  // isn't useful to assign a value that will immediately be overwritten.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because `this.f` appears twice
-  // in the parameter list:
-  //
-  // ```dart
-  // class C {
-  //   int f;
-  //
-  //   C(this.f, this.[!f!]) {}
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Remove one of the field formal parameters:
-  //
-  // ```dart
-  // class C {
-  //   int f;
-  //
-  //   C(this.f) {}
-  // }
-  // ```
-  static const CompileTimeErrorCode DUPLICATE_FIELD_FORMAL_PARAMETER =
-      CompileTimeErrorCode(
-          'DUPLICATE_FIELD_FORMAL_PARAMETER',
-          "The field '{0}' can't be initialized by multiple parameters in the "
-              "same constructor.",
-          correction: "Try removing one of the parameters, or "
-              "using different fields.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the parameter that was duplicated
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an invocation has two or more
-  // named arguments that have the same name.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because there are two arguments
-  // with the name `a`:
-  //
-  // ```dart
-  // %language=2.9
-  // void f(C c) {
-  //   c.m(a: 0, [!a!]: 1);
-  // }
-  //
-  // class C {
-  //   void m({int a, int b}) {}
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If one of the arguments should have a different name, then change the name:
-  //
-  // ```dart
-  // %language=2.9
-  // void f(C c) {
-  //   c.m(a: 0, b: 1);
-  // }
-  //
-  // class C {
-  //   void m({int a, int b}) {}
-  // }
-  // ```
-  //
-  // If one of the arguments is wrong, then remove it:
-  //
-  // ```dart
-  // %language=2.9
-  // void f(C c) {
-  //   c.m(a: 1);
-  // }
-  //
-  // class C {
-  //   void m({int a, int b}) {}
-  // }
-  // ```
-  static const CompileTimeErrorCode DUPLICATE_NAMED_ARGUMENT =
-      CompileTimeErrorCode('DUPLICATE_NAMED_ARGUMENT',
-          "The argument for the named parameter '{0}' was already specified.",
-          correction: "Try removing one of the named arguments, or "
-              "correcting one of the names to reference a different named "
-              "parameter.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the URI of the duplicate part
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a single file is referenced in
-  // multiple part directives.
-  //
-  // #### Example
-  //
-  // Given a file named `part.dart` containing
-  //
-  // ```dart
-  // %uri="lib/part.dart"
-  // part of lib;
-  // ```
-  //
-  // The following code produces this diagnostic because the file `part.dart` is
-  // included multiple times:
-  //
-  // ```dart
-  // library lib;
-  //
-  // part 'part.dart';
-  // part [!'part.dart'!];
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Remove all except the first of the duplicated part directives:
-  //
-  // ```dart
-  // library lib;
-  //
-  // part 'part.dart';
-  // ```
-  static const CompileTimeErrorCode DUPLICATE_PART = CompileTimeErrorCode(
-      'DUPLICATE_PART',
-      "The library already contains a part with the URI '{0}'.",
-      correction:
-          "Try removing all except one of the duplicated part directives.",
-      hasPublishedDocs: true);
-
-  static const CompileTimeErrorCode ENUM_CONSTANT_SAME_NAME_AS_ENCLOSING =
-      CompileTimeErrorCode('ENUM_CONSTANT_SAME_NAME_AS_ENCLOSING',
-          "The name of the enum constant can't be the same as the enum's name.",
-          correction: "Try renaming the constant.");
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when two elements in a constant set
-  // literal have the same value. The set can only contain each value once,
-  // which means that one of the values is unnecessary.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because the string `'a'` is
-  // specified twice:
-  //
-  // ```dart
-  // const Set<String> set = {'a', [!'a'!]};
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Remove one of the duplicate values:
-  //
-  // ```dart
-  // const Set<String> set = {'a'};
-  // ```
-  //
-  // Note that literal sets preserve the order of their elements, so the choice
-  // of which element to remove might affect the order in which elements are
-  // returned by an iterator.
-  static const CompileTimeErrorCode EQUAL_ELEMENTS_IN_CONST_SET =
-      CompileTimeErrorCode('EQUAL_ELEMENTS_IN_CONST_SET',
-          "Two elements in a constant set literal can't be equal.",
-          correction: "Change or remove the duplicate element.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a key in a constant map is the
-  // same as a previous key in the same map. If two keys are the same, then the
-  // second value would overwrite the first value, which makes having both pairs
-  // pointless.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because the key `1` is used
-  // twice:
-  //
-  // ```dart
-  // const map = <int, String>{1: 'a', 2: 'b', [!1!]: 'c', 4: 'd'};
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If both entries should be included in the map, then change one of the keys
-  // to be different:
-  //
-  // ```dart
-  // const map = <int, String>{1: 'a', 2: 'b', 3: 'c', 4: 'd'};
-  // ```
-  //
-  // If only one of the entries is needed, then remove the one that isn't
-  // needed:
-  //
-  // ```dart
-  // const map = <int, String>{1: 'a', 2: 'b', 4: 'd'};
-  // ```
-  //
-  // Note that literal maps preserve the order of their entries, so the choice
-  // of which entry to remove might affect the order in which keys and values
-  // are returned by an iterator.
-  static const CompileTimeErrorCode EQUAL_KEYS_IN_CONST_MAP =
-      CompileTimeErrorCode('EQUAL_KEYS_IN_CONST_MAP',
-          "Two keys in a constant map literal can't be equal.",
-          correction: "Change or remove the duplicate key.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the number of provided type arguments
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a list literal has more than one
-  // type argument.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the list literal has
-  // two type arguments when it can have at most one:
-  //
-  // ```dart
-  // var l = [!<int, int>!][];
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Remove all except one of the type arguments:
-  //
-  // ```dart
-  // var l = <int>[];
-  // ```
-  static const CompileTimeErrorCode EXPECTED_ONE_LIST_TYPE_ARGUMENTS =
-      CompileTimeErrorCode('EXPECTED_ONE_LIST_TYPE_ARGUMENTS',
-          "List literals require one type argument or none, but {0} found.",
-          correction: "Try adjusting the number of type arguments.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the number of provided type arguments
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a set literal has more than one
-  // type argument.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the set literal has
-  // three type arguments when it can have at most one:
-  //
-  // ```dart
-  // var s = [!<int, String, int>!]{0, 'a', 1};
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Remove all except one of the type arguments:
-  //
-  // ```dart
-  // var s = <int>{0, 1};
-  // ```
-  static const CompileTimeErrorCode EXPECTED_ONE_SET_TYPE_ARGUMENTS =
-      CompileTimeErrorCode('EXPECTED_ONE_SET_TYPE_ARGUMENTS',
-          "Set literals require one type argument or none, but {0} were found.",
-          correction: "Try adjusting the number of type arguments.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the number of provided type arguments
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a map literal has either one or
-  // more than two type arguments.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the map literal has
-  // three type arguments when it can have either two or zero:
-  //
-  // ```dart
-  // var m = [!<int, String, int>!]{};
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Remove all except two of the type arguments:
-  //
-  // ```dart
-  // var m = <int, String>{};
-  // ```
-  static const CompileTimeErrorCode EXPECTED_TWO_MAP_TYPE_ARGUMENTS =
-      CompileTimeErrorCode('EXPECTED_TWO_MAP_TYPE_ARGUMENTS',
-          "Map literals require two type arguments or none, but {0} found.",
-          correction: "Try adjusting the number of type arguments.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the uri pointing to a library
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when it finds an export whose `dart:`
-  // URI references an internal library.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because `_interceptors` is an
-  // internal library:
-  //
-  // ```dart
-  // export [!'dart:_interceptors'!];
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Remove the export directive.
-  static const CompileTimeErrorCode EXPORT_INTERNAL_LIBRARY =
-      CompileTimeErrorCode('EXPORT_INTERNAL_LIBRARY',
-          "The library '{0}' is internal and can't be exported.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of a symbol defined in a legacy library
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a library that was opted in to
-  // null safety exports another library, and the exported library is opted out
-  // of null safety.
-  //
-  // #### Example
-  //
-  // Given a library that is opted out of null safety:
-  //
-  // ```dart
-  // %uri="lib/optedOut.dart"
-  // // @dart = 2.8
-  // String s;
-  // ```
-  //
-  // The following code produces this diagnostic because it's exporting symbols
-  // from an opted-out library:
-  //
-  // ```dart
-  // export [!'optedOut.dart'!];
-  //
-  // class C {}
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you're able to do so, migrate the exported library so that it doesn't
-  // need to opt out:
-  //
-  // ```dart
-  // String? s;
-  // ```
-  //
-  // If you can't migrate the library, then remove the export:
-  //
-  // ```dart
-  // class C {}
-  // ```
-  //
-  // If the exported library (the one that is opted out) itself exports an
-  // opted-in library, then it's valid for your library to indirectly export the
-  // symbols from the opted-in library. You can do so by adding a hide
-  // combinator to the export directive in your library that hides all of the
-  // names declared in the opted-out library.
-  static const CompileTimeErrorCode EXPORT_LEGACY_SYMBOL = CompileTimeErrorCode(
-      'EXPORT_LEGACY_SYMBOL',
-      "The symbol '{0}' is defined in a legacy library, and can't be "
-          "re-exported from a library with null safety enabled.",
-      correction: "Try removing the export or migrating the legacy library.",
-      hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the uri pointing to a non-library declaration
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an export directive references a
-  // part rather than a library.
-  //
-  // #### Example
-  //
-  // Given a file named `part.dart` containing
-  //
-  // ```dart
-  // %uri="lib/part.dart"
-  // part of lib;
-  // ```
-  //
-  // The following code produces this diagnostic because the file `part.dart` is
-  // a part, and only libraries can be exported:
-  //
-  // ```dart
-  // library lib;
-  //
-  // export [!'part.dart'!];
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Either remove the export directive, or change the URI to be the URI of the
-  // library containing the part.
-  static const CompileTimeErrorCode EXPORT_OF_NON_LIBRARY =
-      CompileTimeErrorCode('EXPORT_OF_NON_LIBRARY',
-          "The exported library '{0}' can't have a part-of directive.",
-          correction: "Try exporting the library that the part is a part of.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the analyzer finds an
-  // expression, rather than a map entry, in what appears to be a map literal.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic:
-  //
-  // ```dart
-  // var map = <String, int>{'a': 0, 'b': 1, [!'c'!]};
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the expression is intended to compute either a key or a value in an
-  // entry, fix the issue by replacing the expression with the key or the value.
-  // For example:
-  //
-  // ```dart
-  // var map = <String, int>{'a': 0, 'b': 1, 'c': 2};
-  // ```
-  static const CompileTimeErrorCode EXPRESSION_IN_MAP = CompileTimeErrorCode(
-      'EXPRESSION_IN_MAP', "Expressions can't be used in a map literal.",
-      correction: "Try removing the expression or converting it to be a map "
-          "entry.",
-      hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a type (class or mixin) is a
-  // subtype of a class from a library being imported using a deferred import.
-  // The supertypes of a type must be compiled at the same time as the type, and
-  // classes from deferred libraries aren't compiled until the library is
-  // loaded.
-  //
-  // For more information, see the language tour's coverage of
-  // [deferred loading](https://dart.dev/guides/language/language-tour#lazily-loading-a-library).
-  //
-  // #### Example
-  //
-  // Given a file (`a.dart`) that defines the class `A`:
-  //
-  // ```dart
-  // %uri="lib/a.dart"
-  // class A {}
-  // ```
-  //
-  // The following code produces this diagnostic because the superclass of `B`
-  // is declared in a deferred library:
-  //
-  // ```dart
-  // import 'a.dart' deferred as a;
-  //
-  // class B extends [!a.A!] {}
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you need to create a subtype of a type from the deferred library, then
-  // remove the `deferred` keyword:
-  //
-  // ```dart
-  // import 'a.dart' as a;
-  //
-  // class B extends a.A {}
-  // ```
-  static const CompileTimeErrorCode EXTENDS_DEFERRED_CLASS =
-      CompileTimeErrorCode(
-          'SUBTYPE_OF_DEFERRED_CLASS', "Classes can't extend deferred classes.",
-          correction: "Try specifying a different superclass, or "
-              "removing the extends clause.",
-          hasPublishedDocs: true,
-          uniqueName: 'EXTENDS_DEFERRED_CLASS');
-
-  /**
-   * Parameters:
-   * 0: the name of the disallowed type
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when one of the restricted classes is
-  // used in either an `extends`, `implements`, `with`, or `on` clause. The
-  // classes `bool`, `double`, `FutureOr`, `int`, `Null`, `num`, and `String`
-  // are all restricted in this way, to allow for more efficient
-  // implementations.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because `String` is used in an
-  // `extends` clause:
-  //
-  // ```dart
-  // class A extends [!String!] {}
-  // ```
-  //
-  // The following code produces this diagnostic because `String` is used in an
-  // `implements` clause:
-  //
-  // ```dart
-  // class B implements [!String!] {}
-  // ```
-  //
-  // The following code produces this diagnostic because `String` is used in a
-  // `with` clause:
-  //
-  // ```dart
-  // class C with [!String!] {}
-  // ```
-  //
-  // The following code produces this diagnostic because `String` is used in an
-  // `on` clause:
-  //
-  // ```dart
-  // mixin M on [!String!] {}
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If a different type should be specified, then replace the type:
-  //
-  // ```dart
-  // class A extends Object {}
-  // ```
-  //
-  // If there isn't a different type that would be appropriate, then remove the
-  // type, and possibly the whole clause:
-  //
-  // ```dart
-  // class B {}
-  // ```
-  static const CompileTimeErrorCode EXTENDS_DISALLOWED_CLASS =
-      // TODO(scheglov) We might want to restore specific code with FrontEnd.
-      //  https://github.com/dart-lang/sdk/issues/31821
-      CompileTimeErrorCode(
-    'SUBTYPE_OF_DISALLOWED_TYPE',
-    "Classes can't extend '{0}'.",
-    correction: "Try specifying a different superclass, or "
-        "removing the extends clause.",
-    hasPublishedDocs: true,
-    uniqueName: 'EXTENDS_DISALLOWED_CLASS',
-  );
-
-  /**
-   * Parameters:
-   * 0: the name in the extends clause
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an `extends` clause contains a
-  // name that is declared to be something other than a class.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `f` is declared to be a
-  // function:
-  //
-  // ```dart
-  // void f() {}
-  //
-  // class C extends [!f!] {}
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you want the class to extend a class other than `Object`, then replace
-  // the name in the `extends` clause with the name of that class:
-  //
-  // ```dart
-  // void f() {}
-  //
-  // class C extends B {}
-  //
-  // class B {}
-  // ```
-  //
-  // If you want the class to extend `Object`, then remove the `extends` clause:
-  //
-  // ```dart
-  // void f() {}
-  //
-  // class C {}
-  // ```
-  static const CompileTimeErrorCode EXTENDS_NON_CLASS = CompileTimeErrorCode(
-      'EXTENDS_NON_CLASS', "Classes can only extend other classes.",
-      correction:
-          "Try specifying a different superclass, or removing the extends "
-          "clause.",
-      hasPublishedDocs: true,
-      isUnresolvedIdentifier: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a type alias that expands to a
-  // type parameter is used in an `extends`, `implements`, `with`, or `on`
-  // clause.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the type alias `T`,
-  // which expands to the type parameter `S`, is used in the `extends` clause of
-  // the class `C`:
-  //
-  // ```dart
-  // typedef T<S> = S;
-  //
-  // class C extends [!T!]<Object> {}
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Use the value of the type argument directly:
-  //
-  // ```dart
-  // typedef T<S> = S;
-  //
-  // class C extends Object {}
-  // ```
-  static const CompileTimeErrorCode
-      EXTENDS_TYPE_ALIAS_EXPANDS_TO_TYPE_PARAMETER = CompileTimeErrorCode(
-          'SUPERTYPE_EXPANDS_TO_TYPE_PARAMETER',
-          "A type alias that expands to a type parameter can't be used as a "
-              "superclass.",
-          correction:
-              "Try specifying a different superclass, or removing the extends "
-              "clause.",
-          hasPublishedDocs: true,
-          uniqueName: 'EXTENDS_TYPE_ALIAS_EXPANDS_TO_TYPE_PARAMETER');
-
-  /**
-   * Parameters:
-   * 0: the name of the extension
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the name of an extension is used
-  // in an expression other than in an extension override or to qualify an
-  // access to a static member of the extension. Because classes define a type,
-  // the name of a class can be used to refer to the instance of `Type`
-  // representing the type of the class. Extensions, on the other hand, don't
-  // define a type and can't be used as a type literal.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `E` is an extension:
-  //
-  // ```dart
-  // extension E on int {
-  //   static String m() => '';
-  // }
-  //
-  // var x = [!E!];
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Replace the name of the extension with a name that can be referenced, such
-  // as a static member defined on the extension:
-  //
-  // ```dart
-  // extension E on int {
-  //   static String m() => '';
-  // }
-  //
-  // var x = E.m();
-  // ```
-  static const CompileTimeErrorCode EXTENSION_AS_EXPRESSION =
-      CompileTimeErrorCode('EXTENSION_AS_EXPRESSION',
-          "Extension '{0}' can't be used as an expression.",
-          correction: "Try replacing it with a valid expression.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the extension defining the conflicting member
-   * 1: the name of the conflicting static member
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an extension declaration
-  // contains both an instance member and a static member that have the same
-  // name. The instance member and the static member can't have the same name
-  // because it's unclear which member is being referenced by an unqualified use
-  // of the name within the body of the extension.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because the name `a` is being
-  // used for two different members:
-  //
-  // ```dart
-  // extension E on Object {
-  //   int get a => 0;
-  //   static int [!a!]() => 0;
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Rename or remove one of the members:
-  //
-  // ```dart
-  // extension E on Object {
-  //   int get a => 0;
-  //   static int b() => 0;
-  // }
-  // ```
-  static const CompileTimeErrorCode EXTENSION_CONFLICTING_STATIC_AND_INSTANCE =
-      CompileTimeErrorCode(
-          'EXTENSION_CONFLICTING_STATIC_AND_INSTANCE',
-          "Extension '{0}' can't define static member '{1}' and an instance "
-              "member with the same name.",
-          correction:
-              "Try renaming the member to a name that doesn't conflict.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an extension declaration
-  // declares a member with the same name as a member declared in the class
-  // `Object`. Such a member can never be used because the member in `Object` is
-  // always found first.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `toString` is defined
-  // by `Object`:
-  //
-  // ```dart
-  // extension E on String {
-  //   String [!toString!]() => this;
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Remove the member or rename it so that the name doesn't conflict with the
-  // member in `Object`:
-  //
-  // ```dart
-  // extension E on String {
-  //   String displayString() => this;
-  // }
-  // ```
-  static const CompileTimeErrorCode EXTENSION_DECLARES_MEMBER_OF_OBJECT =
-      CompileTimeErrorCode(
-          'EXTENSION_DECLARES_MEMBER_OF_OBJECT',
-          "Extensions can't declare members with the same name as a member "
-              "declared by 'Object'.",
-          correction: "Try specifying a different name for the member.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an extension override is the
-  // receiver of the invocation of a static member. Similar to static members in
-  // classes, the static members of an extension should be accessed using the
-  // name of the extension, not an extension override.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `m` is static:
-  //
-  // ```dart
-  // extension E on String {
-  //   static void m() {}
-  // }
-  //
-  // void f() {
-  //   E('').[!m!]();
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Replace the extension override with the name of the extension:
-  //
-  // ```dart
-  // extension E on String {
-  //   static void m() {}
-  // }
-  //
-  // void f() {
-  //   E.m();
-  // }
-  // ```
-  static const CompileTimeErrorCode EXTENSION_OVERRIDE_ACCESS_TO_STATIC_MEMBER =
-      CompileTimeErrorCode(
-          'EXTENSION_OVERRIDE_ACCESS_TO_STATIC_MEMBER',
-          "An extension override can't be used to access a static member from "
-              "an extension.",
-          correction: "Try using just the name of the extension.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the type of the argument
-   * 1: the extended type
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the argument to an extension
-  // override isn't assignable to the type being extended by the extension.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `3` isn't a `String`:
-  //
-  // ```dart
-  // extension E on String {
-  //   void method() {}
-  // }
-  //
-  // void f() {
-  //   E([!3!]).method();
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you're using the correct extension, then update the argument to have the
-  // correct type:
-  //
-  // ```dart
-  // extension E on String {
-  //   void method() {}
-  // }
-  //
-  // void f() {
-  //   E(3.toString()).method();
-  // }
-  // ```
-  //
-  // If there's a different extension that's valid for the type of the argument,
-  // then either replace the name of the extension or unwrap the argument so
-  // that the correct extension is found.
-  static const CompileTimeErrorCode EXTENSION_OVERRIDE_ARGUMENT_NOT_ASSIGNABLE =
-      CompileTimeErrorCode(
-          'EXTENSION_OVERRIDE_ARGUMENT_NOT_ASSIGNABLE',
-          "The type of the argument to the extension override '{0}' "
-              "isn't assignable to the extended type '{1}'.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an extension override is used as
-  // the receiver of a cascade expression. The value of a cascade expression
-  // `e..m` is the value of the receiver `e`, but extension overrides aren't
-  // expressions and don't have a value.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `E(3)` isn't an
-  // expression:
-  //
-  // ```dart
-  // extension E on int {
-  //   void m() {}
-  // }
-  // f() {
-  //   [!E!](3)..m();
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Use `.` rather than `..`:
-  //
-  // ```dart
-  // extension E on int {
-  //   void m() {}
-  // }
-  // f() {
-  //   E(3).m();
-  // }
-  // ```
-  //
-  // If there are multiple cascaded accesses, you'll need to duplicate the
-  // extension override for each one.
-  static const CompileTimeErrorCode EXTENSION_OVERRIDE_WITH_CASCADE =
-      CompileTimeErrorCode(
-          'EXTENSION_OVERRIDE_WITH_CASCADE',
-          "Extension overrides have no value so they can't be used as the "
-              "receiver of a cascade expression.",
-          correction: "Try using '.' instead of '..'.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an extension override is found
-  // that isn't being used to access one of the members of the extension. The
-  // extension override syntax doesn't have any runtime semantics; it only
-  // controls which member is selected at compile time.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `E(i)` isn't an
-  // expression:
-  //
-  // ```dart
-  // extension E on int {
-  //   int get a => 0;
-  // }
-  //
-  // void f(int i) {
-  //   print([!E(i)!]);
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you want to invoke one of the members of the extension, then add the
-  // invocation:
-  //
-  // ```dart
-  // extension E on int {
-  //   int get a => 0;
-  // }
-  //
-  // void f(int i) {
-  //   print(E(i).a);
-  // }
-  // ```
-  //
-  // If you don't want to invoke a member, then unwrap the argument:
-  //
-  // ```dart
-  // extension E on int {
-  //   int get a => 0;
-  // }
-  //
-  // void f(int i) {
-  //   print(i);
-  // }
-  // ```
-  static const CompileTimeErrorCode EXTENSION_OVERRIDE_WITHOUT_ACCESS =
-      CompileTimeErrorCode('EXTENSION_OVERRIDE_WITHOUT_ACCESS',
-          "An extension override can only be used to access instance members.",
-          correction: "Consider adding an access to an instance member.",
-          hasPublishedDocs: true);
-
-  static const CompileTimeErrorCode EXTERNAL_FIELD_CONSTRUCTOR_INITIALIZER =
-      CompileTimeErrorCode('EXTERNAL_FIELD_CONSTRUCTOR_INITIALIZER',
-          'External fields cannot have initializers.',
-          correction:
-              "Try removing the field initializer or the 'external' keyword "
-              "from the field declaration.");
-
-  static const CompileTimeErrorCode EXTERNAL_FIELD_INITIALIZER =
-      CompileTimeErrorCode('EXTERNAL_FIELD_INITIALIZER',
-          'External fields cannot have initializers.',
-          correction:
-              "Try removing the initializer or the 'external' keyword.");
-
-  static const CompileTimeErrorCode EXTERNAL_VARIABLE_INITIALIZER =
-      CompileTimeErrorCode('EXTERNAL_VARIABLE_INITIALIZER',
-          'External variables cannot have initializers.',
-          correction:
-              "Try removing the initializer or the 'external' keyword.");
-
-  /**
-   * Parameters:
-   * 0: the maximum number of positional arguments
-   * 1: the actual number of positional arguments given
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a method or function invocation
-  // has more positional arguments than the method or function allows.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `f` defines 2
-  // parameters but is invoked with 3 arguments:
-  //
-  // ```dart
-  // void f(int a, int b) {}
-  // void g() {
-  //   f(1, 2, [!3!]);
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Remove the arguments that don't correspond to parameters:
-  //
-  // ```dart
-  // void f(int a, int b) {}
-  // void g() {
-  //   f(1, 2);
-  // }
-  // ```
-  static const CompileTimeErrorCode EXTRA_POSITIONAL_ARGUMENTS =
-      CompileTimeErrorCode('EXTRA_POSITIONAL_ARGUMENTS',
-          "Too many positional arguments: {0} expected, but {1} found.",
-          correction: "Try removing the extra arguments.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the maximum number of positional arguments
-   * 1: the actual number of positional arguments given
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a method or function invocation
-  // has more positional arguments than the method or function allows, but the
-  // method or function defines named parameters.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `f` defines 2
-  // positional parameters but has a named parameter that could be used for the
-  // third argument:
-  //
-  // ```dart
-  // %language=2.9
-  // void f(int a, int b, {int c}) {}
-  // void g() {
-  //   f(1, 2, [!3!]);
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If some of the arguments should be values for named parameters, then add
-  // the names before the arguments:
-  //
-  // ```dart
-  // %language=2.9
-  // void f(int a, int b, {int c}) {}
-  // void g() {
-  //   f(1, 2, c: 3);
-  // }
-  // ```
-  //
-  // Otherwise, remove the arguments that don't correspond to positional
-  // parameters:
-  //
-  // ```dart
-  // %language=2.9
-  // void f(int a, int b, {int c}) {}
-  // void g() {
-  //   f(1, 2);
-  // }
-  // ```
-  static const CompileTimeErrorCode EXTRA_POSITIONAL_ARGUMENTS_COULD_BE_NAMED =
-      CompileTimeErrorCode('EXTRA_POSITIONAL_ARGUMENTS_COULD_BE_NAMED',
-          "Too many positional arguments: {0} expected, but {1} found.",
-          correction: "Try removing the extra positional arguments, "
-              "or specifying the name for named arguments.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the field being initialized multiple times
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the initializer list of a
-  // constructor initializes a field more than once. There is no value to allow
-  // both initializers because only the last value is preserved.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the field `f` is being
-  // initialized twice:
-  //
-  // ```dart
-  // class C {
-  //   int f;
-  //
-  //   C() : f = 0, [!f!] = 1;
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Remove one of the initializers:
-  //
-  // ```dart
-  // class C {
-  //   int f;
-  //
-  //   C() : f = 0;
-  // }
-  // ```
-  static const CompileTimeErrorCode FIELD_INITIALIZED_BY_MULTIPLE_INITIALIZERS =
-      CompileTimeErrorCode('FIELD_INITIALIZED_BY_MULTIPLE_INITIALIZERS',
-          "The field '{0}' can't be initialized twice in the same constructor.",
-          correction: "Try removing one of the initializations.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a final field is initialized in
-  // both the declaration of the field and in an initializer in a constructor.
-  // Final fields can only be assigned once, so it can't be initialized in both
-  // places.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because `f` is :
-  //
-  // ```dart
-  // class C {
-  //   final int f = 0;
-  //   C() : [!f!] = 1;
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the initialization doesn't depend on any values passed to the
-  // constructor, and if all of the constructors need to initialize the field to
-  // the same value, then remove the initializer from the constructor:
-  //
-  // ```dart
-  // class C {
-  //   final int f = 0;
-  //   C();
-  // }
-  // ```
-  //
-  // If the initialization depends on a value passed to the constructor, or if
-  // different constructors need to initialize the field differently, then
-  // remove the initializer in the field's declaration:
-  //
-  // ```dart
-  // class C {
-  //   final int f;
-  //   C() : f = 1;
-  // }
-  // ```
-  static const CompileTimeErrorCode
-      FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION = CompileTimeErrorCode(
-          'FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION',
-          "Fields can't be initialized in the constructor if they are final "
-              "and were already initialized at their declaration.",
-          correction: "Try removing one of the initializations.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a field is initialized in both
-  // the parameter list and in the initializer list of a constructor.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the field `f` is
-  // initialized both by a field formal parameter and in the initializer list:
-  //
-  // ```dart
-  // class C {
-  //   int f;
-  //
-  //   C(this.f) : [!f!] = 0;
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the field should be initialized by the parameter, then remove the
-  // initialization in the initializer list:
-  //
-  // ```dart
-  // class C {
-  //   int f;
-  //
-  //   C(this.f);
-  // }
-  // ```
-  //
-  // If the field should be initialized in the initializer list and the
-  // parameter isn't needed, then remove the parameter:
-  //
-  // ```dart
-  // class C {
-  //   int f;
-  //
-  //   C() : f = 0;
-  // }
-  // ```
-  //
-  // If the field should be initialized in the initializer list and the
-  // parameter is needed, then make it a normal parameter:
-  //
-  // ```dart
-  // class C {
-  //   int f;
-  //
-  //   C(int g) : f = g * 2;
-  // }
-  // ```
-  static const CompileTimeErrorCode
-      FIELD_INITIALIZED_IN_PARAMETER_AND_INITIALIZER = CompileTimeErrorCode(
-          'FIELD_INITIALIZED_IN_PARAMETER_AND_INITIALIZER',
-          "Fields can't be initialized in both the parameter list and the "
-              "initializers.",
-          correction: "Try removing one of the initializations.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a factory constructor has a
-  // field formal parameter. Factory constructors can't assign values to fields
-  // because no instance is created; hence, there is no field to assign.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the factory constructor
-  // uses a field formal parameter:
-  //
-  // ```dart
-  // class C {
-  //   int? f;
-  //
-  //   factory C([!this.f!]) => throw 0;
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Replace the field formal parameter with a normal parameter:
-  //
-  // ```dart
-  // class C {
-  //   int? f;
-  //
-  //   factory C(int f) => throw 0;
-  // }
-  // ```
-  static const CompileTimeErrorCode FIELD_INITIALIZER_FACTORY_CONSTRUCTOR =
-      CompileTimeErrorCode(
-          'FIELD_INITIALIZER_FACTORY_CONSTRUCTOR',
-          "Initializing formal parameters can't be used in factory "
-              "constructors.",
-          correction: "Try using a normal parameter.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the type of the initializer expression
-   * 1: the name of the type of the field
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the initializer list of a
-  // constructor initializes a field to a value that isn't assignable to the
-  // field.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because `0` has the type `int`,
-  // and an `int` can't be assigned to a field of type `String`:
-  //
-  // ```dart
-  // class C {
-  //   String s;
-  //
-  //   C() : s = [!0!];
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the type of the field is correct, then change the value assigned to it
-  // so that the value has a valid type:
-  //
-  // ```dart
-  // class C {
-  //   String s;
-  //
-  //   C() : s = '0';
-  // }
-  // ```
-  //
-  // If the type of the value is correct, then change the type of the field to
-  // allow the assignment:
-  //
-  // ```dart
-  // class C {
-  //   int s;
-  //
-  //   C() : s = 0;
-  // }
-  // ```
-  static const CompileTimeErrorCode FIELD_INITIALIZER_NOT_ASSIGNABLE =
-      CompileTimeErrorCode(
-          'FIELD_INITIALIZER_NOT_ASSIGNABLE',
-          "The initializer type '{0}' can't be assigned to the field type "
-              "'{1}'.",
-          hasPublishedDocs: true);
-
-  /**
-   * 7.6.1 Generative Constructors: It is a compile-time error if an
-   * initializing formal is used by a function other than a non-redirecting
-   * generative constructor.
-   */
-  static const CompileTimeErrorCode FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR =
-      CompileTimeErrorCode('FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR',
-          "Initializing formal parameters can only be used in constructors.",
-          correction: "Try using a normal parameter.");
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a redirecting constructor
-  // initializes a field in the object. This isn't allowed because the instance
-  // that has the field hasn't been created at the point at which it should be
-  // initialized.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the constructor
-  // `C.zero`, which redirects to the constructor `C`, has a field formal
-  // parameter that initializes the field `f`:
-  //
-  // ```dart
-  // class C {
-  //   int f;
-  //
-  //   C(this.f);
-  //
-  //   C.zero([!this.f!]) : this(f);
-  // }
-  // ```
-  //
-  // The following code produces this diagnostic because the constructor
-  // `C.zero`, which redirects to the constructor `C`, has an initializer that
-  // initializes the field `f`:
-  //
-  // ```dart
-  // class C {
-  //   int f;
-  //
-  //   C(this.f);
-  //
-  //   C.zero() : [!f = 0!], this(1);
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the initialization is done by a field formal parameter, then use a
-  // normal parameter:
-  //
-  // ```dart
-  // class C {
-  //   int f;
-  //
-  //   C(this.f);
-  //
-  //   C.zero(int f) : this(f);
-  // }
-  // ```
-  //
-  // If the initialization is done in an initializer, then remove the
-  // initializer:
-  //
-  // ```dart
-  // class C {
-  //   int f;
-  //
-  //   C(this.f);
-  //
-  //   C.zero() : this(0);
-  // }
-  // ```
-  static const CompileTimeErrorCode FIELD_INITIALIZER_REDIRECTING_CONSTRUCTOR =
-      CompileTimeErrorCode('FIELD_INITIALIZER_REDIRECTING_CONSTRUCTOR',
-          "The redirecting constructor can't have a field initializer.",
-          correction:
-              "Try initializing the field in the constructor being redirected "
-              "to.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the type of the field formal parameter
-   * 1: the name of the type of the field
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the type of a field formal
-  // parameter isn't assignable to the type of the field being initialized.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the field formal
-  // parameter has the type `String`, but the type of the field is `int`. The
-  // parameter must have a type that is a subtype of the field's type.
-  //
-  // ```dart
-  // class C {
-  //   int f;
-  //
-  //   C([!String this.f!]);
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the type of the field is incorrect, then change the type of the field to
-  // match the type of the parameter, and consider removing the type from the
-  // parameter:
-  //
-  // ```dart
-  // class C {
-  //   String f;
-  //
-  //   C(this.f);
-  // }
-  // ```
-  //
-  // If the type of the parameter is incorrect, then remove the type of the
-  // parameter:
-  //
-  // ```dart
-  // class C {
-  //   int f;
-  //
-  //   C(this.f);
-  // }
-  // ```
-  //
-  // If the types of both the field and the parameter are correct, then use an
-  // initializer rather than a field formal parameter to convert the parameter
-  // value into a value of the correct type:
-  //
-  // ```dart
-  // class C {
-  //   int f;
-  //
-  //   C(String s) : f = int.parse(s);
-  // }
-  // ```
-  static const CompileTimeErrorCode FIELD_INITIALIZING_FORMAL_NOT_ASSIGNABLE =
-      CompileTimeErrorCode('FIELD_INITIALIZING_FORMAL_NOT_ASSIGNABLE',
-          "The parameter type '{0}' is incompatible with the field type '{1}'.",
-          correction: "Try changing or removing the parameter's type, or "
-              "changing the field's type.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the field in question
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a final field is initialized
-  // twice: once where it's declared and once by a constructor's parameter.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the field `f` is
-  // initialized twice:
-  //
-  // ```dart
-  // class C {
-  //   final int f = 0;
-  //
-  //   C(this.[!f!]);
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the field should have the same value for all instances, then remove the
-  // initialization in the parameter list:
-  //
-  // ```dart
-  // class C {
-  //   final int f = 0;
-  //
-  //   C();
-  // }
-  // ```
-  //
-  // If the field can have different values in different instances, then remove
-  // the initialization in the declaration:
-  //
-  // ```dart
-  // class C {
-  //   final int f;
-  //
-  //   C(this.f);
-  // }
-  // ```
-  static const CompileTimeErrorCode
-      FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR = CompileTimeErrorCode(
-          'FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR',
-          "'{0}' is final and was given a value when it was declared, "
-              "so it can't be set to a new value.",
-          correction: "Try removing one of the initializations.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the uninitialized final variable
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a final field or variable isn't
-  // initialized.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `x` doesn't have an
-  // initializer:
-  //
-  // ```dart
-  // final [!x!];
-  // ```
-  //
-  // #### Common fixes
-  //
-  // For variables and static fields, you can add an initializer:
-  //
-  // ```dart
-  // final x = 0;
-  // ```
-  //
-  // For instance fields, you can add an initializer as shown in the previous
-  // example, or you can initialize the field in every constructor. You can
-  // initialize the field by using a field formal parameter:
-  //
-  // ```dart
-  // class C {
-  //   final int x;
-  //   C(this.x);
-  // }
-  // ```
-  //
-  // You can also initialize the field by using an initializer in the
-  // constructor:
-  //
-  // ```dart
-  // class C {
-  //   final int x;
-  //   C(int y) : x = y * 2;
-  // }
-  // ```
-  static const CompileTimeErrorCode FINAL_NOT_INITIALIZED =
-      CompileTimeErrorCode('FINAL_NOT_INITIALIZED',
-          "The final variable '{0}' must be initialized.",
-          // TODO(brianwilkerson) Split this error code so that we can suggest
-          // initializing fields in constructors (FINAL_FIELD_NOT_INITIALIZED
-          // and FINAL_VARIABLE_NOT_INITIALIZED).
-          correction: "Try initializing the variable.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the uninitialized final variable
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a class defines one or more
-  // final instance fields without initializers and has at least one constructor
-  // that doesn't initialize those fields. All final instance fields must be
-  // initialized when the instance is created, either by the field's initializer
-  // or by the constructor.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic:
-  //
-  // ```dart
-  // class C {
-  //   final String value;
-  //
-  //   [!C!]();
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the value should be passed in to the constructor directly, then use a
-  // field formal parameter to initialize the field `value`:
-  //
-  // ```dart
-  // class C {
-  //   final String value;
-  //
-  //   C(this.value);
-  // }
-  // ```
-  //
-  // If the value should be computed indirectly from a value provided by the
-  // caller, then add a parameter and include an initializer:
-  //
-  // ```dart
-  // class C {
-  //   final String value;
-  //
-  //   C(Object o) : value = o.toString();
-  // }
-  // ```
-  //
-  // If the value of the field doesn't depend on values that can be passed to
-  // the constructor, then add an initializer for the field as part of the field
-  // declaration:
-  //
-  // ```dart
-  // class C {
-  //   final String value = '';
-  //
-  //   C();
-  // }
-  // ```
-  //
-  // If the value of the field doesn't depend on values that can be passed to
-  // the constructor but different constructors need to initialize it to
-  // different values, then add an initializer for the field in the initializer
-  // list:
-  //
-  // ```dart
-  // class C {
-  //   final String value;
-  //
-  //   C() : value = '';
-  //
-  //   C.named() : value = 'c';
-  // }
-  // ```
-  //
-  // However, if the value is the same for all instances, then consider using a
-  // static field instead of an instance field:
-  //
-  // ```dart
-  // class C {
-  //   static const String value = '';
-  //
-  //   C();
-  // }
-  // ```
-  static const CompileTimeErrorCode FINAL_NOT_INITIALIZED_CONSTRUCTOR_1 =
-      CompileTimeErrorCode(
-    'FINAL_NOT_INITIALIZED_CONSTRUCTOR',
-    "All final variables must be initialized, but '{0}' isn't.",
-    correction: "Try adding an initializer for the field.",
-    hasPublishedDocs: true,
-    uniqueName: 'FINAL_NOT_INITIALIZED_CONSTRUCTOR_1',
-  );
-
-  /**
-   * Parameters:
-   * 0: the name of the uninitialized final variable
-   * 1: the name of the uninitialized final variable
-   */
-  static const CompileTimeErrorCode FINAL_NOT_INITIALIZED_CONSTRUCTOR_2 =
-      CompileTimeErrorCode(
-    'FINAL_NOT_INITIALIZED_CONSTRUCTOR',
-    "All final variables must be initialized, but '{0}' and '{1}' "
-        "aren't.",
-    correction: "Try adding initializers for the fields.",
-    hasPublishedDocs: true,
-    uniqueName: 'FINAL_NOT_INITIALIZED_CONSTRUCTOR_2',
-  );
-
-  /**
-   * Parameters:
-   * 0: the name of the uninitialized final variable
-   * 1: the name of the uninitialized final variable
-   * 2: the number of additional not initialized variables that aren't listed
-   */
-  static const CompileTimeErrorCode FINAL_NOT_INITIALIZED_CONSTRUCTOR_3_PLUS =
-      CompileTimeErrorCode(
-    'FINAL_NOT_INITIALIZED_CONSTRUCTOR',
-    "All final variables must be initialized, but '{0}', '{1}', and {2} "
-        "others aren't.",
-    correction: "Try adding initializers for the fields.",
-    hasPublishedDocs: true,
-    uniqueName: 'FINAL_NOT_INITIALIZED_CONSTRUCTOR_3_PLUS',
-  );
-
-  /**
-   * Parameters:
-   * 0: the type of the iterable expression.
-   * 1: the sequence type -- Iterable for `for` or Stream for `await for`.
-   * 2: the loop variable type.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the `Iterable` or `Stream` in a
-  // for-in loop has an element type that can't be assigned to the loop
-  // variable.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because `<String>[]` has an
-  // element type of `String`, and `String` can't be assigned to the type of `e`
-  // (`int`):
-  //
-  // ```dart
-  // void f() {
-  //   for (int e in [!<String>[]!]) {
-  //     print(e);
-  //   }
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the type of the loop variable is correct, then update the type of the
-  // iterable:
-  //
-  // ```dart
-  // void f() {
-  //   for (int e in <int>[]) {
-  //     print(e);
-  //   }
-  // }
-  // ```
-  //
-  // If the type of the iterable is correct, then update the type of the loop
-  // variable:
-  //
-  // ```dart
-  // void f() {
-  //   for (String e in <String>[]) {
-  //     print(e);
-  //   }
-  // }
-  // ```
-  static const CompileTimeErrorCode FOR_IN_OF_INVALID_ELEMENT_TYPE =
-      CompileTimeErrorCode(
-          'FOR_IN_OF_INVALID_ELEMENT_TYPE',
-          "The type '{0}' used in the 'for' loop must implement '{1}' with a "
-              "type argument that can be assigned to '{2}'.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the type of the iterable expression.
-   * 1: the sequence type -- Iterable for `for` or Stream for `await for`.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the expression following `in` in
-  // a for-in loop has a type that isn't a subclass of `Iterable`.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `m` is a `Map`, and
-  // `Map` isn't a subclass of `Iterable`:
-  //
-  // ```dart
-  // void f(Map<String, String> m) {
-  //   for (String s in [!m!]) {
-  //     print(s);
-  //   }
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Replace the expression with one that produces an iterable value:
-  //
-  // ```dart
-  // void f(Map<String, String> m) {
-  //   for (String s in m.values) {
-  //     print(s);
-  //   }
-  // }
-  // ```
-  static const CompileTimeErrorCode FOR_IN_OF_INVALID_TYPE =
-      CompileTimeErrorCode('FOR_IN_OF_INVALID_TYPE',
-          "The type '{0}' used in the 'for' loop must implement {1}.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the loop variable declared in a
-  // for-in loop is declared to be a `const`. The variable can't be a `const`
-  // because the value can't be computed at compile time.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the loop variable `x`
-  // is declared to be a `const`:
-  //
-  // ```dart
-  // void f() {
-  //   for ([!const!] x in [0, 1, 2]) {
-  //     print(x);
-  //   }
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If there's a type annotation, then remove the `const` modifier from the
-  // declaration.
-  //
-  // If there's no type, then replace the `const` modifier with `final`, `var`,
-  // or a type annotation:
-  //
-  // ```dart
-  // void f() {
-  //   for (final x in [0, 1, 2]) {
-  //     print(x);
-  //   }
-  // }
-  // ```
-  static const CompileTimeErrorCode FOR_IN_WITH_CONST_VARIABLE =
-      CompileTimeErrorCode('FOR_IN_WITH_CONST_VARIABLE',
-          "A for-in loop variable can't be a 'const'.",
-          correction: "Try removing the 'const' modifier from the variable, or "
-              "use a different variable.",
-          hasPublishedDocs: true);
-
-  /**
-   * It is a compile-time error if a generic function type is used as a bound
-   * for a formal type parameter of a class or a function.
-   */
-  static const CompileTimeErrorCode GENERIC_FUNCTION_TYPE_CANNOT_BE_BOUND =
-      CompileTimeErrorCode('GENERIC_FUNCTION_TYPE_CANNOT_BE_BOUND',
-          "Generic function types can't be used as type parameter bounds",
-          correction: "Try making the free variable in the function type part "
-              "of the larger declaration signature");
-
-  /**
-   * It is a compile-time error if a generic function type is used as an actual
-   * type argument.
-   */
-  static const CompileTimeErrorCode
-      GENERIC_FUNCTION_TYPE_CANNOT_BE_TYPE_ARGUMENT = CompileTimeErrorCode(
-          'GENERIC_FUNCTION_TYPE_CANNOT_BE_TYPE_ARGUMENT',
-          "A generic function type can't be a type argument.",
-          correction: "Try removing type parameters from the generic function "
-              "type, or using 'dynamic' as the type argument here.");
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an instance method is being torn
-  // off from a receiver whose type is `dynamic`, and the tear-off includes type
-  // arguments. Because the analyzer can't know how many type parameters the
-  // method has, or whether it has any type parameters, there's no way it can
-  // validate that the type arguments are correct. As a result, the type
-  // arguments aren't allowed.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the type of `p` is
-  // `dynamic` and the tear-off of `m` has type arguments:
-  //
-  // ```dart
-  // void f(dynamic list) {
-  //   [!list.fold!]<int>;
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you can use a more specific type than `dynamic`, then change the type of
-  // the receiver:
-  //
-  // ```dart
-  // void f(List<Object> list) {
-  //   list.fold<int>;
-  // }
-  // ```
-  //
-  // If you can't use a more specific type, then remove the type arguments:
-  //
-  // ```dart
-  // void f(dynamic list) {
-  //   list.cast;
-  // }
-  // ```
-  static const CompileTimeErrorCode
-      GENERIC_METHOD_TYPE_INSTANTIATION_ON_DYNAMIC = CompileTimeErrorCode(
-    'GENERIC_METHOD_TYPE_INSTANTIATION_ON_DYNAMIC',
-    "A method tear-off on a receiver whose type is 'dynamic' can't have type "
-        "arguments.",
-    correction:
-        "Specify the type of the receiver, or remove the type arguments from "
-        "the method tear-off.",
-  );
-
-  /**
-   * Parameters:
-   * 0: the name of the getter
-   * 1: the type of the getter
-   * 2: the type of the setter
-   * 3: the name of the setter
-   */
-  static const CompileTimeErrorCode GETTER_NOT_ASSIGNABLE_SETTER_TYPES =
-      CompileTimeErrorCode(
-          'GETTER_NOT_ASSIGNABLE_SETTER_TYPES',
-          "The return type of getter '{0}' is '{1}' which isn't assignable "
-              "to the type '{2}' of its setter '{3}'.",
-          correction: "Try changing the types so that they are compatible.");
-
-  /**
-   * Parameters:
-   * 0: the name of the getter
-   * 1: the type of the getter
-   * 2: the type of the setter
-   * 3: the name of the setter
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the return type of a getter
-  // isn't a subtype of the type of the parameter of a setter with the same
-  // name.
-  //
-  // The subtype relationship is a requirement whether the getter and setter are
-  // in the same class or whether one of them is in a superclass of the other.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the return type of the
-  // getter `x` is `num`, the parameter type of the setter `x` is `int`, and
-  // `num` isn't a subtype of `int`:
-  //
-  // ```dart
-  // class C {
-  //   num get [!x!] => 0;
-  //
-  //   set x(int y) {}
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the type of the getter is correct, then change the type of the setter:
-  //
-  // ```dart
-  // class C {
-  //   num get x => 0;
-  //
-  //   set x(num y) {}
-  // }
-  // ```
-  //
-  // If the type of the setter is correct, then change the type of the getter:
-  //
-  // ```dart
-  // class C {
-  //   int get x => 0;
-  //
-  //   set x(int y) {}
-  // }
-  // ```
-  static const CompileTimeErrorCode GETTER_NOT_SUBTYPE_SETTER_TYPES =
-      CompileTimeErrorCode(
-          'GETTER_NOT_SUBTYPE_SETTER_TYPES',
-          "The return type of getter '{0}' is '{1}' which isn't a subtype "
-              "of the type '{2}' of its setter '{3}'.",
-          correction: "Try changing the types so that they are compatible.",
-          hasPublishedDocs: true);
-
-  static const CompileTimeErrorCode IF_ELEMENT_CONDITION_FROM_DEFERRED_LIBRARY =
-      CompileTimeErrorCode(
-          'IF_ELEMENT_CONDITION_FROM_DEFERRED_LIBRARY',
-          "Constant values from a deferred library can't be used as values in "
-              "an if condition inside a const collection literal.",
-          correction: "Try making the deferred import non-deferred.");
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the body of a function has the
-  // `async*` modifier even though the return type of the function isn't either
-  // `Stream` or a supertype of `Stream`.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the body of the
-  // function `f` has the 'async*' modifier even though the return type `int`
-  // isn't a supertype of `Stream`:
-  //
-  // ```dart
-  // [!int!] f() async* {}
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the function should be asynchronous, then change the return type to be
-  // either `Stream` or a supertype of `Stream`:
-  //
-  // ```dart
-  // Stream<int> f() async* {}
-  // ```
-  //
-  // If the function should be synchronous, then remove the `async*` modifier:
-  //
-  // ```dart
-  // int f() => 0;
-  // ```
-  static const CompileTimeErrorCode ILLEGAL_ASYNC_GENERATOR_RETURN_TYPE =
-      CompileTimeErrorCode(
-          'ILLEGAL_ASYNC_GENERATOR_RETURN_TYPE',
-          "Functions marked 'async*' must have a return type that is a "
-              "supertype of 'Stream<T>' for some type 'T'.",
-          correction: "Try fixing the return type of the function, or "
-              "removing the modifier 'async*' from the function body.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the body of a function has the
-  // `async` modifier even though the return type of the function isn't
-  // assignable to `Future`.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the body of the
-  // function `f` has the `async` modifier even though the return type isn't
-  // assignable to `Future`:
-  //
-  // ```dart
-  // [!int!] f() async {
-  //   return 0;
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the function should be asynchronous, then change the return type to be
-  // assignable to `Future`:
-  //
-  // ```dart
-  // Future<int> f() async {
-  //   return 0;
-  // }
-  // ```
-  //
-  // If the function should be synchronous, then remove the `async` modifier:
-  //
-  // ```dart
-  // int f() => 0;
-  // ```
-  static const CompileTimeErrorCode ILLEGAL_ASYNC_RETURN_TYPE =
-      CompileTimeErrorCode(
-          'ILLEGAL_ASYNC_RETURN_TYPE',
-          "Functions marked 'async' must have a return type assignable to "
-              "'Future'.",
-          correction: "Try fixing the return type of the function, or "
-              "removing the modifier 'async' from the function body.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the body of a function has the
-  // `sync*` modifier even though the return type of the function isn't either
-  // `Iterable` or a supertype of `Iterable`.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the body of the
-  // function `f` has the 'sync*' modifier even though the return type `int`
-  // isn't a supertype of `Iterable`:
-  //
-  // ```dart
-  // [!int!] f() sync* {}
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the function should return an iterable, then change the return type to
-  // be either `Iterable` or a supertype of `Iterable`:
-  //
-  // ```dart
-  // Iterable<int> f() sync* {}
-  // ```
-  //
-  // If the function should return a single value, then remove the `sync*`
-  // modifier:
-  //
-  // ```dart
-  // int f() => 0;
-  // ```
-  static const CompileTimeErrorCode ILLEGAL_SYNC_GENERATOR_RETURN_TYPE =
-      CompileTimeErrorCode(
-          'ILLEGAL_SYNC_GENERATOR_RETURN_TYPE',
-          "Functions marked 'sync*' must have a return type that is a "
-              "supertype of 'Iterable<T>' for some type 'T'.",
-          correction: "Try fixing the return type of the function, or "
-              "removing the modifier 'sync*' from the function body.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  static const CompileTimeErrorCode IMPLEMENTS_DEFERRED_CLASS =
-      CompileTimeErrorCode('SUBTYPE_OF_DEFERRED_CLASS',
-          "Classes and mixins can't implement deferred classes.",
-          correction: "Try specifying a different interface, "
-              "removing the class from the list, or "
-              "changing the import to not be deferred.",
-          hasPublishedDocs: true,
-          uniqueName: 'IMPLEMENTS_DEFERRED_CLASS');
-
-  /**
-   * Parameters:
-   * 0: the name of the disallowed type
-   */
-  static const CompileTimeErrorCode IMPLEMENTS_DISALLOWED_CLASS =
-      CompileTimeErrorCode(
-    'SUBTYPE_OF_DISALLOWED_TYPE',
-    "Classes and mixins can't implement '{0}'.",
-    correction: "Try specifying a different interface, or "
-        "remove the class from the list.",
-    hasPublishedDocs: true,
-    uniqueName: 'IMPLEMENTS_DISALLOWED_CLASS',
-  );
-
-  /**
-   * Parameters:
-   * 0: the name of the interface that was not found
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a name used in the `implements`
-  // clause of a class or mixin declaration is defined to be something other
-  // than a class or mixin.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `x` is a variable
-  // rather than a class or mixin:
-  //
-  // ```dart
-  // var x;
-  // class C implements [!x!] {}
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the name is the name of an existing class or mixin that's already being
-  // imported, then add a prefix to the import so that the local definition of
-  // the name doesn't shadow the imported name.
-  //
-  // If the name is the name of an existing class or mixin that isn't being
-  // imported, then add an import, with a prefix, for the library in which it’s
-  // declared.
-  //
-  // Otherwise, either replace the name in the `implements` clause with the name
-  // of an existing class or mixin, or remove the name from the `implements`
-  // clause.
-  static const CompileTimeErrorCode IMPLEMENTS_NON_CLASS = CompileTimeErrorCode(
-      'IMPLEMENTS_NON_CLASS',
-      "Classes and mixins can only implement other classes and mixins.",
-      correction:
-          "Try specifying a class or mixin, or remove the name from the "
-          "list.",
-      hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the interface that is implemented more than once
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a single class is specified more
-  // than once in an `implements` clause.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `A` is in the list
-  // twice:
-  //
-  // ```dart
-  // class A {}
-  // class B implements A, [!A!] {}
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Remove all except one occurrence of the class name:
-  //
-  // ```dart
-  // class A {}
-  // class B implements A {}
-  // ```
-  static const CompileTimeErrorCode IMPLEMENTS_REPEATED = CompileTimeErrorCode(
-      'IMPLEMENTS_REPEATED', "'{0}' can only be implemented once.",
-      correction: "Try removing all but one occurrence of the class name.",
-      hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the class that appears in both "extends" and "implements"
-   *    clauses
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when one class is listed in both the
-  // `extends` and `implements` clauses of another class.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the class `A` is used
-  // in both the `extends` and `implements` clauses for the class `B`:
-  //
-  // ```dart
-  // class A {}
-  //
-  // class B extends A implements [!A!] {}
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you want to inherit the implementation from the class, then remove the
-  // class from the `implements` clause:
-  //
-  // ```dart
-  // class A {}
-  //
-  // class B extends A {}
-  // ```
-  //
-  // If you don't want to inherit the implementation from the class, then remove
-  // the `extends` clause:
-  //
-  // ```dart
-  // class A {}
-  //
-  // class B implements A {}
-  // ```
-  static const CompileTimeErrorCode IMPLEMENTS_SUPER_CLASS =
-      CompileTimeErrorCode('IMPLEMENTS_SUPER_CLASS',
-          "'{0}' can't be used in both the 'extends' and 'implements' clauses.",
-          correction: "Try removing one of the occurrences.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  static const CompileTimeErrorCode
-      IMPLEMENTS_TYPE_ALIAS_EXPANDS_TO_TYPE_PARAMETER = CompileTimeErrorCode(
-          'SUPERTYPE_EXPANDS_TO_TYPE_PARAMETER',
-          "A type alias that expands to a type parameter can't be implemented.",
-          correction: "Try specifying a class or mixin, or removing the list.",
-          hasPublishedDocs: true,
-          uniqueName: 'IMPLEMENTS_TYPE_ALIAS_EXPANDS_TO_TYPE_PARAMETER');
-
-  /**
-   * Parameters:
-   * 0: the name of the instance member
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when it finds a reference to an
-  // instance member in a constructor's initializer list.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `defaultX` is an
-  // instance member:
-  //
-  // ```dart
-  // class C {
-  //   int x;
-  //
-  //   C() : x = [!defaultX!];
-  //
-  //   int get defaultX => 0;
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the member can be made static, then do so:
-  //
-  // ```dart
-  // class C {
-  //   int x;
-  //
-  //   C() : x = defaultX;
-  //
-  //   static int get defaultX => 0;
-  // }
-  // ```
-  //
-  // If not, then replace the reference in the initializer with a different
-  // expression that doesn't use an instance member:
-  //
-  // ```dart
-  // class C {
-  //   int x;
-  //
-  //   C() : x = 0;
-  //
-  //   int get defaultX => 0;
-  // }
-  // ```
-  static const CompileTimeErrorCode IMPLICIT_THIS_REFERENCE_IN_INITIALIZER =
-      CompileTimeErrorCode('IMPLICIT_THIS_REFERENCE_IN_INITIALIZER',
-          "The instance member '{0}' can't be accessed in an initializer.",
-          correction:
-              'Try replacing the reference to the instance member with a '
-              'different expression',
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the uri pointing to a library
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when it finds an import whose `dart:`
-  // URI references an internal library.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because `_interceptors` is an
-  // internal library:
-  //
-  // ```dart
-  // import [!'dart:_interceptors'!];
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Remove the import directive.
-  static const CompileTimeErrorCode IMPORT_INTERNAL_LIBRARY =
-      CompileTimeErrorCode('IMPORT_INTERNAL_LIBRARY',
-          "The library '{0}' is internal and can't be imported.",
-          hasPublishedDocs: true);
-
-  /**
-   * 14.1 Imports: It is a compile-time error if the specified URI of an
-   * immediate import does not refer to a library declaration.
-   *
-   * Parameters:
-   * 0: the uri pointing to a non-library declaration
-   */
-  static const CompileTimeErrorCode IMPORT_OF_NON_LIBRARY =
-      CompileTimeErrorCode('IMPORT_OF_NON_LIBRARY',
-          "The imported library '{0}' can't have a part-of directive.",
-          correction: "Try importing the library that the part is a part of.");
-
-  /**
-   * 13.9 Switch: It is a compile-time error if values of the expressions
-   * <i>e<sub>k</sub></i> are not instances of the same class <i>C</i>, for all
-   * <i>1 &lt;= k &lt;= n</i>.
-   *
-   * Parameters:
-   * 0: the expression source code that is the unexpected type
-   * 1: the name of the expected type
-   */
-  static const CompileTimeErrorCode INCONSISTENT_CASE_EXPRESSION_TYPES =
-      CompileTimeErrorCode('INCONSISTENT_CASE_EXPRESSION_TYPES',
-          "Case expressions must have the same types, '{0}' isn't a '{1}'.");
-
-  /**
-   * Parameters:
-   * 0: the name of the instance member with inconsistent inheritance.
-   * 1: the list of all inherited signatures for this member.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a class inherits two or more
-  // conflicting signatures for a member and doesn't provide an implementation
-  // that satisfies all the inherited signatures.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because `C` is inheriting the
-  // declaration of `m` from `A`, and that implementation isn't consistent with
-  // the signature of `m` that's inherited from `B`:
-  //
-  // ```dart
-  // %language=2.9
-  // class A {
-  //   void m({int a}) {}
-  // }
-  //
-  // class B {
-  //   void m({int b}) {}
-  // }
-  //
-  // class [!C!] extends A implements B {
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Add an implementation of the method that satisfies all the inherited
-  // signatures:
-  //
-  // ```dart
-  // %language=2.9
-  // class A {
-  //   void m({int a}) {}
-  // }
-  //
-  // class B {
-  //   void m({int b}) {}
-  // }
-  //
-  // class C extends A implements B {
-  //   void m({int a, int b}) {}
-  // }
-  // ```
-  static const CompileTimeErrorCode INCONSISTENT_INHERITANCE =
-      CompileTimeErrorCode('INCONSISTENT_INHERITANCE',
-          "Superinterfaces don't have a valid override for '{0}': {1}.",
-          correction:
-              "Try adding an explicit override that is consistent with all "
-              "of the inherited members.",
-          hasPublishedDocs: true);
-
-  /**
-   * 11.1.1 Inheritance and Overriding. Let `I` be the implicit interface of a
-   * class `C` declared in library `L`. `I` inherits all members of
-   * `inherited(I, L)` and `I` overrides `m'` if `m' ∈ overrides(I, L)`. It is
-   * a compile-time error if `m` is a method and `m'` is a getter, or if `m`
-   * is a getter and `m'` is a method.
-   *
-   * Parameters:
-   * 0: the name of the the instance member with inconsistent inheritance.
-   * 1: the name of the superinterface that declares the name as a getter.
-   * 2: the name of the superinterface that declares the name as a method.
-   */
-  static const CompileTimeErrorCode INCONSISTENT_INHERITANCE_GETTER_AND_METHOD =
-      CompileTimeErrorCode(
-          'INCONSISTENT_INHERITANCE_GETTER_AND_METHOD',
-          "'{0}' is inherited as a getter (from '{1}') and also a "
-              "method (from '{2}').",
-          correction:
-              "Try adjusting the supertypes of this class to remove the "
-              "inconsistency.");
-
-  /**
-   * It is a compile-time error if a part file has a different language version
-   * override than its library.
-   *
-   * https://github.com/dart-lang/language/blob/master/accepted/
-   * future-releases/language-versioning/feature-specification.md
-   * #individual-library-language-version-override
-   */
-  static const CompileTimeErrorCode INCONSISTENT_LANGUAGE_VERSION_OVERRIDE =
-      CompileTimeErrorCode(
-          'INCONSISTENT_LANGUAGE_VERSION_OVERRIDE',
-          "Parts must have exactly the same language version override as "
-              "the library.");
-
-  /**
-   * Parameters:
-   * 0: the name of the initializing formal that is not an instance variable in
-   *    the immediately enclosing class
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a constructor initializes a
-  // field that isn't declared in the class containing the constructor.
-  // Constructors can't initialize fields that aren't declared and fields that
-  // are inherited from superclasses.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because the initializer is
-  // initializing `x`, but `x` isn't a field in the class:
-  //
-  // ```dart
-  // %language=2.9
-  // class C {
-  //   int y;
-  //
-  //   C() : [!x = 0!];
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If a different field should be initialized, then change the name to the
-  // name of the field:
-  //
-  // ```dart
-  // %language=2.9
-  // class C {
-  //   int y;
-  //
-  //   C() : y = 0;
-  // }
-  // ```
-  //
-  // If the field must be declared, then add a declaration:
-  //
-  // ```dart
-  // %language=2.9
-  // class C {
-  //   int x;
-  //   int y;
-  //
-  //   C() : x = 0;
-  // }
-  // ```
-  static const CompileTimeErrorCode INITIALIZER_FOR_NON_EXISTENT_FIELD =
-      CompileTimeErrorCode('INITIALIZER_FOR_NON_EXISTENT_FIELD',
-          "'{0}' isn't a field in the enclosing class.",
-          correction: "Try correcting the name to match an existing field, or "
-              "defining a field named '{0}'.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the initializing formal that is a static variable in the
-   *    immediately enclosing class
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a static field is initialized in
-  // a constructor using either a field formal parameter or an assignment in the
-  // initializer list.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the static field `a` is
-  // being initialized by the field formal parameter `this.a`:
-  //
-  // ```dart
-  // class C {
-  //   static int? a;
-  //   C([!this.a!]);
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the field should be an instance field, then remove the keyword `static`:
-  //
-  // ```dart
-  // class C {
-  //   int? a;
-  //   C(this.a);
-  // }
-  // ```
-  //
-  // If you intended to initialize an instance field and typed the wrong name,
-  // then correct the name of the field being initialized:
-  //
-  // ```dart
-  // class C {
-  //   static int? a;
-  //   int? b;
-  //   C(this.b);
-  // }
-  // ```
-  //
-  // If you really want to initialize the static field, then move the
-  // initialization into the constructor body:
-  //
-  // ```dart
-  // class C {
-  //   static int? a;
-  //   C(int? c) {
-  //     a = c;
-  //   }
-  // }
-  // ```
-  static const CompileTimeErrorCode INITIALIZER_FOR_STATIC_FIELD =
-      CompileTimeErrorCode(
-          'INITIALIZER_FOR_STATIC_FIELD',
-          "'{0}' is a static field in the enclosing class. Fields initialized "
-              "in a constructor can't be static.",
-          correction: "Try removing the initialization.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the initializing formal that is not an instance variable in
-   *    the immediately enclosing class
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a field formal parameter is
-  // found in a constructor in a class that doesn't declare the field being
-  // initialized. Constructors can't initialize fields that aren't declared and
-  // fields that are inherited from superclasses.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because the field `x` isn't
-  // defined:
-  //
-  // ```dart
-  // %language=2.9
-  // class C {
-  //   int y;
-  //
-  //   C([!this.x!]);
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the field name was wrong, then change it to the name of an existing
-  // field:
-  //
-  // ```dart
-  // %language=2.9
-  // class C {
-  //   int y;
-  //
-  //   C(this.y);
-  // }
-  // ```
-  //
-  // If the field name is correct but hasn't yet been defined, then declare the
-  // field:
-  //
-  // ```dart
-  // %language=2.9
-  // class C {
-  //   int x;
-  //   int y;
-  //
-  //   C(this.x);
-  // }
-  // ```
-  //
-  // If the parameter is needed but shouldn't initialize a field, then convert
-  // it to a normal parameter and use it:
-  //
-  // ```dart
-  // %language=2.9
-  // class C {
-  //   int y;
-  //
-  //   C(int x) : y = x * 2;
-  // }
-  // ```
-  //
-  // If the parameter isn't needed, then remove it:
-  //
-  // ```dart
-  // %language=2.9
-  // class C {
-  //   int y;
-  //
-  //   C();
-  // }
-  // ```
-  static const CompileTimeErrorCode INITIALIZING_FORMAL_FOR_NON_EXISTENT_FIELD =
-      CompileTimeErrorCode('INITIALIZING_FORMAL_FOR_NON_EXISTENT_FIELD',
-          "'{0}' isn't a field in the enclosing class.",
-          correction: "Try correcting the name to match an existing field, or "
-              "defining a field named '{0}'.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the static member
-   * 1: the kind of the static member (field, getter, setter, or method)
-   * 2: the name of the defining class
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an access operator is used to
-  // access a static member through an instance of the class.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `zero` is a static
-  // field, but it’s being accessed as if it were an instance field:
-  //
-  // ```dart
-  // void f(C c) {
-  //   c.[!zero!];
-  // }
-  //
-  // class C {
-  //   static int zero = 0;
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Use the class to access the static member:
-  //
-  // ```dart
-  // void f(C c) {
-  //   C.zero;
-  // }
-  //
-  // class C {
-  //   static int zero = 0;
-  // }
-  // ```
-  static const CompileTimeErrorCode INSTANCE_ACCESS_TO_STATIC_MEMBER =
-      CompileTimeErrorCode('INSTANCE_ACCESS_TO_STATIC_MEMBER',
-          "Static {1} '{0}' can't be accessed through an instance.",
-          correction: "Try using the class '{2}' to access the {1}.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a factory constructor contains
-  // an unqualified reference to an instance member. In a generative
-  // constructor, the instance of the class is created and initialized before
-  // the body of the constructor is executed, so the instance can be bound to
-  // `this` and accessed just like it would be in an instance method. But, in a
-  // factory constructor, the instance isn't created before executing the body,
-  // so `this` can't be used to reference it.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `x` isn't in scope in
-  // the factory constructor:
-  //
-  // ```dart
-  // class C {
-  //   int x;
-  //   factory C() {
-  //     return C._([!x!]);
-  //   }
-  //   C._(this.x);
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Rewrite the code so that it doesn't reference the instance member:
-  //
-  // ```dart
-  // class C {
-  //   int x;
-  //   factory C() {
-  //     return C._(0);
-  //   }
-  //   C._(this.x);
-  // }
-  // ```
-  static const CompileTimeErrorCode INSTANCE_MEMBER_ACCESS_FROM_FACTORY =
-      CompileTimeErrorCode('INSTANCE_MEMBER_ACCESS_FROM_FACTORY',
-          "Instance members can't be accessed from a factory constructor.",
-          correction: "Try removing the reference to the instance member.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a static method contains an
-  // unqualified reference to an instance member.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because the instance field `x`
-  // is being referenced in a static method:
-  //
-  // ```dart
-  // %language=2.9
-  // class C {
-  //   int x;
-  //
-  //   static int m() {
-  //     return [!x!];
-  //   }
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the method must reference the instance member, then it can't be static,
-  // so remove the keyword:
-  //
-  // ```dart
-  // %language=2.9
-  // class C {
-  //   int x;
-  //
-  //   int m() {
-  //     return x;
-  //   }
-  // }
-  // ```
-  //
-  // If the method can't be made an instance method, then add a parameter so
-  // that an instance of the class can be passed in:
-  //
-  // ```dart
-  // %language=2.9
-  // class C {
-  //   int x;
-  //
-  //   static int m(C c) {
-  //     return c.x;
-  //   }
-  // }
-  // ```
-  static const CompileTimeErrorCode INSTANCE_MEMBER_ACCESS_FROM_STATIC =
-      CompileTimeErrorCode('INSTANCE_MEMBER_ACCESS_FROM_STATIC',
-          "Instance members can't be accessed from a static method.",
-          correction: "Try removing the reference to the instance member, or "
-              "removing the keyword 'static' from the method.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when it finds a constructor
-  // invocation and the constructor is declared in an abstract class. Even
-  // though you can't create an instance of an abstract class, abstract classes
-  // can declare constructors that can be invoked by subclasses.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `C` is an abstract
-  // class:
-  //
-  // ```dart
-  // abstract class C {}
-  //
-  // var c = new [!C!]();
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If there's a concrete subclass of the abstract class that can be used, then
-  // create an instance of the concrete subclass.
-  static const CompileTimeErrorCode INSTANTIATE_ABSTRACT_CLASS =
-      CompileTimeErrorCode('INSTANTIATE_ABSTRACT_CLASS',
-          "Abstract classes can't be instantiated.",
-          correction: "Try creating an instance of a concrete subtype.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an enum is instantiated. It's
-  // invalid to create an instance of an enum by invoking a constructor; only
-  // the instances named in the declaration of the enum can exist.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the enum `E` is being
-  // instantiated:
-  //
-  // ```dart
-  // enum E {a}
-  //
-  // var e = [!E!]();
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you intend to use an instance of the enum, then reference one of the
-  // constants defined in the enum:
-  //
-  // ```dart
-  // enum E {a}
-  //
-  // var e = E.a;
-  // ```
-  //
-  // If you intend to use an instance of a class, then use the name of that class in place of the name of the enum.
-  static const CompileTimeErrorCode INSTANTIATE_ENUM = CompileTimeErrorCode(
-      'INSTANTIATE_ENUM', "Enums can't be instantiated.",
-      correction: "Try using one of the defined constants.",
-      hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a constructor invocation is
-  // found where the type being instantiated is a type alias for one of the type
-  // parameters of the type alias. This isn’t allowed because the value of the
-  // type parameter is a type rather than a class.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because it creates an instance
-  // of `A`, even though `A` is a type alias that is defined to be equivalent to
-  // a type parameter:
-  //
-  // ```dart
-  // typedef A<T> = T;
-  //
-  // void f() {
-  //   const [!A!]<int>();
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Use either a class name or a type alias defined to be a class, rather than
-  // a type alias defined to be a type parameter:
-  //
-  // ```dart
-  // typedef A<T> = C<T>;
-  //
-  // void f() {
-  //   const A<int>();
-  // }
-  //
-  // class C<T> {
-  //   const C();
-  // }
-  // ```
-  static const CompileTimeErrorCode
-      INSTANTIATE_TYPE_ALIAS_EXPANDS_TO_TYPE_PARAMETER = CompileTimeErrorCode(
-          'INSTANTIATE_TYPE_ALIAS_EXPANDS_TO_TYPE_PARAMETER',
-          "Type aliases that expand to a type parameter can't be instantiated.",
-          correction: "Try replacing it with a class.");
-
-  /**
-   * Parameters:
-   * 0: the lexeme of the integer
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an integer literal is being
-  // implicitly converted to a double, but can't be represented as a 64-bit
-  // double without overflow or loss of precision. Integer literals are
-  // implicitly converted to a double if the context requires the type `double`.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the integer value
-  // `9223372036854775807` can't be represented exactly as a double:
-  //
-  // ```dart
-  // double x = [!9223372036854775807!];
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you need to use the exact value, then use the class `BigInt` to
-  // represent the value:
-  //
-  // ```dart
-  // var x = BigInt.parse('9223372036854775807');
-  // ```
-  //
-  // If you need to use a double, then change the value to one that can be
-  // represented exactly:
-  //
-  // ```dart
-  // double x = 9223372036854775808;
-  // ```
-  static const CompileTimeErrorCode INTEGER_LITERAL_IMPRECISE_AS_DOUBLE =
-      CompileTimeErrorCode(
-          'INTEGER_LITERAL_IMPRECISE_AS_DOUBLE',
-          "The integer literal is being used as a double, but can't be "
-              "represented as a 64-bit double without overflow or loss of "
-              "precision: '{0}'.",
-          correction:
-              "Try using the class 'BigInt', or switch to the closest valid "
-              "double: '{1}'.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an integer literal has a value
-  // that is too large (positive) or too small (negative) to be represented in a
-  // 64-bit word.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the value can't be
-  // represented in 64 bits:
-  //
-  // ```dart
-  // var x = [!9223372036854775810!];
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you need to represent the current value, then wrap it in an instance of
-  // the class `BigInt`:
-  //
-  // ```dart
-  // var x = BigInt.parse('9223372036854775810');
-  // ```
-  static const CompileTimeErrorCode INTEGER_LITERAL_OUT_OF_RANGE =
-      CompileTimeErrorCode('INTEGER_LITERAL_OUT_OF_RANGE',
-          "The integer literal {0} can't be represented in 64 bits.",
-          correction:
-              "Try using the 'BigInt' class if you need an integer larger than "
-              "9,223,372,036,854,775,807 or less than "
-              "-9,223,372,036,854,775,808.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an annotation is found that is
-  // using something that is neither a variable marked as `const` or the
-  // invocation of a `const` constructor.
-  //
-  // Getters can't be used as annotations.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the variable `v` isn't
-  // a `const` variable:
-  //
-  // ```dart
-  // var v = 0;
-  //
-  // [!@v!]
-  // void f() {
-  // }
-  // ```
-  //
-  // The following code produces this diagnostic because `f` isn't a variable:
-  //
-  // ```dart
-  // [!@f!]
-  // void f() {
-  // }
-  // ```
-  //
-  // The following code produces this diagnostic because `f` isn't a
-  // constructor:
-  //
-  // ```dart
-  // [!@f()!]
-  // void f() {
-  // }
-  // ```
-  //
-  // The following code produces this diagnostic because `g` is a getter:
-  //
-  // ```dart
-  // [!@g!]
-  // int get g => 0;
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the annotation is referencing a variable that isn't a `const`
-  // constructor, add the keyword `const` to the variable's declaration:
-  //
-  // ```dart
-  // const v = 0;
-  //
-  // @v
-  // void f() {
-  // }
-  // ```
-  //
-  // If the annotation isn't referencing a variable, then remove it:
-  //
-  // ```dart
-  // int v = 0;
-  //
-  // void f() {
-  // }
-  // ```
-  static const CompileTimeErrorCode INVALID_ANNOTATION = CompileTimeErrorCode(
-      'INVALID_ANNOTATION',
-      "Annotation must be either a const variable reference or const "
-          "constructor invocation.",
-      hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a constant defined in a library
-  // that is imported as a deferred library is referenced in the argument list
-  // of an annotation. Annotations are evaluated at compile time, and values
-  // from deferred libraries aren't available at compile time.
-  //
-  // For more information, see the language tour's coverage of
-  // [deferred loading](https://dart.dev/guides/language/language-tour#lazily-loading-a-library).
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the constant `pi` is
-  // being referenced in the argument list of an annotation, even though the
-  // library that defines it is being imported as a deferred library:
-  //
-  // ```dart
-  // import 'dart:math' deferred as math;
-  //
-  // class C {
-  //   const C(double d);
-  // }
-  //
-  // @C([!math.pi!])
-  // void f () {}
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you need to reference the imported constant, then remove the `deferred`
-  // keyword:
-  //
-  // ```dart
-  // import 'dart:math' as math;
-  //
-  // class C {
-  //   const C(double d);
-  // }
-  //
-  // @C(math.pi)
-  // void f () {}
-  // ```
-  //
-  // If the import is required to be deferred and there's another constant that
-  // is appropriate, then use that constant in place of the constant from the
-  // deferred library.
-  static const CompileTimeErrorCode
-      INVALID_ANNOTATION_CONSTANT_VALUE_FROM_DEFERRED_LIBRARY =
-      CompileTimeErrorCode(
-          'INVALID_ANNOTATION_CONSTANT_VALUE_FROM_DEFERRED_LIBRARY',
-          "Constant values from a deferred library can't be used in annotations.",
-          correction: "Try moving the constant from the deferred library,"
-              " or removing 'deferred' from the import.");
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a constant from a library that
-  // is imported using a deferred import is used as an annotation. Annotations
-  // are evaluated at compile time, and constants from deferred libraries aren't
-  // available at compile time.
-  //
-  // For more information, see the language tour's coverage of
-  // [deferred loading](https://dart.dev/guides/language/language-tour#lazily-loading-a-library).
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the constant `pi` is
-  // being used as an annotation when the library `dart:math` is imported as
-  // `deferred`:
-  //
-  // ```dart
-  // import 'dart:math' deferred as math;
-  //
-  // @[!math.pi!]
-  // void f() {}
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you need to reference the constant as an annotation, then remove the
-  // keyword `deferred` from the import:
-  //
-  // ```dart
-  // import 'dart:math' as math;
-  //
-  // @math.pi
-  // void f() {}
-  // ```
-  //
-  // If you can use a different constant as an annotation, then replace the
-  // annotation with a different constant:
-  //
-  // ```dart
-  // @deprecated
-  // void f() {}
-  // ```
-  static const CompileTimeErrorCode INVALID_ANNOTATION_FROM_DEFERRED_LIBRARY =
-      CompileTimeErrorCode(
-          'INVALID_ANNOTATION_FROM_DEFERRED_LIBRARY',
-          "Constant values from a deferred library can't be used as "
-              "annotations.",
-          correction: "Try removing the annotation, or "
-              "changing the import to not be deferred.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the right hand side type
-   * 1: the name of the left hand side type
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the static type of an expression
-  // that is assigned to a variable isn't assignable to the type of the
-  // variable.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because the type of the
-  // initializer (`int`) isn't assignable to the type of the variable
-  // (`String`):
-  //
-  // ```dart
-  // int i = 0;
-  // String s = [!i!];
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the value being assigned is always assignable at runtime, even though
-  // the static types don't reflect that, then add an explicit cast.
-  //
-  // Otherwise, change the value being assigned so that it has the expected
-  // type. In the previous example, this might look like:
-  //
-  // ```dart
-  // int i = 0;
-  // String s = i.toString();
-  // ```
-  //
-  // If you can’t change the value, then change the type of the variable to be
-  // compatible with the type of the value being assigned:
-  //
-  // ```dart
-  // int i = 0;
-  // int s = i;
-  // ```
-  static const CompileTimeErrorCode INVALID_ASSIGNMENT = CompileTimeErrorCode(
-      'INVALID_ASSIGNMENT',
-      "A value of type '{0}' can't be assigned to a variable of type "
-          "'{1}'.",
-      correction: "Try changing the type of the variable, or "
-          "casting the right-hand type to '{1}'.",
-      hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the type of the function
-   * 1: the expected function type
-   */
-  static const CompileTimeErrorCode INVALID_CAST_FUNCTION = CompileTimeErrorCode(
-      'INVALID_CAST_FUNCTION',
-      "The function '{0}' has type '{1}' that isn't of expected type "
-          "'{2}'. This means its parameter or return type doesn't match what "
-          "is expected.");
-
-  /**
-   * Parameters:
-   * 0: the type of the torn-off function expression
-   * 1: the expected function type
-   */
-  static const CompileTimeErrorCode INVALID_CAST_FUNCTION_EXPR =
-      CompileTimeErrorCode(
-          'INVALID_CAST_FUNCTION_EXPR',
-          "The function expression type '{0}' isn't of type '{1}'. "
-              "This means its parameter or return type doesn't match what is "
-              "expected. Consider changing parameter type(s) or the returned "
-              "type(s).");
-
-  /**
-   * Parameters:
-   * 0: the type of the literal
-   * 1: the expected type
-   */
-  static const CompileTimeErrorCode INVALID_CAST_LITERAL = CompileTimeErrorCode(
-      'INVALID_CAST_LITERAL',
-      "The literal '{0}' with type '{1}' isn't of expected type '{2}'.");
-
-  /**
-   * Parameters:
-   * 0: the type of the list literal
-   * 1: the expected type
-   */
-  static const CompileTimeErrorCode INVALID_CAST_LITERAL_LIST =
-      CompileTimeErrorCode(
-          'INVALID_CAST_LITERAL_LIST',
-          "The list literal type '{0}' isn't of expected type '{1}'. The "
-              "list's type can be changed with an explicit generic type "
-              "argument or by changing the element types.");
-
-  /**
-   * Parameters:
-   * 0: the type of the map literal
-   * 1: the expected type
-   */
-  static const CompileTimeErrorCode INVALID_CAST_LITERAL_MAP =
-      CompileTimeErrorCode(
-          'INVALID_CAST_LITERAL_MAP',
-          "The map literal type '{0}' isn't of expected type '{1}'. The maps's "
-              "type can be changed with an explicit generic type arguments or "
-              "by changing the key and value types.");
-
-  /**
-   * Parameters:
-   * 0: the type of the set literal
-   * 1: the expected type
-   */
-  static const CompileTimeErrorCode INVALID_CAST_LITERAL_SET =
-      CompileTimeErrorCode(
-          'INVALID_CAST_LITERAL_SET',
-          "The set literal type '{0}' isn't of expected type '{1}'. The set's "
-              "type can be changed with an explicit generic type argument or "
-              "by changing the element types.");
-
-  /**
-   * Parameters:
-   * 0: the type of the torn-off method
-   * 1: the expected function type
-   */
-  static const CompileTimeErrorCode INVALID_CAST_METHOD = CompileTimeErrorCode(
-      'INVALID_CAST_METHOD',
-      "The method tear-off '{0}' has type '{1}' that isn't of expected type "
-          "'{2}'. This means its parameter or return type doesn't match what "
-          "is expected.");
-
-  /**
-   * Parameters:
-   * 0: the type of the instantiated object
-   * 1: the expected type
-   */
-  static const CompileTimeErrorCode INVALID_CAST_NEW_EXPR = CompileTimeErrorCode(
-      'INVALID_CAST_NEW_EXPR',
-      "The constructor returns type '{0}' that isn't of expected type '{1}'.");
-
-  /**
-   * TODO(brianwilkerson) Remove this when we have decided on how to report
-   * errors in compile-time constants. Until then, this acts as a placeholder
-   * for more informative errors.
-   *
-   * See TODOs in ConstantVisitor
-   */
-  static const CompileTimeErrorCode INVALID_CONSTANT =
-      CompileTimeErrorCode('INVALID_CONSTANT', "Invalid constant value.");
-
-  /**
-   * 7.6 Constructors: It is a compile-time error if the name of a constructor
-   * is not a constructor name.
-   */
-  static const CompileTimeErrorCode INVALID_CONSTRUCTOR_NAME =
-      CompileTimeErrorCode(
-          'INVALID_CONSTRUCTOR_NAME', "Invalid constructor name.");
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an extension override doesn't
-  // have exactly one argument. The argument is the expression used to compute
-  // the value of `this` within the extension method, so there must be one
-  // argument.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because there are no arguments:
-  //
-  // ```dart
-  // extension E on String {
-  //   String join(String other) => '$this $other';
-  // }
-  //
-  // void f() {
-  //   E[!()!].join('b');
-  // }
-  // ```
-  //
-  // And, the following code produces this diagnostic because there's more than
-  // one argument:
-  //
-  // ```dart
-  // extension E on String {
-  //   String join(String other) => '$this $other';
-  // }
-  //
-  // void f() {
-  //   E[!('a', 'b')!].join('c');
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Provide one argument for the extension override:
-  //
-  // ```dart
-  // extension E on String {
-  //   String join(String other) => '$this $other';
-  // }
-  //
-  // void f() {
-  //   E('a').join('b');
-  // }
-  // ```
-  static const CompileTimeErrorCode INVALID_EXTENSION_ARGUMENT_COUNT =
-      CompileTimeErrorCode(
-          'INVALID_EXTENSION_ARGUMENT_COUNT',
-          "Extension overrides must have exactly one argument: "
-              "the value of 'this' in the extension method.",
-          correction: "Try specifying exactly one argument.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the name of a factory
-  // constructor isn't the same as the name of the surrounding class.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because the name of the factory
-  // constructor (`A`) isn't the same as the surrounding class (`C`):
-  //
-  // ```dart
-  // class A {}
-  //
-  // class C {
-  //   factory [!A!]() => throw 0;
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the factory returns an instance of the surrounding class, then rename
-  // the factory:
-  //
-  // ```dart
-  // class A {}
-  //
-  // class C {
-  //   factory C() => throw 0;
-  // }
-  // ```
-  //
-  // If the factory returns an instance of a different class, then move the
-  // factory to that class:
-  //
-  // ```dart
-  // class A {
-  //   factory A() => throw 0;
-  // }
-  //
-  // class C {}
-  // ```
-  //
-  // If the factory returns an instance of a different class, but you can't
-  // modify that class or don't want to move the factory, then convert it to be
-  // a static method:
-  //
-  // ```dart
-  // class A {}
-  //
-  // class C {
-  //   static A a() => throw 0;
-  // }
-  // ```
-  static const CompileTimeErrorCode INVALID_FACTORY_NAME_NOT_A_CLASS =
-      CompileTimeErrorCode(
-          'INVALID_FACTORY_NAME_NOT_A_CLASS',
-          "The name of a factory constructor must be the same as the name of "
-              "the immediately enclosing class.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the declared member that is not a valid override.
-   * 1: the name of the interface that declares the member.
-   * 2: the type of the declared member in the interface.
-   * 3. the name of the interface with the overridden member.
-   * 4. the type of the overridden member.
-   *
-   * These parameters must be kept in sync with those of
-   * [CompileTimeErrorCode.INVALID_OVERRIDE].
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when all of the following are true:
-  //
-  // - A class defines an abstract member.
-  // - There is a concrete implementation of that member in a superclass.
-  // - The concrete implementation isn't a valid implementation of the abstract
-  //   method.
-  //
-  // The concrete implementation can be invalid because of incompatibilities in
-  // either the return type, the types of parameters, or the type variables.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the method `A.add` has
-  // a parameter of type `int`, and the overriding method `B.add` has a
-  // corresponding parameter of type `num`:
-  //
-  // ```dart
-  // class A {
-  //   int add(int a) => a;
-  // }
-  // class [!B!] extends A {
-  //   int add(num a);
-  // }
-  // ```
-  //
-  // This is a problem because in an invocation of `B.add` like the following:
-  //
-  // ```dart
-  // void f(B b) {
-  //   b.add(3.4);
-  // }
-  // ```
-  //
-  // `B.add` is expecting to be able to take, for example, a `double`, but when
-  // the method `A.add` is executed (because it's the only concrete
-  // implementation of `add`), a runtime exception will be thrown because a
-  // `double` can't be assigned to a parameter of type `int`.
-  //
-  // #### Common fixes
-  //
-  // If the method in the subclass can conform to the implementation in the
-  // superclass, then change the declaration in the subclass (or remove it if
-  // it's the same):
-  //
-  // ```dart
-  // class A {
-  //   int add(int a) => a;
-  // }
-  // class B	extends A {
-  //   int add(int a);
-  // }
-  // ```
-  //
-  // If the method in the superclass can be generalized to be a valid
-  // implementation of the method in the subclass, then change the superclass
-  // method:
-  //
-  // ```dart
-  // class A {
-  //   int add(num a) => a.floor();
-  // }
-  // class B	extends A {
-  //   int add(num a);
-  // }
-  // ```
-  //
-  // If neither the method in the superclass nor the method in the subclass can
-  // be changed, then provide a concrete implementation of the method in the
-  // subclass:
-  //
-  // ```dart
-  // class A {
-  //   int add(int a) => a;
-  // }
-  // class B	extends A {
-  //   int add(num a) => a.floor();
-  // }
-  // ```
-  static const CompileTimeErrorCode INVALID_IMPLEMENTATION_OVERRIDE =
-      CompileTimeErrorCode(
-          'INVALID_IMPLEMENTATION_OVERRIDE',
-          "'{1}.{0}' ('{2}') isn't a valid concrete implementation of "
-              "'{3}.{0}' ('{4}').",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a generic function type has a
-  // function-valued parameter that is written using the older inline function
-  // type syntax.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the parameter `f`, in
-  // the generic function type used to define `F`, uses the inline function
-  // type syntax:
-  //
-  // ```dart
-  // typedef F = int Function(int f[!(!]String s));
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Use the generic function syntax for the parameter's type:
-  //
-  // ```dart
-  // typedef F = int Function(int Function(String));
-  // ```
-  static const CompileTimeErrorCode INVALID_INLINE_FUNCTION_TYPE =
-      CompileTimeErrorCode(
-          'INVALID_INLINE_FUNCTION_TYPE',
-          "Inline function types can't be used for parameters in a generic "
-              "function type.",
-          correction: "Try using a generic function type "
-              "(returnType 'Function(' parameters ')').",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the invalid modifier
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the body of a constructor is
-  // prefixed by one of the following modifiers: `async`, `async*`, or `sync*`.
-  // Constructor bodies must be synchronous.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the body of the
-  // constructor for `C` is marked as being `async`:
-  //
-  // ```dart
-  // class C {
-  //   C() [!async!] {}
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the constructor can be synchronous, then remove the modifier:
-  //
-  // ```dart
-  // class C {
-  //   C();
-  // }
-  // ```
-  //
-  // If the constructor can't be synchronous, then use a static method to create
-  // the instance instead:
-  //
-  // ```dart
-  // class C {
-  //   C();
-  //   static Future<C> c() async {
-  //     return C();
-  //   }
-  // }
-  // ```
-  static const CompileTimeErrorCode INVALID_MODIFIER_ON_CONSTRUCTOR =
-      CompileTimeErrorCode('INVALID_MODIFIER_ON_CONSTRUCTOR',
-          "The modifier '{0}' can't be applied to the body of a constructor.",
-          correction: "Try removing the modifier.", hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the invalid modifier
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the body of a setter is prefixed
-  // by one of the following modifiers: `async`, `async*`, or `sync*`. Setter
-  // bodies must be synchronous.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the body of the setter
-  // `x` is marked as being `async`:
-  //
-  // ```dart
-  // class C {
-  //   set x(int i) [!async!] {}
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the setter can be synchronous, then remove the modifier:
-  //
-  // ```dart
-  // class C {
-  //   set x(int i) {}
-  // }
-  // ```
-  //
-  // If the setter can't be synchronous, then use a method to set the value
-  // instead:
-  //
-  // ```dart
-  // class C {
-  //   void x(int i) async {}
-  // }
-  // ```
-  static const CompileTimeErrorCode INVALID_MODIFIER_ON_SETTER =
-      CompileTimeErrorCode('INVALID_MODIFIER_ON_SETTER',
-          "Setters can't use 'async', 'async*', or 'sync*'.",
-          correction: "Try removing the modifier.", hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the declared member that is not a valid override.
-   * 1: the name of the interface that declares the member.
-   * 2: the type of the declared member in the interface.
-   * 3. the name of the interface with the overridden member.
-   * 4. the type of the overridden member.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a member of a class is found
-  // that overrides a member from a supertype and the override isn't valid. An
-  // override is valid if all of these are true:
-  // * It allows all of the arguments allowed by the overridden member.
-  // * It doesn't require any arguments that aren't required by the overridden
-  //   member.
-  // * The type of every parameter of the overridden member is assignable to the
-  //   corresponding parameter of the override.
-  // * The return type of the override is assignable to the return type of the
-  //   overridden member.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because the type of the
-  // parameter `s` (`String`) isn't assignable to the type of the parameter `i`
-  // (`int`):
-  //
-  // ```dart
-  // class A {
-  //   void m(int i) {}
-  // }
-  //
-  // class B extends A {
-  //   void [!m!](String s) {}
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the invalid method is intended to override the method from the
-  // superclass, then change it to conform:
-  //
-  // ```dart
-  // class A {
-  //   void m(int i) {}
-  // }
-  //
-  // class B extends A {
-  //   void m(int i) {}
-  // }
-  // ```
-  //
-  // If it isn't intended to override the method from the superclass, then
-  // rename it:
-  //
-  // ```dart
-  // class A {
-  //   void m(int i) {}
-  // }
-  //
-  // class B extends A {
-  //   void m2(String s) {}
-  // }
-  // ```
-  static const CompileTimeErrorCode INVALID_OVERRIDE = CompileTimeErrorCode(
-      'INVALID_OVERRIDE',
-      "'{1}.{0}' ('{2}') isn't a valid override of '{3}.{0}' ('{4}').",
-      hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when `this` is used outside of an
-  // instance method or a generative constructor. The reserved word `this` is
-  // only defined in the context of an instance method or a generative
-  // constructor.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `v` is a top-level
-  // variable:
-  //
-  // ```dart
-  // C f() => [!this!];
-  //
-  // class C {}
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Use a variable of the appropriate type in place of `this`, declaring it if
-  // necessary:
-  //
-  // ```dart
-  // C f(C c) => c;
-  //
-  // class C {}
-  // ```
-  static const CompileTimeErrorCode INVALID_REFERENCE_TO_THIS =
-      CompileTimeErrorCode('INVALID_REFERENCE_TO_THIS',
-          "Invalid reference to 'this' expression.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the initializer list of a
-  // constructor contains an invocation of a constructor in the superclass, but
-  // the invocation isn't the last item in the initializer list.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the invocation of the
-  // superclass' constructor isn't the last item in the initializer list:
-  //
-  // ```dart
-  // class A {
-  //   A(int x);
-  // }
-  //
-  // class B extends A {
-  //   B(int x) : [!super!](x), assert(x >= 0);
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Move the invocation of the superclass' constructor to the end of the
-  // initializer list:
-  //
-  // ```dart
-  // class A {
-  //   A(int x);
-  // }
-  //
-  // class B extends A {
-  //   B(int x) : assert(x >= 0), super(x);
-  // }
-  // ```
-  static const CompileTimeErrorCode INVALID_SUPER_INVOCATION =
-      CompileTimeErrorCode('INVALID_SUPER_INVOCATION',
-          "The superclass call must be last in an initializer list: '{0}'.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the type parameter
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a type parameter is used as a
-  // type argument in a list, map, or set literal that is prefixed by `const`.
-  // This isn't allowed because the value of the type parameter (the actual type
-  // that will be used at runtime) can't be known at compile time.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the type parameter `T`
-  // is being used as a type argument when creating a constant list:
-  //
-  // ```dart
-  // List<T> newList<T>() => const <[!T!]>[];
-  // ```
-  //
-  // The following code produces this diagnostic because the type parameter `T`
-  // is being used as a type argument when creating a constant map:
-  //
-  // ```dart
-  // Map<String, T> newSet<T>() => const <String, [!T!]>{};
-  // ```
-  //
-  // The following code produces this diagnostic because the type parameter `T`
-  // is being used as a type argument when creating a constant set:
-  //
-  // ```dart
-  // Set<T> newSet<T>() => const <[!T!]>{};
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the type that will be used for the type parameter can be known at
-  // compile time, then remove the type parameter:
-  //
-  // ```dart
-  // List<int> newList() => const <int>[];
-  // ```
-  //
-  // If the type that will be used for the type parameter can't be known until
-  // runtime, then remove the keyword `const`:
-  //
-  // ```dart
-  // List<T> newList<T>() => <T>[];
-  // ```
-  static const CompileTimeErrorCode INVALID_TYPE_ARGUMENT_IN_CONST_LIST =
-      CompileTimeErrorCode(
-    'INVALID_TYPE_ARGUMENT_IN_CONST_LITERAL',
-    "Constant list literals can't include a type parameter as a type "
-        "argument, such as '{0}'.",
-    correction: "Try replacing the type parameter with a different type.",
-    hasPublishedDocs: true,
-    uniqueName: 'INVALID_TYPE_ARGUMENT_IN_CONST_LIST',
-  );
-
-  /**
-   * Parameters:
-   * 0: the name of the type parameter
-   */
-  static const CompileTimeErrorCode INVALID_TYPE_ARGUMENT_IN_CONST_MAP =
-      CompileTimeErrorCode(
-    'INVALID_TYPE_ARGUMENT_IN_CONST_LITERAL',
-    "Constant map literals can't include a type parameter as a type "
-        "argument, such as '{0}'.",
-    correction: "Try replacing the type parameter with a different type.",
-    hasPublishedDocs: true,
-    uniqueName: 'INVALID_TYPE_ARGUMENT_IN_CONST_MAP',
-  );
-
-  /**
-   * Parameters:
-   * 0: the name of the type parameter
-   */
-  static const CompileTimeErrorCode INVALID_TYPE_ARGUMENT_IN_CONST_SET =
-      CompileTimeErrorCode(
-    'INVALID_TYPE_ARGUMENT_IN_CONST_LITERAL',
-    "Constant set literals can't include a type parameter as a type "
-        "argument, such as '{0}'.",
-    correction: "Try replacing the type parameter with a different type.",
-    hasPublishedDocs: true,
-    uniqueName: 'INVALID_TYPE_ARGUMENT_IN_CONST_SET',
-  );
-
-  /**
-   * Parameters:
-   * 0: the URI that is invalid
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a URI in a directive doesn't
-  // conform to the syntax of a valid URI.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `'#'` isn't a valid
-  // URI:
-  //
-  // ```dart
-  // import [!'#'!];
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Replace the invalid URI with a valid URI.
-  static const CompileTimeErrorCode INVALID_URI = CompileTimeErrorCode(
-      'INVALID_URI', "Invalid URI syntax: '{0}'.",
-      hasPublishedDocs: true);
-
-  /**
-   * The 'covariant' keyword was found in an inappropriate location.
-   */
-  static const CompileTimeErrorCode INVALID_USE_OF_COVARIANT =
-      CompileTimeErrorCode(
-          'INVALID_USE_OF_COVARIANT',
-          "The 'covariant' keyword can only be used for parameters in instance "
-              "methods or before non-final instance fields.",
-          correction: "Try removing the 'covariant' keyword.");
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an expression whose value will
-  // always be `null` is dereferenced.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because `x` will always be
-  // `null`:
-  //
-  // ```dart
-  // int f(Null x) {
-  //   return [!x!].length;
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the value is allowed to be something other than `null`, then change the
-  // type of the expression:
-  //
-  // ```dart
-  // int f(String? x) {
-  //   return x!.length;
-  // }
-  // ```
-  static const CompileTimeErrorCode INVALID_USE_OF_NULL_VALUE =
-      CompileTimeErrorCode('INVALID_USE_OF_NULL_VALUE',
-          "An expression whose value is always 'null' can't be dereferenced.",
-          correction: "Try changing the type of the expression.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the extension
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an extension override is used to
-  // invoke a function but the extension doesn't declare a `call` method.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because the extension `E`
-  // doesn't define a `call` method:
-  //
-  // ```dart
-  // extension E on String {}
-  //
-  // void f() {
-  //   [!E('')!]();
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the extension is intended to define a `call` method, then declare it:
-  //
-  // ```dart
-  // extension E on String {
-  //   int call() => 0;
-  // }
-  //
-  // void f() {
-  //   E('')();
-  // }
-  // ```
-  //
-  // If the extended type defines a `call` method, then remove the extension
-  // override.
-  //
-  // If the `call` method isn't defined, then rewrite the code so that it
-  // doesn't invoke the `call` method.
-  static const CompileTimeErrorCode INVOCATION_OF_EXTENSION_WITHOUT_CALL =
-      CompileTimeErrorCode(
-          'INVOCATION_OF_EXTENSION_WITHOUT_CALL',
-          "The extension '{0}' doesn't define a 'call' method so the override "
-              "can't be used in an invocation.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the identifier that is not a function type
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when it finds a function invocation,
-  // but the name of the function being invoked is defined to be something other
-  // than a function.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `Binary` is the name of
-  // a function type, not a function:
-  //
-  // ```dart
-  // typedef Binary = int Function(int, int);
-  //
-  // int f() {
-  //   return [!Binary!](1, 2);
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Replace the name with the name of a function.
-  static const CompileTimeErrorCode INVOCATION_OF_NON_FUNCTION =
-      CompileTimeErrorCode(
-          'INVOCATION_OF_NON_FUNCTION', "'{0}' isn't a function.",
-          // TODO(brianwilkerson) Split this error code so that we can provide
-          // better error and correction messages.
-          correction:
-              "Try correcting the name to match an existing function, or "
-              "define a method or function named '{0}'.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a function invocation is found,
-  // but the name being referenced isn't the name of a function, or when the
-  // expression computing the function doesn't compute a function.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `x` isn't a function:
-  //
-  // ```dart
-  // int x = 0;
-  //
-  // int f() => x;
-  //
-  // var y = [!x!]();
-  // ```
-  //
-  // The following code produces this diagnostic because `f()` doesn't return a
-  // function:
-  //
-  // ```dart
-  // int x = 0;
-  //
-  // int f() => x;
-  //
-  // var y = [!f()!]();
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you need to invoke a function, then replace the code before the argument
-  // list with the name of a function or with an expression that computes a
-  // function:
-  //
-  // ```dart
-  // int x = 0;
-  //
-  // int f() => x;
-  //
-  // var y = f();
-  // ```
-  static const CompileTimeErrorCode INVOCATION_OF_NON_FUNCTION_EXPRESSION =
-      CompileTimeErrorCode(
-          'INVOCATION_OF_NON_FUNCTION_EXPRESSION',
-          "The expression doesn't evaluate to a function, so it can't be "
-              "invoked.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the unresolvable label
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a `break` or `continue`
-  // statement references a label that is declared in a method or function
-  // containing the function in which the `break` or `continue` statement
-  // appears. The `break` and `continue` statements can't be used to transfer
-  // control outside the function that contains them.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the label `loop` is
-  // declared outside the local function `g`:
-  //
-  // ```dart
-  // void f() {
-  //   loop:
-  //   while (true) {
-  //     void g() {
-  //       break [!loop!];
-  //     }
-  //
-  //     g();
-  //   }
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Try rewriting the code so that it isn't necessary to transfer control
-  // outside the local function, possibly by inlining the local function:
-  //
-  // ```dart
-  // void f() {
-  //   loop:
-  //   while (true) {
-  //     break loop;
-  //   }
-  // }
-  // ```
-  //
-  // If that isn't possible, then try rewriting the local function so that a
-  // value returned by the function can be used to determine whether control is
-  // transferred:
-  //
-  // ```dart
-  // void f() {
-  //   loop:
-  //   while (true) {
-  //     bool g() {
-  //       return true;
-  //     }
-  //
-  //     if (g()) {
-  //       break loop;
-  //     }
-  //   }
-  // }
-  // ```
-  static const CompileTimeErrorCode LABEL_IN_OUTER_SCOPE = CompileTimeErrorCode(
-      'LABEL_IN_OUTER_SCOPE',
-      "Can't reference label '{0}' declared in an outer method.",
-      hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the unresolvable label
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when it finds a reference to a label
-  // that isn't defined in the scope of the `break` or `continue` statement that
-  // is referencing it.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the label `loop` isn't
-  // defined anywhere:
-  //
-  // ```dart
-  // void f() {
-  //   for (int i = 0; i < 10; i++) {
-  //     for (int j = 0; j < 10; j++) {
-  //       break [!loop!];
-  //     }
-  //   }
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the label should be on the innermost enclosing `do`, `for`, `switch`, or
-  // `while` statement, then remove the label:
-  //
-  // ```dart
-  // void f() {
-  //   for (int i = 0; i < 10; i++) {
-  //     for (int j = 0; j < 10; j++) {
-  //       break;
-  //     }
-  //   }
-  // }
-  // ```
-  //
-  // If the label should be on some other statement, then add the label:
-  //
-  // ```dart
-  // void f() {
-  //   loop: for (int i = 0; i < 10; i++) {
-  //     for (int j = 0; j < 10; j++) {
-  //       break loop;
-  //     }
-  //   }
-  // }
-  // ```
-  static const CompileTimeErrorCode LABEL_UNDEFINED = CompileTimeErrorCode(
-      'LABEL_UNDEFINED', "Can't reference an undefined label '{0}'.",
-      correction: "Try defining the label, or "
-          "correcting the name to match an existing label.",
-      hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a class that has at least one
-  // `const` constructor also has a field marked both `late` and `final`.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the class `A` has a
-  // `const` constructor and the `final` field `f` is marked as `late`:
-  //
-  // ```dart
-  // class A {
-  //   [!late!] final int f;
-  //
-  //   const A();
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the field doesn't need to be marked `late`, then remove the `late`
-  // modifier from the field:
-  //
-  // ```dart
-  // class A {
-  //   final int f = 0;
-  //
-  //   const A();
-  // }
-  // ```
-  //
-  // If the field must be marked `late`, then remove the `const` modifier from
-  // the constructors:
-  //
-  // ```dart
-  // class A {
-  //   late final int f;
-  //
-  //   A();
-  // }
-  // ```
-  static const CompileTimeErrorCode LATE_FINAL_FIELD_WITH_CONST_CONSTRUCTOR =
-      CompileTimeErrorCode(
-          'LATE_FINAL_FIELD_WITH_CONST_CONSTRUCTOR',
-          "Can't have a late final field in a class with a generative "
-              "const constructor.",
-          correction: "Try removing the 'late' modifier, or don't declare "
-              "'const' constructors.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the analyzer can prove that a
-  // local variable marked as both `late` and `final` was already assigned a
-  // value at the point where another assignment occurs.
-  //
-  // Because `final` variables can only be assigned once, subsequent assignments
-  // are guaranteed to fail, so they're flagged.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the `final` variable
-  // `v` is assigned a value in two places:
-  //
-  // ```dart
-  // int f() {
-  //   late final int v;
-  //   v = 0;
-  //   [!v!] += 1;
-  //   return v;
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you need to be able to reassign the variable, then remove the `final`
-  // keyword:
-  //
-  // ```dart
-  // int f() {
-  //   late int v;
-  //   v = 0;
-  //   v += 1;
-  //   return v;
-  // }
-  // ```
-  //
-  // If you don't need to reassign the variable, then remove all except the
-  // first of the assignments:
-  //
-  // ```dart
-  // int f() {
-  //   late final int v;
-  //   v = 0;
-  //   return v;
-  // }
-  // ```
-  static const CompileTimeErrorCode LATE_FINAL_LOCAL_ALREADY_ASSIGNED =
-      CompileTimeErrorCode('LATE_FINAL_LOCAL_ALREADY_ASSIGNED',
-          "The late final local variable is already assigned.",
-          correction: "Try removing the 'final' modifier, or don't reassign "
-              "the value.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the actual type of the list element
-   * 1: the expected type of the list element
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the type of an element in a list
-  // literal isn't assignable to the element type of the list.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `2.5` is a double, and
-  // the list can hold only integers:
-  //
-  // ```dart
-  // List<int> x = [1, [!2.5!], 3];
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you intended to add a different object to the list, then replace the
-  // element with an expression that computes the intended object:
-  //
-  // ```dart
-  // List<int> x = [1, 2, 3];
-  // ```
-  //
-  // If the object shouldn't be in the list, then remove the element:
-  //
-  // ```dart
-  // List<int> x = [1, 3];
-  // ```
-  //
-  // If the object being computed is correct, then widen the element type of the
-  // list to allow all of the different types of objects it needs to contain:
-  //
-  // ```dart
-  // List<num> x = [1, 2.5, 3];
-  // ```
-  static const CompileTimeErrorCode LIST_ELEMENT_TYPE_NOT_ASSIGNABLE =
-      CompileTimeErrorCode('LIST_ELEMENT_TYPE_NOT_ASSIGNABLE',
-          "The element type '{0}' can't be assigned to the list type '{1}'.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the first positional parameter
-  // of a function named `main` isn't a supertype of `List<String>`.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because `List<int>` isn't a
-  // supertype of `List<String>`:
-  //
-  // ```dart
-  // void main([!List<int>!] args) {}
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the function is an entry point, then change the type of the first
-  // positional parameter to be a supertype of `List<String>`:
-  //
-  // ```dart
-  // void main(List<String> args) {}
-  // ```
-  //
-  // If the function isn't an entry point, then change the name of the function:
-  //
-  // ```dart
-  // void f(List<int> args) {}
-  // ```
-  static const CompileTimeErrorCode MAIN_FIRST_POSITIONAL_PARAMETER_TYPE =
-      CompileTimeErrorCode(
-    'MAIN_FIRST_POSITIONAL_PARAMETER_TYPE',
-    "The type of the first positional parameter of the 'main' function must be "
-        "a supertype of 'List<String>'.",
-    correction: "Try changing the type of the parameter.",
-    hasPublishedDocs: true,
-  );
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a function named `main` has one
-  // or more required named parameters.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the function named
-  // `main` has a required named parameter (`x`):
-  //
-  // ```dart
-  // void [!main!]({required int x}) {}
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the function is an entry point, then remove the `required` keyword:
-  //
-  // ```dart
-  // void main({int? x}) {}
-  // ```
-  //
-  // If the function isn't an entry point, then change the name of the function:
-  //
-  // ```dart
-  // void f({required int x}) {}
-  // ```
-  static const CompileTimeErrorCode MAIN_HAS_REQUIRED_NAMED_PARAMETERS =
-      CompileTimeErrorCode('MAIN_HAS_REQUIRED_NAMED_PARAMETERS',
-          "The function 'main' can't have any required named parameters.",
-          correction:
-              "Try using a different name for the function, or removing the "
-              "'required' modifier.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a function named `main` has more
-  // than two required positional parameters.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the function `main` has
-  // three required positional parameters:
-  //
-  // ```dart
-  // void [!main!](List<String> args, int x, int y) {}
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the function is an entry point and the extra parameters aren't used,
-  // then remove them:
-  //
-  // ```dart
-  // void main(List<String> args, int x) {}
-  // ```
-  //
-  // If the function is an entry point, but the extra parameters used are for
-  // when the function isn't being used as an entry point, then make the extra
-  // parameters optional:
-  //
-  // ```dart
-  // void main(List<String> args, int x, [int y = 0]) {}
-  // ```
-  //
-  // If the function isn't an entry point, then change the name of the function:
-  //
-  // ```dart
-  // void f(List<String> args, int x, int y) {}
-  // ```
-  static const CompileTimeErrorCode
-      MAIN_HAS_TOO_MANY_REQUIRED_POSITIONAL_PARAMETERS = CompileTimeErrorCode(
-          'MAIN_HAS_TOO_MANY_REQUIRED_POSITIONAL_PARAMETERS',
-          "The function 'main' can't have more than two required positional "
-              "parameters.",
-          correction:
-              "Try using a different name for the function, or removing extra "
-              "parameters.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a library contains a declaration
-  // of the name `main` that isn't the declaration of a top-level function.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the name `main` is
-  // being used to declare a top-level variable:
-  //
-  // ```dart
-  // var [!main!] = 3;
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Use a different name for the declaration:
-  //
-  // ```dart
-  // var mainIndex = 3;
-  // ```
-  static const CompileTimeErrorCode MAIN_IS_NOT_FUNCTION = CompileTimeErrorCode(
-      'MAIN_IS_NOT_FUNCTION',
-      "The declaration named 'main' must be a function.",
-      correction: "Try using a different name for this declaration.",
-      hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a map entry (a key/value pair)
-  // is found in a set literal.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because the literal has a map
-  // entry even though it's a set literal:
-  //
-  // ```dart
-  // const collection = <String>{[!'a' : 'b'!]};
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you intended for the collection to be a map, then change the code so
-  // that it is a map. In the previous example, you could do this by adding
-  // another type argument:
-  //
-  // ```dart
-  // const collection = <String, String>{'a' : 'b'};
-  // ```
-  //
-  // In other cases, you might need to change the explicit type from `Set` to
-  // `Map`.
-  //
-  // If you intended for the collection to be a set, then remove the map entry,
-  // possibly by replacing the colon with a comma if both values should be
-  // included in the set:
-  //
-  // ```dart
-  // const collection = <String>{'a', 'b'};
-  // ```
-  static const CompileTimeErrorCode MAP_ENTRY_NOT_IN_MAP = CompileTimeErrorCode(
-      'MAP_ENTRY_NOT_IN_MAP', "Map entries can only be used in a map literal.",
-      correction: "Try converting the collection to a map or removing the map "
-          "entry.",
-      hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the type of the expression being used as a key
-   * 1: the type of keys declared for the map
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a key of a key-value pair in a
-  // map literal has a type that isn't assignable to the key type of the map.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `2` is an `int`, but
-  // the keys of the map are required to be `String`s:
-  //
-  // ```dart
-  // var m = <String, String>{[!2!] : 'a'};
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the type of the map is correct, then change the key to have the correct
-  // type:
-  //
-  // ```dart
-  // var m = <String, String>{'2' : 'a'};
-  // ```
-  //
-  // If the type of the key is correct, then change the key type of the map:
-  //
-  // ```dart
-  // var m = <int, String>{2 : 'a'};
-  // ```
-  static const CompileTimeErrorCode MAP_KEY_TYPE_NOT_ASSIGNABLE =
-      CompileTimeErrorCode(
-          'MAP_KEY_TYPE_NOT_ASSIGNABLE',
-          "The element type '{0}' can't be assigned to the map key type "
-              "'{1}'.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the type of the expression being used as a value
-   * 1: the type of values declared for the map
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a value of a key-value pair in a
-  // map literal has a type that isn't assignable to the the value type of the
-  // map.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `2` is an `int`, but/
-  // the values of the map are required to be `String`s:
-  //
-  // ```dart
-  // var m = <String, String>{'a' : [!2!]};
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the type of the map is correct, then change the value to have the
-  // correct type:
-  //
-  // ```dart
-  // var m = <String, String>{'a' : '2'};
-  // ```
-  //
-  // If the type of the value is correct, then change the value type of the map:
-  //
-  // ```dart
-  // var m = <String, int>{'a' : 2};
-  // ```
-  static const CompileTimeErrorCode MAP_VALUE_TYPE_NOT_ASSIGNABLE =
-      CompileTimeErrorCode(
-          'MAP_VALUE_TYPE_NOT_ASSIGNABLE',
-          "The element type '{0}' can't be assigned to the map value type "
-              "'{1}'.",
-          hasPublishedDocs: true);
-
-  /**
-   * 12.1 Constants: A constant expression is ... a constant list literal.
-   */
-  static const CompileTimeErrorCode MISSING_CONST_IN_LIST_LITERAL =
-      CompileTimeErrorCode(
-          'MISSING_CONST_IN_LIST_LITERAL',
-          "List literals must be prefixed with 'const' when used as a constant "
-              "expression.",
-          correction: "Try adding the keyword 'const' before the literal.");
-
-  /**
-   * 12.1 Constants: A constant expression is ... a constant map literal.
-   */
-  static const CompileTimeErrorCode MISSING_CONST_IN_MAP_LITERAL =
-      CompileTimeErrorCode(
-          'MISSING_CONST_IN_MAP_LITERAL',
-          "Map literals must be prefixed with 'const' when used as a constant "
-              "expression.",
-          correction: "Try adding the keyword 'const' before the literal.");
-
-  /**
-   * 12.1 Constants: A constant expression is ... a constant set literal.
-   */
-  static const CompileTimeErrorCode MISSING_CONST_IN_SET_LITERAL =
-      CompileTimeErrorCode(
-          'MISSING_CONST_IN_SET_LITERAL',
-          "Set literals must be prefixed with 'const' when used as a constant "
-              "expression.",
-          correction: "Try adding the keyword 'const' before the literal.");
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when either the Dart or Flutter SDK
-  // isn’t installed correctly, and, as a result, one of the `dart:` libraries
-  // can't be found.
-  //
-  // #### Common fixes
-  //
-  // Reinstall the Dart or Flutter SDK.
-  static const CompileTimeErrorCode MISSING_DART_LIBRARY = CompileTimeErrorCode(
-      'MISSING_DART_LIBRARY', "Required library '{0}' is missing.",
-      correction: "Re-install the Dart or Flutter SDK.",
-      hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an optional parameter, whether
-  // positional or named, has a [potentially non-nullable][] type and doesn't
-  // specify a default value. Optional parameters that have no explicit default
-  // value have an implicit default value of `null`. If the type of the
-  // parameter doesn't allow the parameter to have a value of `null`, then the
-  // implicit default value isn't valid.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because `x` can't be `null`,
-  // and no non-`null` default value is specified:
-  //
-  // ```dart
-  // void f([int [!x!]]) {}
-  // ```
-  //
-  // As does this:
-  //
-  // ```dart
-  // void g({int [!x!]}) {}
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you want to use `null` to indicate that no value was provided, then you
-  // need to make the type nullable:
-  //
-  // ```dart
-  // void f([int? x]) {}
-  // void g({int? x}) {}
-  // ```
-  //
-  // If the parameter can't be null, then either provide a default value:
-  //
-  // ```dart
-  // void f([int x = 1]) {}
-  // void g({int x = 2}) {}
-  // ```
-  //
-  // or make the parameter a required parameter:
-  //
-  // ```dart
-  // void f(int x) {}
-  // void g({required int x}) {}
-  // ```
-  static const CompileTimeErrorCode MISSING_DEFAULT_VALUE_FOR_PARAMETER =
-      CompileTimeErrorCode(
-          'MISSING_DEFAULT_VALUE_FOR_PARAMETER',
-          "The parameter '{0}' can't have a value of 'null' because of its "
-              "type, but the implicit default value is 'null'.",
-          correction:
-              "Try adding either an explicit non-'null' default value or the "
-              "'required' modifier.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the parameter
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an invocation of a function is
-  // missing a required named parameter.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the invocation of `f`
-  // doesn't include a value for the required named parameter `end`:
-  //
-  // ```dart
-  // void f(int start, {required int end}) {}
-  // void g() {
-  //   [!f!](3);
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Add a named argument corresponding to the missing required parameter:
-  //
-  // ```dart
-  // void f(int start, {required int end}) {}
-  // void g() {
-  //   f(3, end: 5);
-  // }
-  // ```
-  static const CompileTimeErrorCode MISSING_REQUIRED_ARGUMENT =
-      CompileTimeErrorCode(
-          'MISSING_REQUIRED_ARGUMENT',
-          "The named parameter '{0}' is required, but there's no corresponding "
-              "argument.",
-          correction: "Try adding the required argument.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the super-invoked member
-   * 1: the display name of the type of the super-invoked member in the mixin
-   * 2: the display name of the type of the concrete member in the class
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a mixin that invokes a method
-  // using `super` is used in a class where the concrete implementation of that
-  // method has a different signature than the signature defined for that method
-  // by the mixin's `on` type. The reason this is an error is because the
-  // invocation in the mixin might invoke the method in a way that's
-  // incompatible with the method that will actually be executed.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the class `C` uses the
-  // mixin `M`, the mixin `M` invokes `foo` using `super`, and the abstract
-  // version of `foo` declared in `I` (the mixin's `on` type) doesn't have the
-  // same signature as the concrete version of `foo` declared in `A`:
-  //
-  // ```dart
-  // class I {
-  //   void foo([int? p]) {}
-  // }
-  //
-  // class A {
-  //   void foo(int p) {}
-  // }
-  //
-  // abstract class B extends A implements I {
-  //   @override
-  //   void foo([int? p]);
-  // }
-  //
-  // mixin M on I {
-  //   void bar() {
-  //     super.foo(42);
-  //   }
-  // }
-  //
-  // abstract class C extends B with [!M!] {}
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the class doesn't need to use the mixin, then remove it from the `with`
-  // clause:
-  //
-  // ```dart
-  // class I {
-  //   void foo([int? p]) {}
-  // }
-  //
-  // class A {
-  //   void foo(int? p) {}
-  // }
-  //
-  // abstract class B extends A implements I {
-  //   @override
-  //   void foo([int? p]);
-  // }
-  //
-  // mixin M on I {
-  //   void bar() {
-  //     super.foo(42);
-  //   }
-  // }
-  //
-  // abstract class C extends B {}
-  // ```
-  //
-  // If the class needs to use the mixin, then ensure that there's a concrete
-  // implementation of the method that conforms to the signature expected by the
-  // mixin:
-  //
-  // ```dart
-  // class I {
-  //   void foo([int? p]) {}
-  // }
-  //
-  // class A {
-  //   void foo(int? p) {}
-  // }
-  //
-  // abstract class B extends A implements I {
-  //   @override
-  //   void foo([int? p]) {
-  //     super.foo(p);
-  //   }
-  // }
-  //
-  // mixin M on I {
-  //   void bar() {
-  //     super.foo(42);
-  //   }
-  // }
-  //
-  // abstract class C extends B with M {}
-  // ```
-  static const CompileTimeErrorCode
-      MIXIN_APPLICATION_CONCRETE_SUPER_INVOKED_MEMBER_TYPE =
-      CompileTimeErrorCode(
-          'MIXIN_APPLICATION_CONCRETE_SUPER_INVOKED_MEMBER_TYPE',
-          "The super-invoked member '{0}' has the type '{1}', and the concrete "
-              "member in the class has the type '{2}'.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the display name of the member without a concrete implementation
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a [mixin application][] contains
-  // an invocation of a member from its superclass, and there's no concrete
-  // member of that name in the mixin application's superclass.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the mixin `M` contains
-  // the invocation `super.m()`, and the class `A`, which is the superclass of
-  // the [mixin application][] `A+M`, doesn't define a concrete implementation
-  // of `m`:
-  //
-  // ```dart
-  // abstract class A {
-  //   void m();
-  // }
-  //
-  // mixin M on A {
-  //   void bar() {
-  //     super.m();
-  //   }
-  // }
-  //
-  // abstract class B extends A with [!M!] {}
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you intended to apply the mixin `M` to a different class, one that has a
-  // concrete implementation of `m`, then change the superclass of `B` to that
-  // class:
-  //
-  // ```dart
-  // abstract class A {
-  //   void m();
-  // }
-  //
-  // mixin M on A {
-  //   void bar() {
-  //     super.m();
-  //   }
-  // }
-  //
-  // class C implements A {
-  //   void m() {}
-  // }
-  //
-  // abstract class B extends C with M {}
-  // ```
-  //
-  // If you need to make `B` a subclass of `A`, then add a concrete
-  // implementation of `m` in `A`:
-  //
-  // ```dart
-  // abstract class A {
-  //   void m() {}
-  // }
-  //
-  // mixin M on A {
-  //   void bar() {
-  //     super.m();
-  //   }
-  // }
-  //
-  // abstract class B extends A with M {}
-  // ```
-  static const CompileTimeErrorCode
-      MIXIN_APPLICATION_NO_CONCRETE_SUPER_INVOKED_MEMBER = CompileTimeErrorCode(
-          'MIXIN_APPLICATION_NO_CONCRETE_SUPER_INVOKED_MEMBER',
-          "The class doesn't have a concrete implementation of the "
-              "super-invoked member '{0}'.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the display name of the mixin
-   * 1: the display name of the superclass
-   * 2: the display name of the type that is not implemented
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a mixin that has a superclass
-  // constraint is used in a [mixin application][] with a superclass that
-  // doesn't implement the required constraint.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the mixin `M` requires
-  // that the class to which it's applied be a subclass of `A`, but `Object`
-  // isn't a subclass of `A`:
-  //
-  // ```dart
-  // class A {}
-  //
-  // mixin M on A {}
-  //
-  // class X = Object with [!M!];
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you need to use the mixin, then change the superclass to be either the
-  // same as or a subclass of the superclass constraint:
-  //
-  // ```dart
-  // class A {}
-  //
-  // mixin M on A {}
-  //
-  // class X = A with M;
-  // ```
-  static const CompileTimeErrorCode
-      MIXIN_APPLICATION_NOT_IMPLEMENTED_INTERFACE = CompileTimeErrorCode(
-          'MIXIN_APPLICATION_NOT_IMPLEMENTED_INTERFACE',
-          "'{0}' can't be mixed onto '{1}' because '{1}' doesn't implement "
-              "'{2}'.",
-          correction: "Try extending the class '{0}'.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the mixin that is invalid
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a class is used as a mixin and
-  // the mixed-in class defines a constructor.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the class `A`, which
-  // defines a constructor, is being used as a mixin:
-  //
-  // ```dart
-  // class A {
-  //   A();
-  // }
-  //
-  // class B with [!A!] {}
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If it's possible to convert the class to a mixin, then do so:
-  //
-  // ```dart
-  // mixin A {
-  // }
-  //
-  // class B with A {}
-  // ```
-  //
-  // If the class can't be a mixin and it's possible to remove the constructor,
-  // then do so:
-  //
-  // ```dart
-  // class A {
-  // }
-  //
-  // class B with A {}
-  // ```
-  //
-  // If the class can't be a mixin and you can't remove the constructor, then
-  // try extending or implementing the class rather than mixing it in:
-  //
-  // ```dart
-  // class A {
-  //   A();
-  // }
-  //
-  // class B extends A {}
-  // ```
-  static const CompileTimeErrorCode MIXIN_CLASS_DECLARES_CONSTRUCTOR =
-      CompileTimeErrorCode(
-          'MIXIN_CLASS_DECLARES_CONSTRUCTOR',
-          "The class '{0}' can't be used as a mixin because it declares a "
-              "constructor.",
-          hasPublishedDocs: true);
-
-  /**
-   * The <i>mixinMember</i> production allows the same instance or static
-   * members that a class would allow, but no constructors (for now).
-   */
-  static const CompileTimeErrorCode MIXIN_DECLARES_CONSTRUCTOR =
-      CompileTimeErrorCode(
-          'MIXIN_DECLARES_CONSTRUCTOR', "Mixins can't declare constructors.");
-
-  /**
-   * No parameters.
-   */
-  static const CompileTimeErrorCode MIXIN_DEFERRED_CLASS = CompileTimeErrorCode(
-      'SUBTYPE_OF_DEFERRED_CLASS', "Classes can't mixin deferred classes.",
-      correction: "Try changing the import to not be deferred.",
-      hasPublishedDocs: true,
-      uniqueName: 'MIXIN_DEFERRED_CLASS');
-
-  static const CompileTimeErrorCode
-      MIXIN_INFERENCE_INCONSISTENT_MATCHING_CLASSES = CompileTimeErrorCode(
-          'MIXIN_INFERENCE_INCONSISTENT_MATCHING_CLASSES',
-          "Type parameters couldn't be inferred for the mixin '{0}' because "
-              "the base class implements the mixin's supertype constraint "
-              "'{1}' in multiple conflicting ways");
-
-  static const CompileTimeErrorCode MIXIN_INFERENCE_NO_MATCHING_CLASS =
-      CompileTimeErrorCode(
-          'MIXIN_INFERENCE_NO_MATCHING_CLASS',
-          "Type parameters couldn't be inferred for the mixin '{0}' because "
-              "the base class doesn't implement the mixin's supertype "
-              "constraint '{1}'");
-
-  static const CompileTimeErrorCode MIXIN_INFERENCE_NO_POSSIBLE_SUBSTITUTION =
-      CompileTimeErrorCode(
-          'MIXIN_INFERENCE_NO_POSSIBLE_SUBSTITUTION',
-          "Type parameters couldn't be inferred for the mixin '{0}' because "
-              "no type parameter substitution could be found matching the "
-              "mixin's supertype constraints");
-
-  /**
-   * Parameters:
-   * 0: the name of the mixin that is invalid
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a class that extends a class
-  // other than `Object` is used as a mixin.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the class `B`, which
-  // extends `A`, is being used as a mixin by `C`:
-  //
-  // ```dart
-  // class A {}
-  //
-  // class B extends A {}
-  //
-  // class C with [!B!] {}
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the class being used as a mixin can be changed to extend `Object`, then
-  // change it:
-  //
-  // ```dart
-  // class A {}
-  //
-  // class B {}
-  //
-  // class C with B {}
-  // ```
-  //
-  // If the class being used as a mixin can't be changed and the class that's
-  // using it extends `Object`, then extend the class being used as a mixin:
-  //
-  // ```dart
-  // class A {}
-  //
-  // class B extends A {}
-  //
-  // class C extends B {}
-  // ```
-  //
-  // If the class doesn't extend `Object` or if you want to be able to mix in
-  // the behavior from `B` in other places, then create a real mixin:
-  //
-  // ```dart
-  // class A {}
-  //
-  // mixin M on A {}
-  //
-  // class B extends A with M {}
-  //
-  // class C extends A with M {}
-  // ```
-  static const CompileTimeErrorCode MIXIN_INHERITS_FROM_NOT_OBJECT =
-      CompileTimeErrorCode(
-          'MIXIN_INHERITS_FROM_NOT_OBJECT',
-          "The class '{0}' can't be used as a mixin because it extends a class "
-              "other than 'Object'.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a mixin is instantiated.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the mixin `M` is being
-  // instantiated:
-  //
-  // ```dart
-  // mixin M {}
-  //
-  // var m = [!M!]();
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you intend to use an instance of a class, then use the name of that
-  // class in place of the name of the mixin.
-  static const CompileTimeErrorCode MIXIN_INSTANTIATE = CompileTimeErrorCode(
-      'MIXIN_INSTANTIATE', "Mixins can't be instantiated.",
-      hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the disallowed type
-   */
-  static const CompileTimeErrorCode MIXIN_OF_DISALLOWED_CLASS =
-      CompileTimeErrorCode(
-    'SUBTYPE_OF_DISALLOWED_TYPE',
-    "Classes can't mixin '{0}'.",
-    correction: "Try specifying a different class or mixin, or "
-        "remove the class or mixin from the list.",
-    hasPublishedDocs: true,
-    uniqueName: 'MIXIN_OF_DISALLOWED_CLASS',
-  );
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a name in a `with` clause is
-  // defined to be something other than a mixin or a class.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `F` is defined to be a
-  // function type:
-  //
-  // ```dart
-  // typedef F = int Function(String);
-  //
-  // class C with [!F!] {}
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Remove the invalid name from the list, possibly replacing it with the name
-  // of the intended mixin or class:
-  //
-  // ```dart
-  // typedef F = int Function(String);
-  //
-  // class C {}
-  // ```
-  static const CompileTimeErrorCode MIXIN_OF_NON_CLASS = CompileTimeErrorCode(
-      'MIXIN_OF_NON_CLASS', "Classes can only mix in mixins and classes.",
-      hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  static const CompileTimeErrorCode
-      MIXIN_OF_TYPE_ALIAS_EXPANDS_TO_TYPE_PARAMETER = CompileTimeErrorCode(
-          'SUPERTYPE_EXPANDS_TO_TYPE_PARAMETER',
-          "A type alias that expands to a type parameter can't be mixed in.",
-          hasPublishedDocs: true,
-          uniqueName: 'MIXIN_OF_TYPE_ALIAS_EXPANDS_TO_TYPE_PARAMETER');
-
-  /**
-   * No parameters.
-   */
-  static const CompileTimeErrorCode
-      MIXIN_ON_TYPE_ALIAS_EXPANDS_TO_TYPE_PARAMETER = CompileTimeErrorCode(
-          'SUPERTYPE_EXPANDS_TO_TYPE_PARAMETER',
-          "A type alias that expands to a type parameter can't be used as a "
-              "superclass constraint.",
-          hasPublishedDocs: true,
-          uniqueName: 'MIXIN_ON_TYPE_ALIAS_EXPANDS_TO_TYPE_PARAMETER');
-
-  /**
-   * No parameters.
-   */
-  static const CompileTimeErrorCode
-      MIXIN_SUPER_CLASS_CONSTRAINT_DEFERRED_CLASS = CompileTimeErrorCode(
-          'MIXIN_SUPER_CLASS_CONSTRAINT_DEFERRED_CLASS',
-          "Deferred classes can't be used as super-class constraints.",
-          correction: "Try changing the import to not be deferred.");
-
-  /**
-   * Parameters:
-   * 0: the name of the disallowed type
-   */
-  static const CompileTimeErrorCode
-      MIXIN_SUPER_CLASS_CONSTRAINT_DISALLOWED_CLASS = CompileTimeErrorCode(
-    'SUBTYPE_OF_DISALLOWED_TYPE',
-    "''{0}' can't be used as a superclass constraint.",
-    correction: "Try specifying a different super-class constraint, or "
-        "remove the 'on' clause.",
-    hasPublishedDocs: true,
-    uniqueName: 'MIXIN_SUPER_CLASS_CONSTRAINT_DISALLOWED_CLASS',
-  );
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a type following the `on`
-  // keyword in a mixin declaration is neither a class nor a mixin.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `F` is neither a class
-  // nor a mixin:
-  //
-  // ```dart
-  // typedef F = void Function();
-  //
-  // mixin M on [!F!] {}
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the type was intended to be a class but was mistyped, then replace the
-  // name.
-  //
-  // Otherwise, remove the type from the `on` clause.
-  static const CompileTimeErrorCode MIXIN_SUPER_CLASS_CONSTRAINT_NON_INTERFACE =
-      CompileTimeErrorCode('MIXIN_SUPER_CLASS_CONSTRAINT_NON_INTERFACE',
-          "Only classes and mixins can be used as superclass constraints.",
-          hasPublishedDocs: true);
-
-  /**
-   * 9.1 Mixin Application: It is a compile-time error if <i>S</i> does not
-   * denote a class available in the immediately enclosing scope.
-   */
-  static const CompileTimeErrorCode MIXIN_WITH_NON_CLASS_SUPERCLASS =
-      CompileTimeErrorCode('MIXIN_WITH_NON_CLASS_SUPERCLASS',
-          "Mixin can only be applied to class.");
-
-  /**
-   * Technically this is [IMPLEMENTS_SUPER_CLASS].
-   * See https://github.com/dart-lang/sdk/issues/25765#issuecomment-307422593
-   *
-   * Parameters:
-   * 0: the name of the class that appears in both "extends" and "with" clauses
-   */
-  static const CompileTimeErrorCode MIXINS_SUPER_CLASS = CompileTimeErrorCode(
-      'MIXINS_SUPER_CLASS',
-      "'{0}' can't be used in both 'extends' and 'with' clauses.",
-      correction: "Try removing one of the occurrences.");
-
-  /**
-   * 7.6.1 Generative Constructors: A generative constructor may be redirecting,
-   * in which case its only action is to invoke another generative constructor.
-   */
-  static const CompileTimeErrorCode
-      MULTIPLE_REDIRECTING_CONSTRUCTOR_INVOCATIONS = CompileTimeErrorCode(
-          'MULTIPLE_REDIRECTING_CONSTRUCTOR_INVOCATIONS',
-          "Constructors can have at most one 'this' redirection.",
-          correction: "Try removing all but one of the redirections.");
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the initializer list of a
-  // constructor contains more than one invocation of a constructor from the
-  // superclass. The initializer list is required to have exactly one such call,
-  // which can either be explicit or implicit.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the initializer list
-  // for `B`’s constructor invokes both the constructor `one` and the
-  // constructor `two` from the superclass `A`:
-  //
-  // ```dart
-  // class A {
-  //   int? x;
-  //   String? s;
-  //   A.one(this.x);
-  //   A.two(this.s);
-  // }
-  //
-  // class B extends A {
-  //   B() : super.one(0), [!super.two('')!];
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If one of the super constructors will initialize the instance fully, then
-  // remove the other:
-  //
-  // ```dart
-  // class A {
-  //   int? x;
-  //   String? s;
-  //   A.one(this.x);
-  //   A.two(this.s);
-  // }
-  //
-  // class B extends A {
-  //   B() : super.one(0);
-  // }
-  // ```
-  //
-  // If the initialization achieved by one of the super constructors can be
-  // performed in the body of the constructor, then remove its super invocation
-  // and perform the initialization in the body:
-  //
-  // ```dart
-  // class A {
-  //   int? x;
-  //   String? s;
-  //   A.one(this.x);
-  //   A.two(this.s);
-  // }
-  //
-  // class B extends A {
-  //   B() : super.one(0) {
-  //     s = '';
-  //   }
-  // }
-  // ```
-  //
-  // If the initialization can only be performed in a constructor in the
-  // superclass, then either add a new constructor or modify one of the existing
-  // constructors so there's a constructor that allows all the required
-  // initialization to occur in a single call:
-  //
-  // ```dart
-  // class A {
-  //   int? x;
-  //   String? s;
-  //   A.one(this.x);
-  //   A.two(this.s);
-  //   A.three(this.x, this.s);
-  // }
-  //
-  // class B extends A {
-  //   B() : super.three(0, '');
-  // }
-  // ```
-  static const CompileTimeErrorCode MULTIPLE_SUPER_INITIALIZERS =
-      CompileTimeErrorCode('MULTIPLE_SUPER_INITIALIZERS',
-          "A constructor can have at most one 'super' initializer.",
-          correction: "Try removing all but one of the 'super' initializers.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the non-type element
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an instance creation using
-  // either `new` or `const` specifies a name that isn't defined as a class.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because `f` is a function
-  // rather than a class:
-  //
-  // ```dart
-  // int f() => 0;
-  //
-  // void g() {
-  //   new [!f!]();
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If a class should be created, then replace the invalid name with the name
-  // of a valid class:
-  //
-  // ```dart
-  // int f() => 0;
-  //
-  // void g() {
-  //   new Object();
-  // }
-  // ```
-  //
-  // If the name is the name of a function and you want that function to be
-  // invoked, then remove the `new` or `const` keyword:
-  //
-  // ```dart
-  // int f() => 0;
-  //
-  // void g() {
-  //   f();
-  // }
-  // ```
-  static const CompileTimeErrorCode NEW_WITH_NON_TYPE = CompileTimeErrorCode(
-    'CREATION_WITH_NON_TYPE',
-    "The name '{0}' isn't a class.",
-    correction: "Try correcting the name to match an existing class.",
-    hasPublishedDocs: true,
-    isUnresolvedIdentifier: true,
-    uniqueName: 'NEW_WITH_NON_TYPE',
-  );
-
-  /**
-   * 12.11.1 New: If <i>T</i> is a class or parameterized type accessible in the
-   * current scope then:
-   * 1. If <i>e</i> is of the form <i>new T.id(a<sub>1</sub>, &hellip;,
-   *    a<sub>n</sub>, x<sub>n+1</sub>: a<sub>n+1</sub>, &hellip;,
-   *    x<sub>n+k</sub>: a<sub>n+k</sub>)</i> it is a static warning if
-   *    <i>T.id</i> is not the name of a constructor declared by the type
-   *    <i>T</i>.
-   * If <i>e</i> of the form <i>new T(a<sub>1</sub>, &hellip;, a<sub>n</sub>,
-   * x<sub>n+1</sub>: a<sub>n+1</sub>, &hellip;, x<sub>n+k</sub>:
-   * a<sub>n+kM/sub>)</i> it is a static warning if the type <i>T</i> does not
-   * declare a constructor with the same name as the declaration of <i>T</i>.
-   */
-  static const CompileTimeErrorCode NEW_WITH_UNDEFINED_CONSTRUCTOR =
-      CompileTimeErrorCode('NEW_WITH_UNDEFINED_CONSTRUCTOR',
-          "The class '{0}' doesn't have a constructor named '{1}'.",
-          correction: "Try invoking a different constructor, or "
-              "define a constructor named '{1}'.");
-
-  /**
-   * Parameters:
-   * 0: the name of the class being instantiated
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an unnamed constructor is
-  // invoked on a class that defines named constructors but the class doesn’t
-  // have an unnamed constructor.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `A` doesn't define an
-  // unnamed constructor:
-  //
-  // ```dart
-  // class A {
-  //   A.a();
-  // }
-  //
-  // A f() => [!A!]();
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If one of the named constructors does what you need, then use it:
-  //
-  // ```dart
-  // class A {
-  //   A.a();
-  // }
-  //
-  // A f() => A.a();
-  // ```
-  //
-  // If none of the named constructors does what you need, and you're able to
-  // add an unnamed constructor, then add the constructor:
-  //
-  // ```dart
-  // class A {
-  //   A();
-  //   A.a();
-  // }
-  //
-  // A f() => A();
-  // ```
-  static const CompileTimeErrorCode NEW_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT =
-      CompileTimeErrorCode('NEW_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT',
-          "The class '{0}' doesn't have an unnamed constructor.",
-          correction:
-              "Try using one of the named constructors defined in '{0}'.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an annotation consists of a
-  // single identifier, but that identifier is the name of a class rather than a
-  // variable. To create an instance of the class, the identifier must be
-  // followed by an argument list.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `C` is a class, and a
-  // class can't be used as an annotation without invoking a `const` constructor
-  // from the class:
-  //
-  // ```dart
-  // class C {
-  //   const C();
-  // }
-  //
-  // [!@C!]
-  // var x;
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Add the missing argument list:
-  //
-  // ```dart
-  // class C {
-  //   const C();
-  // }
-  //
-  // @C()
-  // var x;
-  // ```
-  static const CompileTimeErrorCode NO_ANNOTATION_CONSTRUCTOR_ARGUMENTS =
-      CompileTimeErrorCode('NO_ANNOTATION_CONSTRUCTOR_ARGUMENTS',
-          "Annotation creation must have arguments.",
-          correction: "Try adding an empty argument list.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the class where override error was detected
-   * 1: the list of candidate signatures which cannot be combined
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when there is a method declaration
-  // for which one or more types needs to be inferred, and those types can't be
-  // inferred because none of the overridden methods has a function type that is
-  // a supertype of all the other overridden methods, as specified by
-  // [override inference][].
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the method `m` declared
-  // in the class `C` is missing both the return type and the type of the
-  // parameter `a`, and neither of the missing types can be inferred for it:
-  //
-  // ```dart
-  // abstract class A {
-  //   A m(String a);
-  // }
-  //
-  // abstract class B {
-  //   B m(int a);
-  // }
-  //
-  // abstract class C implements A, B {
-  //   [!m!](a);
-  // }
-  // ```
-  //
-  // In this example, override inference can't be performed because the
-  // overridden methods are incompatible in these ways:
-  // - Neither parameter type (`String` and `int`) is a supertype of the other.
-  // - Neither return type is a subtype of the other.
-  //
-  // #### Common fixes
-  //
-  // If possible, add types to the method in the subclass that are consistent
-  // with the types from all the overridden methods:
-  //
-  // ```dart
-  // abstract class A {
-  //   A m(String a);
-  // }
-  //
-  // abstract class B {
-  //   B m(int a);
-  // }
-  //
-  // abstract class C implements A, B {
-  //   C m(Object a);
-  // }
-  // ```
-  static const CompileTimeErrorCode NO_COMBINED_SUPER_SIGNATURE =
-      CompileTimeErrorCode('NO_COMBINED_SUPER_SIGNATURE',
-          "Can't infer missing types in '{0}' from overridden methods: {1}.",
-          correction: "Try providing explicit types for this method's "
-              "parameters and return type.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the superclass that does not define an implicitly invoked
-   *    constructor
-   */
-  static const CompileTimeErrorCode NO_DEFAULT_SUPER_CONSTRUCTOR_EXPLICIT =
-      CompileTimeErrorCode(
-    'NO_DEFAULT_SUPER_CONSTRUCTOR',
-    "The superclass '{0}' doesn't have a zero argument constructor.",
-    correction: "Try declaring a zero argument constructor in '{0}', or "
-        "explicitly invoking a different constructor in '{0}'.",
-    uniqueName: 'NO_DEFAULT_SUPER_CONSTRUCTOR_EXPLICIT',
-  );
-
-  /**
-   * User friendly specialized error for [NON_GENERATIVE_CONSTRUCTOR]. This
-   * handles the case of `class E extends Exception` which will never work
-   * because [Exception] has no generative constructors.
-   *
-   * Parameters:
-   * 0: the name of the subclass
-   * 1: the name of the superclass
-   */
-  static const CompileTimeErrorCode NO_GENERATIVE_CONSTRUCTORS_IN_SUPERCLASS =
-      CompileTimeErrorCode(
-          'NO_GENERATIVE_CONSTRUCTORS_IN_SUPERCLASS',
-          "The class '{0}' cannot extend '{1}' because '{1}' only has factory "
-              "constructors (no generative constructors), and '{0}' has at "
-              "least one generative constructor.",
-          correction: "Try implementing the class instead, adding a generative "
-              "(not factory) constructor to the superclass {0}, or a factory "
-              "constructor to the subclass.");
-
-  /**
-   * Parameters:
-   * 0: the name of the superclass that does not define an implicitly invoked
-   *    constructor
-   * 1: the name of the subclass that does not contain any explicit constructors
-   */
-  static const CompileTimeErrorCode NO_DEFAULT_SUPER_CONSTRUCTOR_IMPLICIT =
-      CompileTimeErrorCode(
-    'NO_DEFAULT_SUPER_CONSTRUCTOR',
-    "The superclass '{0}' doesn't have a zero argument constructor.",
-    correction: "Try declaring a zero argument constructor in '{0}', or "
-        "declaring a constructor in {1} that explicitly invokes a "
-        "constructor in '{0}'.",
-    uniqueName: 'NO_DEFAULT_SUPER_CONSTRUCTOR_IMPLICIT',
-  );
-
-  /**
-   * Parameters:
-   * 0: the name of the first member
-   * 1: the name of the second member
-   * 2: the name of the third member
-   * 3: the name of the fourth member
-   * 4: the number of additional missing members that aren't listed
-   */
-  static const CompileTimeErrorCode
-      NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FIVE_PLUS =
-      CompileTimeErrorCode(
-    'NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER',
-    "Missing concrete implementations of '{0}', '{1}', '{2}', '{3}', and "
-        "{4} more.",
-    correction: "Try implementing the missing methods, or make the class "
-        "abstract.",
-    hasPublishedDocs: true,
-    uniqueName: 'NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FIVE_PLUS',
-  );
-
-  /**
-   * Parameters:
-   * 0: the name of the first member
-   * 1: the name of the second member
-   * 2: the name of the third member
-   * 3: the name of the fourth member
-   */
-  static const CompileTimeErrorCode
-      NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FOUR = CompileTimeErrorCode(
-    'NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER',
-    "Missing concrete implementations of '{0}', '{1}', '{2}', and '{3}'.",
-    correction: "Try implementing the missing methods, or make the class "
-        "abstract.",
-    hasPublishedDocs: true,
-    uniqueName: 'NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FOUR',
-  );
-
-  /**
-   * Parameters:
-   * 0: the name of the member
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a concrete class inherits one or
-  // more abstract members, and doesn't provide or inherit an implementation for
-  // at least one of those abstract members.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because the class `B` doesn't
-  // have a concrete implementation of `m`:
-  //
-  // ```dart
-  // abstract class A {
-  //   void m();
-  // }
-  //
-  // class [!B!] extends A {}
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the subclass can provide a concrete implementation for some or all of
-  // the abstract inherited members, then add the concrete implementations:
-  //
-  // ```dart
-  // abstract class A {
-  //   void m();
-  // }
-  //
-  // class B extends A {
-  //   void m() {}
-  // }
-  // ```
-  //
-  // If there is a mixin that provides an implementation of the inherited
-  // methods, then apply the mixin to the subclass:
-  //
-  // ```dart
-  // abstract class A {
-  //   void m();
-  // }
-  //
-  // class B extends A with M {}
-  //
-  // mixin M {
-  //   void m() {}
-  // }
-  // ```
-  //
-  // If the subclass can't provide a concrete implementation for all of the
-  // abstract inherited members, then mark the subclass as being abstract:
-  //
-  // ```dart
-  // abstract class A {
-  //   void m();
-  // }
-  //
-  // abstract class B extends A {}
-  // ```
-  static const CompileTimeErrorCode
-      NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE = CompileTimeErrorCode(
-    'NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER',
-    "Missing concrete implementation of '{0}'.",
-    correction: "Try implementing the missing method, or make the class "
-        "abstract.",
-    hasPublishedDocs: true,
-    uniqueName: 'NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE',
-  );
-
-  /**
-   * Parameters:
-   * 0: the name of the first member
-   * 1: the name of the second member
-   * 2: the name of the third member
-   */
-  static const CompileTimeErrorCode
-      NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_THREE = CompileTimeErrorCode(
-    'NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER',
-    "Missing concrete implementations of '{0}', '{1}', and '{2}'.",
-    correction: "Try implementing the missing methods, or make the class "
-        "abstract.",
-    hasPublishedDocs: true,
-    uniqueName: 'NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_THREE',
-  );
-
-  /**
-   * Parameters:
-   * 0: the name of the first member
-   * 1: the name of the second member
-   */
-  static const CompileTimeErrorCode
-      NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_TWO = CompileTimeErrorCode(
-    'NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER',
-    "Missing concrete implementations of '{0}' and '{1}'.",
-    correction: "Try implementing the missing methods, or make the class "
-        "abstract.",
-    hasPublishedDocs: true,
-    uniqueName: 'NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_TWO',
-  );
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a condition, such as an `if` or
-  // `while` loop, doesn't have the static type `bool`.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `x` has the static type
-  // `int`:
-  //
-  // ```dart
-  // void f(int x) {
-  //   if ([!x!]) {
-  //     // ...
-  //   }
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Change the condition so that it produces a Boolean value:
-  //
-  // ```dart
-  // void f(int x) {
-  //   if (x == 0) {
-  //     // ...
-  //   }
-  // }
-  // ```
-  static const CompileTimeErrorCode NON_BOOL_CONDITION = CompileTimeErrorCode(
-      'NON_BOOL_CONDITION', "Conditions must have a static type of 'bool'.",
-      correction: "Try changing the condition.", hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the first expression in an
-  // assert has a type other than `bool`.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because the type of `p` is
-  // `int`, but a `bool` is required:
-  //
-  // ```dart
-  // void f(int p) {
-  //   assert([!p!]);
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Change the expression so that it has the type `bool`:
-  //
-  // ```dart
-  // void f(int p) {
-  //   assert(p > 0);
-  // }
-  // ```
-  static const CompileTimeErrorCode NON_BOOL_EXPRESSION = CompileTimeErrorCode(
-      'NON_BOOL_EXPRESSION',
-      "The expression in an assert must be of type 'bool'.",
-      correction: "Try changing the expression.",
-      hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the operand of the unary
-  // negation operator (`!`) doesn't have the type `bool`.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `x` is an `int` when it
-  // must be a `bool`:
-  //
-  // ```dart
-  // int x = 0;
-  // bool y = ![!x!];
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Replace the operand with an expression that has the type `bool`:
-  //
-  // ```dart
-  // int x = 0;
-  // bool y = !(x > 0);
-  // ```
-  static const CompileTimeErrorCode NON_BOOL_NEGATION_EXPRESSION =
-      CompileTimeErrorCode('NON_BOOL_NEGATION_EXPRESSION',
-          "A negation operand must have a static type of 'bool'.",
-          correction: "Try changing the operand to the '!' operator.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the lexeme of the logical operator
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when one of the operands of either
-  // the `&&` or `||` operator doesn't have the type `bool`.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `a` isn't a Boolean
-  // value:
-  //
-  // ```dart
-  // int a = 3;
-  // bool b = [!a!] || a > 1;
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Change the operand to a Boolean value:
-  //
-  // ```dart
-  // int a = 3;
-  // bool b = a == 0 || a > 1;
-  // ```
-  static const CompileTimeErrorCode NON_BOOL_OPERAND = CompileTimeErrorCode(
-      'NON_BOOL_OPERAND',
-      "The operands of the operator '{0}' must be assignable to 'bool'.",
-      hasPublishedDocs: true);
-
-  /**
-   * 13.2 Expression Statements: It is a compile-time error if a non-constant
-   * map literal that has no explicit type arguments appears in a place where a
-   * statement is expected.
-   */
-  static const CompileTimeErrorCode NON_CONST_MAP_AS_EXPRESSION_STATEMENT =
-      CompileTimeErrorCode(
-          'NON_CONST_MAP_AS_EXPRESSION_STATEMENT',
-          "A non-constant map or set literal without type arguments can't be "
-              "used as an expression statement.");
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an annotation is the invocation
-  // of an existing constructor even though the invoked constructor isn't a
-  // const constructor.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the constructor for `C`
-  // isn't a const constructor:
-  //
-  // ```dart
-  // [!@C()!]
-  // void f() {
-  // }
-  //
-  // class C {
-  //   C();
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If it's valid for the class to have a const constructor, then create a
-  // const constructor that can be used for the annotation:
-  //
-  // ```dart
-  // @C()
-  // void f() {
-  // }
-  //
-  // class C {
-  //   const C();
-  // }
-  // ```
-  //
-  // If it isn't valid for the class to have a const constructor, then either
-  // remove the annotation or use a different class for the annotation.
-  static const CompileTimeErrorCode NON_CONSTANT_ANNOTATION_CONSTRUCTOR =
-      CompileTimeErrorCode('NON_CONSTANT_ANNOTATION_CONSTRUCTOR',
-          "Annotation creation can only call a const constructor.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the expression in a `case`
-  // clause isn't a constant expression.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `j` isn't a constant:
-  //
-  // ```dart
-  // void f(int i, int j) {
-  //   switch (i) {
-  //     case [!j!]:
-  //       // ...
-  //       break;
-  //   }
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Either make the expression a constant expression, or rewrite the `switch`
-  // statement as a sequence of `if` statements:
-  //
-  // ```dart
-  // void f(int i, int j) {
-  //   if (i == j) {
-  //     // ...
-  //   }
-  // }
-  // ```
-  static const CompileTimeErrorCode NON_CONSTANT_CASE_EXPRESSION =
-      CompileTimeErrorCode(
-          'NON_CONSTANT_CASE_EXPRESSION', "Case expressions must be constant.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the expression in a case clause
-  // references a constant from a library that is imported using a deferred
-  // import. In order for switch statements to be compiled efficiently, the
-  // constants referenced in case clauses need to be available at compile time,
-  // and constants from deferred libraries aren't available at compile time.
-  //
-  // For more information, see the language tour's coverage of
-  // [deferred loading](https://dart.dev/guides/language/language-tour#lazily-loading-a-library).
-  //
-  // #### Example
-  //
-  // Given a file (`a.dart`) that defines the constant `zero`:
-  //
-  // ```dart
-  // %uri="lib/a.dart"
-  // const zero = 0;
-  // ```
-  //
-  // The following code produces this diagnostic because the library `a.dart` is
-  // imported using a `deferred` import, and the constant `a.zero`, declared in
-  // the imported library, is used in a case clause:
-  //
-  // ```dart
-  // import 'a.dart' deferred as a;
-  //
-  // void f(int x) {
-  //   switch (x) {
-  //     case [!a.zero!]:
-  //       // ...
-  //       break;
-  //   }
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you need to reference the constant from the imported library, then
-  // remove the `deferred` keyword:
-  //
-  // ```dart
-  // import 'a.dart' as a;
-  //
-  // void f(int x) {
-  //   switch (x) {
-  //     case a.zero:
-  //       // ...
-  //       break;
-  //   }
-  // }
-  // ```
-  //
-  // If you need to reference the constant from the imported library and also
-  // need the imported library to be deferred, then rewrite the switch statement
-  // as a sequence of `if` statements:
-  //
-  // ```dart
-  // import 'a.dart' deferred as a;
-  //
-  // void f(int x) {
-  //   if (x == a.zero) {
-  //     // ...
-  //   }
-  // }
-  // ```
-  //
-  // If you don't need to reference the constant, then replace the case
-  // expression:
-  //
-  // ```dart
-  // void f(int x) {
-  //   switch (x) {
-  //     case 0:
-  //       // ...
-  //       break;
-  //   }
-  // }
-  // ```
-  static const CompileTimeErrorCode
-      NON_CONSTANT_CASE_EXPRESSION_FROM_DEFERRED_LIBRARY = CompileTimeErrorCode(
-          'NON_CONSTANT_CASE_EXPRESSION_FROM_DEFERRED_LIBRARY',
-          "Constant values from a deferred library can't be used as a case "
-              "expression.",
-          correction:
-              "Try re-writing the switch as a series of if statements, or "
-              "changing the import to not be deferred.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an optional parameter, either
-  // named or positional, has a default value that isn't a compile-time
-  // constant.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic:
-  //
-  // ```dart
-  // %language=2.9
-  // var defaultValue = 3;
-  //
-  // void f([int value = [!defaultValue!]]) {}
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the default value can be converted to be a constant, then convert it:
-  //
-  // ```dart
-  // %language=2.9
-  // const defaultValue = 3;
-  //
-  // void f([int value = defaultValue]) {}
-  // ```
-  //
-  // If the default value needs to change over time, then apply the default
-  // value inside the function:
-  //
-  // ```dart
-  // %language=2.9
-  // var defaultValue = 3;
-  //
-  // void f([int value]) {
-  //   value ??= defaultValue;
-  // }
-  // ```
-  static const CompileTimeErrorCode NON_CONSTANT_DEFAULT_VALUE =
-      CompileTimeErrorCode('NON_CONSTANT_DEFAULT_VALUE',
-          "The default value of an optional parameter must be constant.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the default value of an optional
-  // parameter uses a constant from a library imported using a deferred import.
-  // Default values need to be available at compile time, and constants from
-  // deferred libraries aren't available at compile time.
-  //
-  // For more information, see the language tour's coverage of
-  // [deferred loading](https://dart.dev/guides/language/language-tour#lazily-loading-a-library).
-  //
-  // #### Example
-  //
-  // Given a file (`a.dart`) that defines the constant `zero`:
-  //
-  // ```dart
-  // %uri="lib/a.dart"
-  // const zero = 0;
-  // ```
-  //
-  // The following code produces this diagnostic because `zero` is declared in a
-  // library imported using a deferred import:
-  //
-  // ```dart
-  // import 'a.dart' deferred as a;
-  //
-  // void f({int x = [!a.zero!]}) {}
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you need to reference the constant from the imported library, then
-  // remove the `deferred` keyword:
-  //
-  // ```dart
-  // import 'a.dart' as a;
-  //
-  // void f({int x = a.zero}) {}
-  // ```
-  //
-  // If you don't need to reference the constant, then replace the default
-  // value:
-  //
-  // ```dart
-  // void f({int x = 0}) {}
-  // ```
-  static const CompileTimeErrorCode
-      NON_CONSTANT_DEFAULT_VALUE_FROM_DEFERRED_LIBRARY = CompileTimeErrorCode(
-          'NON_CONSTANT_DEFAULT_VALUE_FROM_DEFERRED_LIBRARY',
-          "Constant values from a deferred library can't be used as a default "
-              "parameter value.",
-          correction:
-              "Try leaving the default as null and initializing the parameter "
-              "inside the function body.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an element in a constant list
-  // literal isn't a constant value. The list literal can be constant either
-  // explicitly (because it's prefixed by the `const` keyword) or implicitly
-  // (because it appears in a [constant context][]).
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `x` isn't a constant,
-  // even though it appears in an implicitly constant list literal:
-  //
-  // ```dart
-  // var x = 2;
-  // var y = const <int>[0, 1, [!x!]];
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the list needs to be a constant list, then convert the element to be a
-  // constant. In the example above, you might add the `const` keyword to the
-  // declaration of `x`:
-  //
-  // ```dart
-  // const x = 2;
-  // var y = const <int>[0, 1, x];
-  // ```
-  //
-  // If the expression can't be made a constant, then the list can't be a
-  // constant either, so you must change the code so that the list isn't a
-  // constant. In the example above this means removing the `const` keyword
-  // before the list literal:
-  //
-  // ```dart
-  // var x = 2;
-  // var y = <int>[0, 1, x];
-  // ```
-  static const CompileTimeErrorCode NON_CONSTANT_LIST_ELEMENT =
-      CompileTimeErrorCode('NON_CONSTANT_LIST_ELEMENT',
-          "The values in a const list literal must be constants.",
-          correction: "Try removing the keyword 'const' from the list literal.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a collection literal that is
-  // either explicitly (because it's prefixed by the `const` keyword) or
-  // implicitly (because it appears in a [constant context][]) a constant
-  // contains a value that is declared in a library that is imported using a
-  // deferred import. Constants are evaluated at compile time, and values from
-  // deferred libraries aren't available at compile time.
-  //
-  // For more information, see the language tour's coverage of
-  // [deferred loading](https://dart.dev/guides/language/language-tour#lazily-loading-a-library).
-  //
-  // #### Example
-  //
-  // Given a file (`a.dart`) that defines the constant `zero`:
-  //
-  // ```dart
-  // %uri="lib/a.dart"
-  // const zero = 0;
-  // ```
-  //
-  // The following code produces this diagnostic because the constant list
-  // literal contains `a.zero`, which is imported using a `deferred` import:
-  //
-  // ```dart
-  // import 'a.dart' deferred as a;
-  //
-  // var l = const [[!a.zero!]];
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the collection literal isn't required to be constant, then remove the
-  // `const` keyword:
-  //
-  // ```dart
-  // import 'a.dart' deferred as a;
-  //
-  // var l = [a.zero];
-  // ```
-  //
-  // If the collection is required to be constant and the imported constant must
-  // be referenced, then remove the keyword `deferred` from the import:
-  //
-  // ```dart
-  // import 'a.dart' as a;
-  //
-  // var l = const [a.zero];
-  // ```
-  //
-  // If you don't need to reference the constant, then replace it with a
-  // suitable value:
-  //
-  // ```dart
-  // var l = const [0];
-  // ```
-  static const CompileTimeErrorCode
-      NON_CONSTANT_LIST_ELEMENT_FROM_DEFERRED_LIBRARY = CompileTimeErrorCode(
-          'COLLECTION_ELEMENT_FROM_DEFERRED_LIBRARY',
-          "Constant values from a deferred library can't be used as values in "
-              "a 'const' list literal.",
-          correction: "Try removing the keyword 'const' from the list literal "
-              "or removing the keyword 'deferred' from the import.",
-          hasPublishedDocs: true,
-          uniqueName: 'NON_CONSTANT_LIST_ELEMENT_FROM_DEFERRED_LIBRARY');
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an `if` element or a spread
-  // element in a constant map isn't a constant element.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because it's attempting to
-  // spread a non-constant map:
-  //
-  // ```dart
-  // var notConst = <int, int>{};
-  // var map = const <int, int>{...[!notConst!]};
-  // ```
-  //
-  // Similarly, the following code produces this diagnostic because the
-  // condition in the `if` element isn't a constant expression:
-  //
-  // ```dart
-  // bool notConst = true;
-  // var map = const <int, int>{if ([!notConst!]) 1 : 2};
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the map needs to be a constant map, then make the elements constants.
-  // In the spread example, you might do that by making the collection being
-  // spread a constant:
-  //
-  // ```dart
-  // const notConst = <int, int>{};
-  // var map = const <int, int>{...notConst};
-  // ```
-  //
-  // If the map doesn't need to be a constant map, then remove the `const`
-  // keyword:
-  //
-  // ```dart
-  // bool notConst = true;
-  // var map = <int, int>{if (notConst) 1 : 2};
-  // ```
-  static const CompileTimeErrorCode NON_CONSTANT_MAP_ELEMENT =
-      CompileTimeErrorCode('NON_CONSTANT_MAP_ELEMENT',
-          "The elements in a const map literal must be constant.",
-          correction: "Try removing the keyword 'const' from the map literal.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a key in a constant map literal
-  // isn't a constant value.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic beause `a` isn't a constant:
-  //
-  // ```dart
-  // var a = 'a';
-  // var m = const {[!a!]: 0};
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the map needs to be a constant map, then make the key a constant:
-  //
-  // ```dart
-  // const a = 'a';
-  // var m = const {a: 0};
-  // ```
-  //
-  // If the map doesn't need to be a constant map, then remove the `const`
-  // keyword:
-  //
-  // ```dart
-  // var a = 'a';
-  // var m = {a: 0};
-  // ```
-  static const CompileTimeErrorCode NON_CONSTANT_MAP_KEY = CompileTimeErrorCode(
-      'NON_CONSTANT_MAP_KEY',
-      "The keys in a const map literal must be constant.",
-      correction: "Try removing the keyword 'const' from the map literal.",
-      hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  static const CompileTimeErrorCode NON_CONSTANT_MAP_KEY_FROM_DEFERRED_LIBRARY =
-      CompileTimeErrorCode(
-          'COLLECTION_ELEMENT_FROM_DEFERRED_LIBRARY',
-          "Constant values from a deferred library can't be used as keys in a "
-              "'const' map literal.",
-          correction:
-              "Try removing the keyword 'const' from the map literal or removing "
-              "the keyword 'deferred' from the import.",
-          hasPublishedDocs: true,
-          uniqueName: 'NON_CONSTANT_MAP_KEY_FROM_DEFERRED_LIBRARY');
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a value in a constant map
-  // literal isn't a constant value.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `a` isn't a constant:
-  //
-  // ```dart
-  // var a = 'a';
-  // var m = const {0: [!a!]};
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the map needs to be a constant map, then make the key a constant:
-  //
-  // ```dart
-  // const a = 'a';
-  // var m = const {0: a};
-  // ```
-  //
-  // If the map doesn't need to be a constant map, then remove the `const`
-  // keyword:
-  //
-  // ```dart
-  // var a = 'a';
-  // var m = {0: a};
-  // ```
-  static const CompileTimeErrorCode NON_CONSTANT_MAP_VALUE =
-      CompileTimeErrorCode('NON_CONSTANT_MAP_VALUE',
-          "The values in a const map literal must be constant.",
-          correction: "Try removing the keyword 'const' from the map literal.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  static const CompileTimeErrorCode
-      NON_CONSTANT_MAP_VALUE_FROM_DEFERRED_LIBRARY = CompileTimeErrorCode(
-          'COLLECTION_ELEMENT_FROM_DEFERRED_LIBRARY',
-          "Constant values from a deferred library can't be used as values in "
-              "a 'const' map literal.",
-          correction:
-              "Try removing the keyword 'const' from the map literal or removing "
-              "the keyword 'deferred' from the import.",
-          hasPublishedDocs: true,
-          uniqueName: 'NON_CONSTANT_MAP_VALUE_FROM_DEFERRED_LIBRARY');
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a constant set literal contains
-  // an element that isn't a compile-time constant.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `i` isn't a constant:
-  //
-  // ```dart
-  // var i = 0;
-  //
-  // var s = const {[!i!]};
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the element can be changed to be a constant, then change it:
-  //
-  // ```dart
-  // const i = 0;
-  //
-  // var s = const {i};
-  // ```
-  //
-  // If the element can't be a constant, then remove the keyword `const`:
-  //
-  // ```dart
-  // var i = 0;
-  //
-  // var s = {i};
-  // ```
-  static const CompileTimeErrorCode NON_CONSTANT_SET_ELEMENT =
-      CompileTimeErrorCode('NON_CONSTANT_SET_ELEMENT',
-          "The values in a const set literal must be constants.",
-          correction: "Try removing the keyword 'const' from the set literal.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the non-generative constructor
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the initializer list of a
-  // constructor invokes a constructor from the superclass, and the invoked
-  // constructor is a factory constructor. Only a generative constructor can be
-  // invoked in the initializer list.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the invocation of the
-  // constructor `super.one()` is invoking a factory constructor:
-  //
-  // ```dart
-  // class A {
-  //   factory A.one() = B;
-  //   A.two();
-  // }
-  //
-  // class B extends A {
-  //   B() : [!super.one()!];
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Change the super invocation to invoke a generative constructor:
-  //
-  // ```dart
-  // class A {
-  //   factory A.one() = B;
-  //   A.two();
-  // }
-  //
-  // class B extends A {
-  //   B() : super.two();
-  // }
-  // ```
-  //
-  // If the generative constructor is the unnamed constructor, and if there are
-  // no arguments being passed to it, then you can remove the super invocation.
-  static const CompileTimeErrorCode NON_GENERATIVE_CONSTRUCTOR =
-      CompileTimeErrorCode(
-          'NON_GENERATIVE_CONSTRUCTOR',
-          "The generative constructor '{0}' is expected, but a factory was "
-              "found.",
-          correction:
-              "Try calling a different constructor of the superclass, or "
-              "making the called constructor not be a factory constructor.",
-          hasPublishedDocs: true);
-
-  /**
-   * An error code for when a class has no explicit constructor, and therefore
-   * a constructor is implicitly defined which uses a factory as a
-   * superinitializer. See [NON_GENERATIVE_CONSTRUCTOR].
-   *
-   * Parameters:
-   * 0: the name of the superclass
-   * 1: the name of the current class
-   * 2: the implicitly called factory constructor of the superclass
-   */
-  static const CompileTimeErrorCode NON_GENERATIVE_IMPLICIT_CONSTRUCTOR =
-      CompileTimeErrorCode(
-          'NON_GENERATIVE_IMPLICIT_CONSTRUCTOR',
-          "The unnamed constructor of superclass '{0}' (called by the default "
-              "constructor of '{1}') must be a generative constructor, "
-              "but factory found.",
-          correction: "Try adding an explicit constructor that has a different "
-              "superinitializer or changing the superclass constructor '{2}' "
-              "to not be a factory constructor.");
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the body of a factory
-  // constructor is marked with `async`, `async*`, or `sync*`. All constructors,
-  // including factory constructors, are required to return an instance of the
-  // class in which they're declared, not a `Future`, `Stream`, or `Iterator`.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the body of the factory
-  // constructor is marked with `async`:
-  //
-  // ```dart
-  // class C {
-  //   factory C() [!async!] {
-  //     return C._();
-  //   }
-  //   C._();
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the member must be declared as a factory constructor, then remove the
-  // keyword appearing before the body:
-  //
-  // ```dart
-  // class C {
-  //   factory C() {
-  //     return C._();
-  //   }
-  //   C._();
-  // }
-  // ```
-  //
-  // If the member must return something other than an instance of the enclosing
-  // class, then make the member a static method:
-  //
-  // ```dart
-  // class C {
-  //   static Future<C> m() async {
-  //     return C._();
-  //   }
-  //   C._();
-  // }
-  // ```
-  static const CompileTimeErrorCode NON_SYNC_FACTORY = CompileTimeErrorCode(
-      'NON_SYNC_FACTORY',
-      "Factory bodies can't use 'async', 'async*', or 'sync*'.",
-      hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name appearing where a type is expected
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an identifier that isn't a type
-  // is used as a type argument.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `x` is a variable, not
-  // a type:
-  //
-  // ```dart
-  // var x = 0;
-  // List<[!x!]> xList = [];
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Change the type argument to be a type:
-  //
-  // ```dart
-  // var x = 0;
-  // List<int> xList = [];
-  // ```
-  static const CompileTimeErrorCode NON_TYPE_AS_TYPE_ARGUMENT =
-      CompileTimeErrorCode('NON_TYPE_AS_TYPE_ARGUMENT',
-          "The name '{0}' isn't a type so it can't be used as a type argument.",
-          correction: "Try correcting the name to an existing type, or "
-              "defining a type named '{0}'.",
-          hasPublishedDocs: true,
-          isUnresolvedIdentifier: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the non-type element
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the identifier following the
-  // `on` in a `catch` clause is defined to be something other than a type.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `f` is a function, not
-  // a type:
-  //
-  // ```dart
-  // %language=2.9
-  // void f() {
-  //   try {
-  //     // ...
-  //   } on [!f!] {
-  //     // ...
-  //   }
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Change the name to the type of object that should be caught:
-  //
-  // ```dart
-  // %language=2.9
-  // void f() {
-  //   try {
-  //     // ...
-  //   } on FormatException {
-  //     // ...
-  //   }
-  // }
-  // ```
-  static const CompileTimeErrorCode NON_TYPE_IN_CATCH_CLAUSE =
-      CompileTimeErrorCode(
-          'NON_TYPE_IN_CATCH_CLAUSE',
-          "The name '{0}' isn't a type and can't be used in an on-catch "
-              "clause.",
-          correction: "Try correcting the name to match an existing class.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a declaration of the operator
-  // `[]=` has a return type other than `void`.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the declaration of the
-  // operator `[]=` has a return type of `int`:
-  //
-  // ```dart
-  // class C {
-  //   [!int!] operator []=(int index, int value) => 0;
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Change the return type to `void`:
-  //
-  // ```dart
-  // class C {
-  //   void operator []=(int index, int value) => 0;
-  // }
-  // ```
-  static const CompileTimeErrorCode NON_VOID_RETURN_FOR_OPERATOR =
-      CompileTimeErrorCode('NON_VOID_RETURN_FOR_OPERATOR',
-          "The return type of the operator []= must be 'void'.",
-          correction: "Try changing the return type to 'void'.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a setter is defined with a
-  // return type other than `void`.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the setter `p` has a
-  // return type of `int`:
-  //
-  // ```dart
-  // class C {
-  //   [!int!] set p(int i) => 0;
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Change the return type to `void` or omit the return type:
-  //
-  // ```dart
-  // class C {
-  //   set p(int i) => 0;
-  // }
-  // ```
-  static const CompileTimeErrorCode NON_VOID_RETURN_FOR_SETTER =
-      CompileTimeErrorCode('NON_VOID_RETURN_FOR_SETTER',
-          "The return type of the setter must be 'void' or absent.",
-          correction: "Try removing the return type, or "
-              "define a method rather than a setter.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name that is not a type
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a name is used as a type but
-  // declared to be something other than a type.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `f` is a function:
-  //
-  // ```dart
-  // f() {}
-  // g([!f!] v) {}
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Replace the name with the name of a type.
-  static const CompileTimeErrorCode NOT_A_TYPE = CompileTimeErrorCode(
-      'NOT_A_TYPE', "{0} isn't a type.",
-      correction: "Try correcting the name to match an existing type.",
-      hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the variable that is invalid
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a local variable is referenced
-  // and has all these characteristics:
-  // - Has a type that's [potentially non-nullable][].
-  // - Doesn't have an initializer.
-  // - Isn't marked as `late`.
-  // - The analyzer can't prove that the local variable will be assigned before
-  //   the reference based on the specification of [definite assignment][].
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because `x` can't have a value
-  // of `null`, but is referenced before a value was assigned to it:
-  //
-  // ```dart
-  // String f() {
-  //   int x;
-  //   return [!x!].toString();
-  // }
-  // ```
-  //
-  // The following code produces this diagnostic because the assignment to `x`
-  // might not be executed, so it might have a value of `null`:
-  //
-  // ```dart
-  // int g(bool b) {
-  //   int x;
-  //   if (b) {
-  //     x = 1;
-  //   }
-  //   return [!x!] * 2;
-  // }
-  // ```
-  //
-  // The following code produces this diagnostic because the analyzer can't
-  // prove, based on definite assignment analysis, that `x` won't be referenced
-  // without having a value assigned to it:
-  //
-  // ```dart
-  // int h(bool b) {
-  //   int x;
-  //   if (b) {
-  //     x = 1;
-  //   }
-  //   if (b) {
-  //     return [!x!] * 2;
-  //   }
-  //   return 0;
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If `null` is a valid value, then make the variable nullable:
-  //
-  // ```dart
-  // String f() {
-  //   int? x;
-  //   return x!.toString();
-  // }
-  // ```
-  //
-  // If `null` isn’t a valid value, and there's a reasonable default value, then
-  // add an initializer:
-  //
-  // ```dart
-  // int g(bool b) {
-  //   int x = 2;
-  //   if (b) {
-  //     x = 1;
-  //   }
-  //   return x * 2;
-  // }
-  // ```
-  //
-  // Otherwise, ensure that a value was assigned on every possible code path
-  // before the value is accessed:
-  //
-  // ```dart
-  // int g(bool b) {
-  //   int x;
-  //   if (b) {
-  //     x = 1;
-  //   } else {
-  //     x = 2;
-  //   }
-  //   return x * 2;
-  // }
-  // ```
-  //
-  // You can also mark the variable as `late`, which removes the diagnostic, but
-  // if the variable isn't assigned a value before it's accessed, then it
-  // results in an exception being thrown at runtime. This approach should only
-  // be used if you're sure that the variable will always be assigned, even
-  // though the analyzer can't prove it based on definite assignment analysis.
-  //
-  // ```dart
-  // int h(bool b) {
-  //   late int x;
-  //   if (b) {
-  //     x = 1;
-  //   }
-  //   if (b) {
-  //     return x * 2;
-  //   }
-  //   return 0;
-  // }
-  // ```
-  static const CompileTimeErrorCode
-      NOT_ASSIGNED_POTENTIALLY_NON_NULLABLE_LOCAL_VARIABLE =
-      CompileTimeErrorCode(
-          'NOT_ASSIGNED_POTENTIALLY_NON_NULLABLE_LOCAL_VARIABLE',
-          "The non-nullable local variable '{0}' must be assigned before it "
-              "can be used.",
-          correction: "Try giving it an initializer expression, or ensure that "
-              "it's assigned on every execution path.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the operator that is not a binary operator.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an operator that can only be
-  // used as a unary operator is used as a binary operator.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the operator `~` can
-  // only be used as a unary operator:
-  //
-  // ```dart
-  // var a = 5 [!~!] 3;
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Replace the operator with the correct binary operator:
-  //
-  // ```dart
-  // var a = 5 - 3;
-  // ```
-  static const CompileTimeErrorCode NOT_BINARY_OPERATOR = CompileTimeErrorCode(
-      'NOT_BINARY_OPERATOR', "'{0}' isn't a binary operator.");
-
-  /**
-   * Parameters:
-   * 0: the expected number of required arguments
-   * 1: the actual number of positional arguments given
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a method or function invocation
-  // has fewer positional arguments than the number of required positional
-  // parameters.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `f` declares two
-  // required parameters, but only one argument is provided:
-  //
-  // ```dart
-  // void f(int a, int b) {}
-  // void g() {
-  //   f[!(0)!];
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Add arguments corresponding to the remaining parameters:
-  //
-  // ```dart
-  // void f(int a, int b) {}
-  // void g() {
-  //   f(0, 1);
-  // }
-  // ```
-  static const CompileTimeErrorCode NOT_ENOUGH_POSITIONAL_ARGUMENTS =
-      CompileTimeErrorCode('NOT_ENOUGH_POSITIONAL_ARGUMENTS',
-          "{0} positional argument(s) expected, but {1} found.",
-          correction: "Try adding the missing arguments.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the field that is not initialized
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a field is declared and has all
-  // these characteristics:
-  // - Has a type that's [potentially non-nullable][]
-  // - Doesn't have an initializer
-  // - Isn't marked as `late`
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because `x` is implicitly
-  // initialized to `null` when it isn't allowed to be `null`:
-  //
-  // ```dart
-  // class C {
-  //   int [!x!];
-  // }
-  // ```
-  //
-  // Similarly, the following code produces this diagnostic because `x` is
-  // implicitly initialized to `null`, when it isn't allowed to be `null`, by
-  // one of the constructors, even though it's initialized by other
-  // constructors:
-  //
-  // ```dart
-  // class C {
-  //   int x;
-  //
-  //   C(this.x);
-  //
-  //   [!C!].n();
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If there's a reasonable default value for the field that’s the same for all
-  // instances, then add an initializer expression:
-  //
-  // ```dart
-  // class C {
-  //   int x = 0;
-  // }
-  // ```
-  //
-  // If the value of the field should be provided when an instance is created,
-  // then add a constructor that sets the value of the field or update an
-  // existing constructor:
-  //
-  // ```dart
-  // class C {
-  //   int x;
-  //
-  //   C(this.x);
-  // }
-  // ```
-  //
-  // You can also mark the field as `late`, which removes the diagnostic, but if
-  // the field isn't assigned a value before it's accessed, then it results in
-  // an exception being thrown at runtime. This approach should only be used if
-  // you're sure that the field will always be assigned before it's referenced.
-  //
-  // ```dart
-  // class C {
-  //   late int x;
-  // }
-  // ```
-  static const CompileTimeErrorCode
-      NOT_INITIALIZED_NON_NULLABLE_INSTANCE_FIELD = CompileTimeErrorCode(
-          'NOT_INITIALIZED_NON_NULLABLE_INSTANCE_FIELD',
-          "Non-nullable instance field '{0}' must be initialized.",
-          correction: "Try adding an initializer expression, "
-              "or a generative constructor that initializes it, "
-              "or mark it 'late'.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the field that is not initialized
-   */
-  static const CompileTimeErrorCode
-      NOT_INITIALIZED_NON_NULLABLE_INSTANCE_FIELD_CONSTRUCTOR =
-      CompileTimeErrorCode(
-    'NOT_INITIALIZED_NON_NULLABLE_INSTANCE_FIELD',
-    "Non-nullable instance field '{0}' must be initialized.",
-    correction: "Try adding an initializer expression, "
-        "or add a field initializer in this constructor, "
-        "or mark it 'late'.",
-    hasPublishedDocs: true,
-    uniqueName: 'NOT_INITIALIZED_NON_NULLABLE_INSTANCE_FIELD_CONSTRUCTOR',
-  );
-
-  /**
-   * Parameters:
-   * 0: the name of the variable that is invalid
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a static field or top-level
-  // variable has a type that's non-nullable and doesn't have an initializer.
-  // Fields and variables that don't have an initializer are normally
-  // initialized to `null`, but the type of the field or variable doesn't allow
-  // it to be set to `null`, so an explicit initializer must be provided.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the field `f` can't be
-  // initialized to `null`:
-  //
-  // ```dart
-  // class C {
-  //   static int [!f!];
-  // }
-  // ```
-  //
-  // Similarly, the following code produces this diagnostic because the
-  // top-level variable `v` can't be initialized to `null`:
-  //
-  // ```dart
-  // int [!v!];
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the field or variable can't be initialized to `null`, then add an
-  // initializer that sets it to a non-null value:
-  //
-  // ```dart
-  // class C {
-  //   static int f = 0;
-  // }
-  // ```
-  //
-  // If the field or variable should be initialized to `null`, then change the
-  // type to be nullable:
-  //
-  // ```dart
-  // int? v;
-  // ```
-  //
-  // If the field or variable can't be initialized in the declaration but will
-  // always be initialized before it's referenced, then mark it as being `late`:
-  //
-  // ```dart
-  // class C {
-  //   static late int f;
-  // }
-  // ```
-  static const CompileTimeErrorCode NOT_INITIALIZED_NON_NULLABLE_VARIABLE =
-      CompileTimeErrorCode('NOT_INITIALIZED_NON_NULLABLE_VARIABLE',
-          "The non-nullable variable '{0}' must be initialized.",
-          correction: "Try adding an initializer expression.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  static const CompileTimeErrorCode NOT_INSTANTIATED_BOUND =
-      CompileTimeErrorCode('NOT_INSTANTIATED_BOUND',
-          'Type parameter bound types must be instantiated.',
-          correction: 'Try adding type arguments to the type parameter bound.');
-
-  /**
-   * No parameters.
-   */
-  static const CompileTimeErrorCode DISALLOWED_TYPE_INSTANTIATION_EXPRESSION =
-      CompileTimeErrorCode(
-          'DISALLOWED_TYPE_INSTANTIATION_EXPRESSION',
-          'Only a generic type, generic function, generic instance method, or '
-              'generic constructor can be type instantiated.',
-          correction:
-              'Try instantiating the type(s) of a generic type, generic '
-              'function, generic instance method, or generic constructor.');
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the static type of the
-  // expression of a spread element that appears in either a list literal or a
-  // set literal doesn't implement the type `Iterable`.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic:
-  //
-  // ```dart
-  // var m = <String, int>{'a': 0, 'b': 1};
-  // var s = <String>{...[!m!]};
-  // ```
-  //
-  // #### Common fixes
-  //
-  // The most common fix is to replace the expression with one that produces an
-  // iterable object:
-  //
-  // ```dart
-  // var m = <String, int>{'a': 0, 'b': 1};
-  // var s = <String>{...m.keys};
-  // ```
-  static const CompileTimeErrorCode NOT_ITERABLE_SPREAD = CompileTimeErrorCode(
-      'NOT_ITERABLE_SPREAD',
-      "Spread elements in list or set literals must implement 'Iterable'.",
-      hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the static type of the
-  // expression of a spread element that appears in a map literal doesn't
-  // implement the type `Map`.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `l` isn't a `Map`:
-  //
-  // ```dart
-  // var l =  <String>['a', 'b'];
-  // var m = <int, String>{...[!l!]};
-  // ```
-  //
-  // #### Common fixes
-  //
-  // The most common fix is to replace the expression with one that produces a
-  // map:
-  //
-  // ```dart
-  // var l =  <String>['a', 'b'];
-  // var m = <int, String>{...l.asMap()};
-  // ```
-  static const CompileTimeErrorCode NOT_MAP_SPREAD = CompileTimeErrorCode(
-      'NOT_MAP_SPREAD', "Spread elements in map literals must implement 'Map'.",
-      hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  static const CompileTimeErrorCode NOT_NULL_AWARE_NULL_SPREAD =
-      CompileTimeErrorCode(
-          'NOT_NULL_AWARE_NULL_SPREAD',
-          "The Null typed expression can't be used with a non-null-aware "
-              "spread.");
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a class declaration uses an
-  // `extends` clause to specify a superclass, and the superclass is followed by
-  // a `?`.
-  //
-  // It isn't valid to specify a nullable superclass because doing so would have
-  // no meaning; it wouldn't change either the interface or implementation being
-  // inherited by the class containing the `extends` clause.
-  //
-  // Note, however, that it _is_ valid to use a nullable type as a type argument
-  // to the superclass, such as `class A extends B<C?> {}`.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because `A?` is a nullable
-  // type, and nullable types can't be used in an `extends` clause:
-  //
-  // ```dart
-  // class A {}
-  // class B extends [!A?!] {}
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Remove the question mark from the type:
-  //
-  // ```dart
-  // class A {}
-  // class B extends A {}
-  // ```
-  static const CompileTimeErrorCode NULLABLE_TYPE_IN_EXTENDS_CLAUSE =
-      CompileTimeErrorCode('NULLABLE_TYPE_IN_EXTENDS_CLAUSE',
-          "A class can't extend a nullable type.",
-          correction: "Try removing the question mark.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a class or mixin declaration has
-  // an `implements` clause, and an interface is followed by a `?`.
-  //
-  // It isn't valid to specify a nullable interface because doing so would have
-  // no meaning; it wouldn't change the interface being inherited by the class
-  // containing the `implements` clause.
-  //
-  // Note, however, that it _is_ valid to use a nullable type as a type argument
-  // to the interface, such as `class A implements B<C?> {}`.
-  //
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because `A?` is a nullable
-  // type, and nullable types can't be used in an `implements` clause:
-  //
-  // ```dart
-  // class A {}
-  // class B implements [!A?!] {}
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Remove the question mark from the type:
-  //
-  // ```dart
-  // class A {}
-  // class B implements A {}
-  // ```
-  static const CompileTimeErrorCode NULLABLE_TYPE_IN_IMPLEMENTS_CLAUSE =
-      CompileTimeErrorCode('NULLABLE_TYPE_IN_IMPLEMENTS_CLAUSE',
-          "A class or mixin can't implement a nullable type.",
-          correction: "Try removing the question mark.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a mixin declaration uses an `on`
-  // clause to specify a superclass constraint, and the class that's specified
-  // is followed by a `?`.
-  //
-  // It isn't valid to specify a nullable superclass constraint because doing so
-  // would have no meaning; it wouldn't change the interface being depended on
-  // by the mixin containing the `on` clause.
-  //
-  // Note, however, that it _is_ valid to use a nullable type as a type argument
-  // to the superclass constraint, such as `mixin A on B<C?> {}`.
-  //
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because `A?` is a nullable type
-  // and nullable types can't be used in an `on` clause:
-  //
-  // ```dart
-  // class C {}
-  // mixin M on [!C?!] {}
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Remove the question mark from the type:
-  //
-  // ```dart
-  // class C {}
-  // mixin M on C {}
-  // ```
-  static const CompileTimeErrorCode NULLABLE_TYPE_IN_ON_CLAUSE =
-      CompileTimeErrorCode('NULLABLE_TYPE_IN_ON_CLAUSE',
-          "A mixin can't have a nullable type as a superclass constraint.",
-          correction: "Try removing the question mark.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a class or mixin declaration has
-  // a `with` clause, and a mixin is followed by a `?`.
-  //
-  // It isn't valid to specify a nullable mixin because doing so would have no
-  // meaning; it wouldn't change either the interface or implementation being
-  // inherited by the class containing the `with` clause.
-  //
-  // Note, however, that it _is_ valid to use a nullable type as a type argument
-  // to the mixin, such as `class A with B<C?> {}`.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because `A?` is a nullable
-  // type, and nullable types can't be used in a `with` clause:
-  //
-  // ```dart
-  // mixin M {}
-  // class C with [!M?!] {}
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Remove the question mark from the type:
-  //
-  // ```dart
-  // mixin M {}
-  // class C with M {}
-  // ```
-  static const CompileTimeErrorCode NULLABLE_TYPE_IN_WITH_CLAUSE =
-      CompileTimeErrorCode('NULLABLE_TYPE_IN_WITH_CLAUSE',
-          "A class or mixin can't mix in a nullable type.",
-          correction: "Try removing the question mark.",
-          hasPublishedDocs: true);
-
-  /**
-   * 7.9 Superclasses: It is a compile-time error to specify an extends clause
-   * for class Object.
-   */
-  static const CompileTimeErrorCode OBJECT_CANNOT_EXTEND_ANOTHER_CLASS =
-      CompileTimeErrorCode('OBJECT_CANNOT_EXTEND_ANOTHER_CLASS',
-          "The class 'Object' can't extend any other class.");
-
-  /**
-   * Parameters:
-   * 0: the name of the interface that is implemented more than once
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the same type is listed in the
-  // superclass constraints of a mixin multiple times.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because `A` is included twice
-  // in the superclass constraints for `M`:
-  //
-  // ```dart
-  // mixin M on A, [!A!] {
-  // }
-  //
-  // class A {}
-  // class B {}
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If a different type should be included in the superclass constraints, then
-  // replace one of the occurrences with the other type:
-  //
-  // ```dart
-  // mixin M on A, B {
-  // }
-  //
-  // class A {}
-  // class B {}
-  // ```
-  //
-  // If no other type was intended, then remove the repeated type name:
-  //
-  // ```dart
-  // mixin M on A {
-  // }
-  //
-  // class A {}
-  // class B {}
-  // ```
-  static const CompileTimeErrorCode ON_REPEATED = CompileTimeErrorCode(
-      'ON_REPEATED',
-      "The type '{0}' can be included in the superclass constraints only once.",
-      correction: "Try removing all except one occurrence of the type name.",
-      hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when one or more of the parameters in
-  // an operator declaration are optional.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the parameter `other`
-  // is an optional parameter:
-  //
-  // ```dart
-  // class C {
-  //   C operator +([[!C? other!]]) => this;
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Make all of the parameters be required parameters:
-  //
-  // ```dart
-  // class C {
-  //   C operator +(C other) => this;
-  // }
-  // ```
-  static const CompileTimeErrorCode OPTIONAL_PARAMETER_IN_OPERATOR =
-      CompileTimeErrorCode('OPTIONAL_PARAMETER_IN_OPERATOR',
-          "Optional parameters aren't allowed when defining an operator.",
-          correction: "Try removing the optional parameters.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of expected library name
-   * 1: the non-matching actual library name from the "part of" declaration
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a library attempts to include a
-  // file as a part of itself when the other file is a part of a different
-  // library.
-  //
-  // #### Example
-  //
-  // Given a file named `part.dart` containing
-  //
-  // ```dart
-  // %uri="package:a/part.dart"
-  // part of 'library.dart';
-  // ```
-  //
-  // The following code, in any file other than `library.dart`, produces this
-  // diagnostic because it attempts to include `part.dart` as a part of itself
-  // when `part.dart` is a part of a different library:
-  //
-  // ```dart
-  // part [!'package:a/part.dart'!];
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the library should be using a different file as a part, then change the
-  // URI in the part directive to be the URI of the other file.
-  //
-  // If the part file should be a part of this library, then update the URI (or
-  // library name) in the part-of directive to be the URI (or name) of the
-  // correct library.
-  static const CompileTimeErrorCode PART_OF_DIFFERENT_LIBRARY =
-      CompileTimeErrorCode('PART_OF_DIFFERENT_LIBRARY',
-          "Expected this library to be part of '{0}', not '{1}'.",
-          correction: "Try including a different part, or changing the name of "
-              "the library in the part's part-of directive.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the uri pointing to a non-library declaration
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a part directive is found and
-  // the referenced file doesn't have a part-of directive.
-  //
-  // #### Examples
-  //
-  // Given a file (`a.dart`) containing:
-  //
-  // ```dart
-  // %uri="lib/a.dart"
-  // class A {}
-  // ```
-  //
-  // The following code produces this diagnostic because `a.dart` doesn't
-  // contain a part-of directive:
-  //
-  // ```dart
-  // part [!'a.dart'!];
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the referenced file is intended to be a part of another library, then
-  // add a part-of directive to the file:
-  //
-  // ```dart
-  // part of 'test.dart';
-  //
-  // class A {}
-  // ```
-  //
-  // If the referenced file is intended to be a library, then replace the part
-  // directive with an import directive:
-  //
-  // ```dart
-  // import 'a.dart';
-  // ```
-  static const CompileTimeErrorCode PART_OF_NON_PART = CompileTimeErrorCode(
-      'PART_OF_NON_PART',
-      "The included part '{0}' must have a part-of directive.",
-      correction: "Try adding a part-of directive to '{0}'.",
-      hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the URI of the expected library
-   * 1: the non-matching actual library name from the "part of" declaration
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a library that doesn't have a
-  // `library` directive (and hence has no name) contains a `part` directive and
-  // the `part of` directive in the part file uses a name to specify the library
-  // that it's a part of.
-  //
-  // #### Example
-  //
-  // Given a part file named `part_file.dart` containing the following code:
-  //
-  // ```dart
-  // %uri="lib/part_file.dart"
-  // part of lib;
-  // ```
-  //
-  // The following code produces this diagnostic because the library including
-  // the part file doesn't have a name even though the part file uses a name to
-  // specify which library it's a part of:
-  //
-  // ```dart
-  // part [!'part_file.dart'!];
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Change the `part of` directive in the part file to specify its library by
-  // URI:
-  //
-  // ```dart
-  // part of 'test.dart';
-  // ```
-  static const CompileTimeErrorCode PART_OF_UNNAMED_LIBRARY =
-      CompileTimeErrorCode(
-          'PART_OF_UNNAMED_LIBRARY',
-          "The library is unnamed. A URI is expected, not a library name "
-              "'{0}', in the part-of directive.",
-          correction:
-              "Try changing the part-of directive to a URI, or try including a "
-              "different part.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the prefix
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a name is used as both an import
-  // prefix and the name of a top-level declaration in the same library.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because `f` is used as both an
-  // import prefix and the name of a function:
-  //
-  // ```dart
-  // import 'dart:math' as f;
-  //
-  // int [!f!]() => f.min(0, 1);
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you want to use the name for the import prefix, then rename the
-  // top-level declaration:
-  //
-  // ```dart
-  // import 'dart:math' as f;
-  //
-  // int g() => f.min(0, 1);
-  // ```
-  //
-  // If you want to use the name for the top-level declaration, then rename the
-  // import prefix:
-  //
-  // ```dart
-  // import 'dart:math' as math;
-  //
-  // int f() => math.min(0, 1);
-  // ```
-  static const CompileTimeErrorCode PREFIX_COLLIDES_WITH_TOP_LEVEL_MEMBER =
-      CompileTimeErrorCode(
-          'PREFIX_COLLIDES_WITH_TOP_LEVEL_MEMBER',
-          "The name '{0}' is already used as an import prefix and can't be "
-              "used to name a top-level element.",
-          correction:
-              "Try renaming either the top-level element or the prefix.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the prefix
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an import prefix is used by
-  // itself, without accessing any of the names declared in the libraries
-  // associated with the prefix. Prefixes aren't variables, and therefore can't
-  // be used as a value.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the prefix `math` is
-  // being used as if it were a variable:
-  //
-  // ```dart
-  // import 'dart:math' as math;
-  //
-  // void f() {
-  //   print([!math!]);
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the code is incomplete, then reference something in one of the libraries
-  // associated with the prefix:
-  //
-  // ```dart
-  // import 'dart:math' as math;
-  //
-  // void f() {
-  //   print(math.pi);
-  // }
-  // ```
-  //
-  // If the name is wrong, then correct the name.
-  static const CompileTimeErrorCode PREFIX_IDENTIFIER_NOT_FOLLOWED_BY_DOT =
-      CompileTimeErrorCode(
-          'PREFIX_IDENTIFIER_NOT_FOLLOWED_BY_DOT',
-          "The name '{0}' refers to an import prefix, so it must be followed "
-              "by '.'.",
-          correction:
-              "Try correcting the name to refer to something other than a "
-              "prefix, or renaming the prefix.",
-          hasPublishedDocs: true);
-
-  /**
-   * From the `Static Types` section of the spec:
-   *
-   *     A type T is malformed if:
-   *     - T has the form id or the form prefix.id, and in the enclosing lexical
-   *       scope, the name id (respectively prefix.id) does not denote a type.
-   *
-   * In particular, this means that if an import prefix is shadowed by a local
-   * declaration, it is an error to try to use it as a prefix for a type name.
-   */
-  static const CompileTimeErrorCode PREFIX_SHADOWED_BY_LOCAL_DECLARATION =
-      CompileTimeErrorCode(
-          'PREFIX_SHADOWED_BY_LOCAL_DECLARATION',
-          "The prefix '{0}' can't be used here because it is shadowed by a "
-              "local declaration.",
-          correction:
-              "Try renaming either the prefix or the local declaration.");
-
-  /**
-   * Parameters:
-   * 0: the private name that collides
-   * 1: the name of the first mixin
-   * 2: the name of the second mixin
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when two mixins that define the same
-  // private member are used together in a single class in a library other than
-  // the one that defines the mixins.
-  //
-  // #### Example
-  //
-  // Given a file named `a.dart` containing the following code:
-  //
-  // ```dart
-  // %uri="lib/a.dart"
-  // class A {
-  //   void _foo() {}
-  // }
-  //
-  // class B {
-  //   void _foo() {}
-  // }
-  // ```
-  //
-  // The following code produces this diagnostic because the classes `A` and `B`
-  // both define the method `_foo`:
-  //
-  // ```dart
-  // import 'a.dart';
-  //
-  // class C extends Object with A, [!B!] {}
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you don't need both of the mixins, then remove one of them from the
-  // `with` clause:
-  //
-  // ```dart
-  // import 'a.dart';
-  //
-  // class C extends Object with A, [!B!] {}
-  // ```
-  //
-  // If you need both of the mixins, then rename the conflicting member in one
-  // of the two mixins.
-  static const CompileTimeErrorCode PRIVATE_COLLISION_IN_MIXIN_APPLICATION =
-      CompileTimeErrorCode(
-          'PRIVATE_COLLISION_IN_MIXIN_APPLICATION',
-          "The private name '{0}', defined by '{1}', "
-              "conflicts with the same name defined by '{2}'.",
-          correction: "Try removing '{1}' from the 'with' clause.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the name of a named parameter
-  // starts with an underscore.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the named parameter
-  // `_x` starts with an underscore:
-  //
-  // ```dart
-  // class C {
-  //   void m({int [!_x!] = 0}) {}
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Rename the parameter so that it doesn't start with an underscore:
-  //
-  // ```dart
-  // class C {
-  //   void m({int x = 0}) {}
-  // }
-  // ```
-  static const CompileTimeErrorCode PRIVATE_OPTIONAL_PARAMETER =
-      CompileTimeErrorCode('PRIVATE_OPTIONAL_PARAMETER',
-          "Named parameters can't start with an underscore.",
-          hasPublishedDocs: true);
-
-  static const CompileTimeErrorCode PRIVATE_SETTER = CompileTimeErrorCode(
-      'PRIVATE_SETTER',
-      "The setter '{0}' is private and can't be accessed outside of the "
-          "library that declares it.",
-      correction: "Try making it public.");
-
-  static const CompileTimeErrorCode READ_POTENTIALLY_UNASSIGNED_FINAL =
-      CompileTimeErrorCode(
-    'READ_POTENTIALLY_UNASSIGNED_FINAL',
-    "The final variable '{0}' can't be read because it is potentially "
-        "unassigned at this point.",
-    correction: "Ensure that it is assigned on necessary execution paths.",
-  );
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the value of a compile-time
-  // constant is defined in terms of itself, either directly or indirectly,
-  // creating an infinite loop.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic twice because both of the
-  // constants are defined in terms of the other:
-  //
-  // ```dart
-  // const [!secondsPerHour!] = minutesPerHour * 60;
-  // const [!minutesPerHour!] = secondsPerHour / 60;
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Break the cycle by finding an alternative way of defining at least one of
-  // the constants:
-  //
-  // ```dart
-  // const secondsPerHour = minutesPerHour * 60;
-  // const minutesPerHour = 60;
-  // ```
-  static const CompileTimeErrorCode RECURSIVE_COMPILE_TIME_CONSTANT =
-      CompileTimeErrorCode('RECURSIVE_COMPILE_TIME_CONSTANT',
-          "The compile-time constant expression depends on itself.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   *
-   * TODO(scheglov) review this later, there are no explicit "it is a
-   * compile-time error" in specification. But it was added to the co19 and
-   * there is same error for factories.
-   *
-   * https://code.google.com/p/dart/issues/detail?id=954
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a constructor redirects to
-  // itself, either directly or indirectly, creating an infinite loop.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the generative
-  // constructors `C.a` and `C.b` each redirect to the other:
-  //
-  // ```dart
-  // class C {
-  //   C.a() : [!this.b()!];
-  //   C.b() : [!this.a()!];
-  // }
-  // ```
-  //
-  // The following code produces this diagnostic because the factory
-  // constructors `A` and `B` each redirect to the other:
-  //
-  // ```dart
-  // abstract class A {
-  //   factory A() = [!B!];
-  // }
-  // class B implements A {
-  //   factory B() = [!A!];
-  //   B.named();
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // In the case of generative constructors, break the cycle by finding defining
-  // at least one of the constructors to not redirect to another constructor:
-  //
-  // ```dart
-  // class C {
-  //   C.a() : this.b();
-  //   C.b();
-  // }
-  // ```
-  //
-  // In the case of factory constructors, break the cycle by defining at least
-  // one of the factory constructors to do one of the following:
-  //
-  // - Redirect to a generative constructor:
-  //
-  // ```dart
-  // abstract class A {
-  //   factory A() = B;
-  // }
-  // class B implements A {
-  //   factory B() = B.named;
-  //   B.named();
-  // }
-  // ```
-  //
-  // - Not redirect to another constructor:
-  //
-  // ```dart
-  // abstract class A {
-  //   factory A() = B;
-  // }
-  // class B implements A {
-  //   factory B() {
-  //     return B.named();
-  //   }
-  //
-  //   B.named();
-  // }
-  // ```
-  //
-  // - Not be a factory constructor:
-  //
-  // ```dart
-  // abstract class A {
-  //   factory A() = B;
-  // }
-  // class B implements A {
-  //   B();
-  //   B.named();
-  // }
-  // ```
-  static const CompileTimeErrorCode RECURSIVE_CONSTRUCTOR_REDIRECT =
-      CompileTimeErrorCode(
-          'RECURSIVE_CONSTRUCTOR_REDIRECT',
-          "Constructors can't redirect to themselves either directly or "
-              "indirectly.",
-          correction: 'Try changing one of the constructors in the loop to not '
-              'redirect.',
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  static const CompileTimeErrorCode RECURSIVE_FACTORY_REDIRECT =
-      CompileTimeErrorCode(
-          'RECURSIVE_CONSTRUCTOR_REDIRECT',
-          "Constructors can't redirect to themselves either directly or "
-              "indirectly.",
-          correction: 'Try changing one of the constructors in the loop to not '
-              'redirect.',
-          hasPublishedDocs: true,
-          uniqueName: 'RECURSIVE_FACTORY_REDIRECT');
-
-  /**
-   * Parameters:
-   * 0: the name of the class that implements itself recursively
-   * 1: a string representation of the implements loop
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when there's a circularity in the
-  // type hierarchy. This happens when a type, either directly or indirectly,
-  // is declared to be a subtype of itself.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the class `A` is
-  // declared to be a subtype of `B`, and `B` is a subtype of `A`:
-  //
-  // ```dart
-  // class [!A!] extends B {}
-  // class B implements A {}
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Change the type hierarchy so that there's no circularity.
-  static const CompileTimeErrorCode RECURSIVE_INTERFACE_INHERITANCE =
-      CompileTimeErrorCode('RECURSIVE_INTERFACE_INHERITANCE',
-          "'{0}' can't be a superinterface of itself: {1}.",
-          hasPublishedDocs: true,
-          uniqueName: 'RECURSIVE_INTERFACE_INHERITANCE');
-
-  /**
-   * 7.10 Superinterfaces: It is a compile-time error if the interface of a
-   * class <i>C</i> is a superinterface of itself.
-   *
-   * 8.1 Superinterfaces: It is a compile-time error if an interface is a
-   * superinterface of itself.
-   *
-   * 7.9 Superclasses: It is a compile-time error if a class <i>C</i> is a
-   * superclass of itself.
-   *
-   * Parameters:
-   * 0: the name of the class that implements itself recursively
-   */
-  static const CompileTimeErrorCode RECURSIVE_INTERFACE_INHERITANCE_EXTENDS =
-      CompileTimeErrorCode(
-          'RECURSIVE_INTERFACE_INHERITANCE', "'{0}' can't extend itself.",
-          hasPublishedDocs: true,
-          uniqueName: 'RECURSIVE_INTERFACE_INHERITANCE_EXTENDS');
-
-  /**
-   * 7.10 Superinterfaces: It is a compile-time error if the interface of a
-   * class <i>C</i> is a superinterface of itself.
-   *
-   * 8.1 Superinterfaces: It is a compile-time error if an interface is a
-   * superinterface of itself.
-   *
-   * 7.9 Superclasses: It is a compile-time error if a class <i>C</i> is a
-   * superclass of itself.
-   *
-   * Parameters:
-   * 0: the name of the class that implements itself recursively
-   */
-  static const CompileTimeErrorCode RECURSIVE_INTERFACE_INHERITANCE_IMPLEMENTS =
-      CompileTimeErrorCode(
-          'RECURSIVE_INTERFACE_INHERITANCE', "'{0}' can't implement itself.",
-          hasPublishedDocs: true,
-          uniqueName: 'RECURSIVE_INTERFACE_INHERITANCE_IMPLEMENTS');
-
-  /**
-   * Parameters:
-   * 0: the name of the mixin that constraints itself recursively
-   */
-  static const CompileTimeErrorCode RECURSIVE_INTERFACE_INHERITANCE_ON =
-      CompileTimeErrorCode('RECURSIVE_INTERFACE_INHERITANCE',
-          "'{0}' can't use itself as a superclass constraint.",
-          hasPublishedDocs: true,
-          uniqueName: 'RECURSIVE_INTERFACE_INHERITANCE_ON');
-
-  /**
-   * 7.10 Superinterfaces: It is a compile-time error if the interface of a
-   * class <i>C</i> is a superinterface of itself.
-   *
-   * 8.1 Superinterfaces: It is a compile-time error if an interface is a
-   * superinterface of itself.
-   *
-   * 7.9 Superclasses: It is a compile-time error if a class <i>C</i> is a
-   * superclass of itself.
-   *
-   * Parameters:
-   * 0: the name of the class that implements itself recursively
-   */
-  static const CompileTimeErrorCode RECURSIVE_INTERFACE_INHERITANCE_WITH =
-      CompileTimeErrorCode('RECURSIVE_INTERFACE_INHERITANCE',
-          "'{0}' can't use itself as a mixin.",
-          hasPublishedDocs: true,
-          uniqueName: 'RECURSIVE_INTERFACE_INHERITANCE_WITH');
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a generative constructor
-  // redirects to a constructor that isn't defined.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the constructor `C.a`
-  // redirects to the constructor `C.b`, but `C.b` isn't defined:
-  //
-  // ```dart
-  // class C {
-  //   C.a() : [!this.b()!];
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the missing constructor must be called, then define it:
-  //
-  // ```dart
-  // class C {
-  //   C.a() : this.b();
-  //   C.b();
-  // }
-  // ```
-  //
-  // If the missing constructor doesn't need to be called, then remove the
-  // redirect:
-  //
-  // ```dart
-  // class C {
-  //   C.a();
-  // }
-  // ```
-  static const CompileTimeErrorCode REDIRECT_GENERATIVE_TO_MISSING_CONSTRUCTOR =
-      CompileTimeErrorCode('REDIRECT_GENERATIVE_TO_MISSING_CONSTRUCTOR',
-          "The constructor '{0}' couldn't be found in '{1}'.",
-          correction: "Try redirecting to a different constructor, or "
-              "defining the constructor named '{0}'.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a generative constructor
-  // redirects to a factory constructor.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the generative
-  // constructor `C.a` redirects to the factory constructor `C.b`:
-  //
-  // ```dart
-  // class C {
-  //   C.a() : [!this.b()!];
-  //   factory C.b() => C.a();
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the generative constructor doesn't need to redirect to another
-  // constructor, then remove the redirect.
-  //
-  // ```dart
-  // class C {
-  //   C.a();
-  //   factory C.b() => C.a();
-  // }
-  // ```
-  //
-  // If the generative constructor must redirect to another constructor, then
-  // make the other constructor be a generative (non-factory) constructor:
-  //
-  // ```dart
-  // class C {
-  //   C.a() : this.b();
-  //   C.b();
-  // }
-  // ```
-  static const CompileTimeErrorCode
-      REDIRECT_GENERATIVE_TO_NON_GENERATIVE_CONSTRUCTOR = CompileTimeErrorCode(
-          'REDIRECT_GENERATIVE_TO_NON_GENERATIVE_CONSTRUCTOR',
-          "Generative constructors can't redirect to a factory constructor.",
-          correction: "Try redirecting to a different constructor.",
-          hasPublishedDocs: true);
-
-  /**
-   * A factory constructor can't redirect to a non-generative constructor of an
-   * abstract class.
-   */
-  static const CompileTimeErrorCode REDIRECT_TO_ABSTRACT_CLASS_CONSTRUCTOR =
-      CompileTimeErrorCode(
-          'REDIRECT_TO_ABSTRACT_CLASS_CONSTRUCTOR',
-          "The redirecting constructor '{0}' can't redirect to a constructor "
-              "of the abstract class '{1}'.",
-          correction: "Try redirecting to a constructor of a different class.");
-
-  /**
-   * Parameters:
-   * 0: the name of the redirected constructor
-   * 1: the name of the redirecting constructor
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a factory constructor attempts
-  // to redirect to another constructor, but the two have incompatible
-  // parameters. The parameters are compatible if all of the parameters of the
-  // redirecting constructor can be passed to the other constructor and if the
-  // other constructor doesn't require any parameters that aren't declared by
-  // the redirecting constructor.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because the constructor for `A`
-  // doesn't declare a parameter that the constructor for `B` requires:
-  //
-  // ```dart
-  // abstract class A {
-  //   factory A() = [!B!];
-  // }
-  //
-  // class B implements A {
-  //   B(int x);
-  //   B.zero();
-  // }
-  // ```
-  //
-  // The following code produces this diagnostic because the constructor for `A`
-  // declares a named parameter (`y`) that the constructor for `B` doesn't
-  // allow:
-  //
-  // ```dart
-  // abstract class A {
-  //   factory A(int x, {int y}) = [!B!];
-  // }
-  //
-  // class B implements A {
-  //   B(int x);
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If there's a different constructor that is compatible with the redirecting
-  // constructor, then redirect to that constructor:
-  //
-  // ```dart
-  // abstract class A {
-  //   factory A() = B.zero;
-  // }
-  //
-  // class B implements A {
-  //   B(int x);
-  //   B.zero();
-  // }
-  // ```
-  //
-  // Otherwise, update the redirecting constructor to be compatible:
-  //
-  // ```dart
-  // abstract class A {
-  //   factory A(int x) = B;
-  // }
-  //
-  // class B implements A {
-  //   B(int x);
-  // }
-  // ```
-  static const CompileTimeErrorCode REDIRECT_TO_INVALID_FUNCTION_TYPE =
-      CompileTimeErrorCode(
-          'REDIRECT_TO_INVALID_FUNCTION_TYPE',
-          "The redirected constructor '{0}' has incompatible parameters with "
-              "'{1}'.",
-          correction: "Try redirecting to a different constructor.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the redirected constructor's return type
-   * 1: the name of the redirecting constructor's return type
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a factory constructor redirects
-  // to a constructor whose return type isn't a subtype of the type that the
-  // factory constructor is declared to produce.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `A` isn't a subclass
-  // of `C`, which means that the value returned by the constructor `A()`
-  // couldn't be returned from the constructor `C()`:
-  //
-  // ```dart
-  // class A {}
-  //
-  // class B implements C {}
-  //
-  // class C {
-  //   factory C() = [!A!];
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the factory constructor is redirecting to a constructor in the wrong
-  // class, then update the factory constructor to redirect to the correct
-  // constructor:
-  //
-  // ```dart
-  // class A {}
-  //
-  // class B implements C {}
-  //
-  // class C {
-  //   factory C() = B;
-  // }
-  // ```
-  //
-  // If the class defining the constructor being redirected to is the class that
-  // should be returned, then make it a subtype of the factory's return type:
-  //
-  // ```dart
-  // class A implements C {}
-  //
-  // class B implements C {}
-  //
-  // class C {
-  //   factory C() = A;
-  // }
-  // ```
-  static const CompileTimeErrorCode REDIRECT_TO_INVALID_RETURN_TYPE =
-      CompileTimeErrorCode(
-          'REDIRECT_TO_INVALID_RETURN_TYPE',
-          "The return type '{0}' of the redirected constructor isn't "
-              "a subtype of '{1}'.",
-          correction: "Try redirecting to a different constructor.",
-          hasPublishedDocs: true);
-
-  /**
-   * 7.6.2 Factories: It is a compile-time error if <i>k</i> is prefixed with
-   * the const modifier but <i>k'</i> is not a constant constructor.
-   */
-  static const CompileTimeErrorCode REDIRECT_TO_MISSING_CONSTRUCTOR =
-      CompileTimeErrorCode('REDIRECT_TO_MISSING_CONSTRUCTOR',
-          "The constructor '{0}' couldn't be found in '{1}'.",
-          correction: "Try redirecting to a different constructor, or "
-              "define the constructor named '{0}'.");
-
-  /**
-   * Parameters:
-   * 0: the name of the non-type referenced in the redirect
-   */
-  // #### Description
-  //
-  // One way to implement a factory constructor is to redirect to another
-  // constructor by referencing the name of the constructor. The analyzer
-  // produces this diagnostic when the redirect is to something other than a
-  // constructor.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `f` is a function:
-  //
-  // ```dart
-  // C f() => throw 0;
-  //
-  // class C {
-  //   factory C() = [!f!];
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the constructor isn't defined, then either define it or replace it with
-  // a constructor that is defined.
-  //
-  // If the constructor is defined but the class that defines it isn't visible,
-  // then you probably need to add an import.
-  //
-  // If you're trying to return the value returned by a function, then rewrite
-  // the constructor to return the value from the constructor's body:
-  //
-  // ```dart
-  // C f() => throw 0;
-  //
-  // class C {
-  //   factory C() => f();
-  // }
-  // ```
-  static const CompileTimeErrorCode REDIRECT_TO_NON_CLASS =
-      CompileTimeErrorCode(
-          'REDIRECT_TO_NON_CLASS',
-          "The name '{0}' isn't a type and can't be used in a redirected "
-              "constructor.",
-          correction: "Try redirecting to a different constructor.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a constructor marked as `const`
-  // redirects to a constructor that isn't marked as `const`.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the constructor `C.a`
-  // is marked as `const` but redirects to the constructor `C.b`, which isn't:
-  //
-  // ```dart
-  // class C {
-  //   const C.a() : this.[!b!]();
-  //   C.b();
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the non-constant constructor can be marked as `const`, then mark it as
-  // `const`:
-  //
-  // ```dart
-  // class C {
-  //   const C.a() : this.b();
-  //   const C.b();
-  // }
-  // ```
-  //
-  // If the non-constant constructor can't be marked as `const`, then either
-  // remove the redirect or remove `const` from the redirecting constructor:
-  //
-  // ```dart
-  // class C {
-  //   C.a() : this.b();
-  //   C.b();
-  // }
-  // ```
-  static const CompileTimeErrorCode REDIRECT_TO_NON_CONST_CONSTRUCTOR =
-      CompileTimeErrorCode(
-          'REDIRECT_TO_NON_CONST_CONSTRUCTOR',
-          "A constant redirecting constructor can't redirect to a non-constant "
-              "constructor.",
-          correction: "Try redirecting to a different constructor.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a redirecting factory
-  // constructor redirects to a type alias, and the type alias expands to one of
-  // the type parameters of the type alias. This isn’t allowed because the value
-  // of the type parameter is a type rather than a class.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the redirect to `B<A>`
-  // is to a type alias whose value is `T`, even though it looks like the value
-  // should be `A`:
-  //
-  // ```dart
-  // class A implements C {}
-  //
-  // typedef B<T> = T;
-  //
-  // abstract class C {
-  //   factory C() = [!B!]<A>;
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Use either a class name or a type alias that is defined to be a class
-  // rather than a type alias defined to be a type parameter:
-  //
-  // ```dart
-  // class A implements C {}
-  //
-  // abstract class C {
-  //   factory C() = A;
-  // }
-  // ```
-  static const CompileTimeErrorCode
-      REDIRECT_TO_TYPE_ALIAS_EXPANDS_TO_TYPE_PARAMETER = CompileTimeErrorCode(
-          'REDIRECT_TO_TYPE_ALIAS_EXPANDS_TO_TYPE_PARAMETER',
-          "A redirecting constructor can't redirect to a type alias that "
-              "expands to a type parameter.",
-          correction: "Try replacing it with a class.");
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a variable is referenced before
-  // it’s declared. In Dart, variables are visible everywhere in the block in
-  // which they are declared, but can only be referenced after they are
-  // declared.
-  //
-  // The analyzer also produces a context message that indicates where the
-  // declaration is located.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `i` is used before it
-  // is declared:
-  //
-  // ```dart
-  // %language=2.9
-  // void f() {
-  //   print([!i!]);
-  //   int i = 5;
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you intended to reference the local variable, move the declaration
-  // before the first reference:
-  //
-  // ```dart
-  // %language=2.9
-  // void f() {
-  //   int i = 5;
-  //   print(i);
-  // }
-  // ```
-  //
-  // If you intended to reference a name from an outer scope, such as a
-  // parameter, instance field or top-level variable, then rename the local
-  // declaration so that it doesn't hide the outer variable.
-  //
-  // ```dart
-  // %language=2.9
-  // void f(int i) {
-  //   print(i);
-  //   int x = 5;
-  //   print(x);
-  // }
-  // ```
-  static const CompileTimeErrorCode REFERENCED_BEFORE_DECLARATION =
-      CompileTimeErrorCode('REFERENCED_BEFORE_DECLARATION',
-          "Local variable '{0}' can't be referenced before it is declared.",
-          correction: "Try moving the declaration to before the first use, or "
-              "renaming the local variable so that it doesn't hide a name from "
-              "an enclosing scope.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a `rethrow` statement is outside
-  // a `catch` clause. The `rethrow` statement is used to throw a caught
-  // exception again, but there's no caught exception outside of a `catch`
-  // clause.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the`rethrow` statement
-  // is outside of a `catch` clause:
-  //
-  // ```dart
-  // void f() {
-  //   [!rethrow!];
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you're trying to rethrow an exception, then wrap the `rethrow` statement
-  // in a `catch` clause:
-  //
-  // ```dart
-  // void f() {
-  //   try {
-  //     // ...
-  //   } catch (exception) {
-  //     rethrow;
-  //   }
-  // }
-  // ```
-  //
-  // If you're trying to throw a new exception, then replace the `rethrow`
-  // statement with a `throw` expression:
-  //
-  // ```dart
-  // void f() {
-  //   throw UnsupportedError('Not yet implemented');
-  // }
-  // ```
-  static const CompileTimeErrorCode RETHROW_OUTSIDE_CATCH =
-      CompileTimeErrorCode('RETHROW_OUTSIDE_CATCH',
-          "A rethrow must be inside of a catch clause.",
-          correction:
-              "Try moving the expression into a catch clause, or using a "
-              "'throw' expression.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a generative constructor
-  // contains a `return` statement that specifies a value to be returned.
-  // Generative constructors always return the object that was created, and
-  // therefore can't return a different object.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the `return` statement
-  // has an expression:
-  //
-  // ```dart
-  // class C {
-  //   C() {
-  //     return [!this!];
-  //   }
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the constructor should create a new instance, then remove either the
-  // `return` statement or the expression:
-  //
-  // ```dart
-  // class C {
-  //   C();
-  // }
-  // ```
-  //
-  // If the constructor shouldn't create a new instance, then convert it to be a
-  // factory constructor:
-  //
-  // ```dart
-  // class C {
-  //   factory C() {
-  //     return _instance;
-  //   }
-  //
-  //   static C _instance = C._();
-  //
-  //   C._();
-  // }
-  // ```
-  static const CompileTimeErrorCode RETURN_IN_GENERATIVE_CONSTRUCTOR =
-      CompileTimeErrorCode('RETURN_IN_GENERATIVE_CONSTRUCTOR',
-          "Constructors can't return values.",
-          correction: "Try removing the return statement or using a factory "
-              "constructor.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a generator function (one whose
-  // body is marked with either `async*` or `sync*`) uses either a `return`
-  // statement to return a value or implicitly returns a value because of using
-  // `=>`. In any of these cases, they should use `yield` instead of `return`.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the method `f` is a
-  // generator and is using `return` to return a value:
-  //
-  // ```dart
-  // Iterable<int> f() sync* {
-  //   [!return 3!];
-  // }
-  // ```
-  //
-  // The following code produces this diagnostic because the function `f` is a
-  // generator and is implicitly returning a value:
-  //
-  // ```dart
-  // Stream<int> f() async* [!=>!] 3;
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the function is using `=>` for the body of the function, then convert it
-  // to a block function body, and use `yield` to return a value:
-  //
-  // ```dart
-  // Stream<int> f() async* {
-  //   yield 3;
-  // }
-  // ```
-  //
-  // If the method is intended to be a generator, then use `yield` to return a
-  // value:
-  //
-  // ```dart
-  // Iterable<int> f() sync* {
-  //   yield 3;
-  // }
-  // ```
-  //
-  // If the method isn't intended to be a generator, then remove the modifier
-  // from the body (or use `async` if you're returning a future):
-  //
-  // ```dart
-  // int f() {
-  //   return 3;
-  // }
-  // ```
-  static const CompileTimeErrorCode RETURN_IN_GENERATOR = CompileTimeErrorCode(
-      'RETURN_IN_GENERATOR',
-      "Can't return a value from a generator function that uses the 'async*' "
-          "or 'sync*' modifier.",
-      // TODO(srawlins): Splitting this code into two cases, one for block-
-      // bodied, and one for expression-bodied, would improve each correction
-      // message. This split would have to be done in the parser.
-      correction: "Try replacing 'return' with 'yield', using a block function "
-          "body, or changing the method body modifier.",
-      hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the return type as declared in the return statement
-   * 1: the expected return type as defined by the method
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the static type of a returned
-  // expression isn't assignable to the return type that the closure is required
-  // to have.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `f` is defined to be a
-  // function that returns a `String`, but the closure assigned to it returns an
-  // `int`:
-  //
-  // ```dart
-  // String Function(String) f = (s) => [!3!];
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the return type is correct, then replace the returned value with a value
-  // of the correct type, possibly by converting the existing value:
-  //
-  // ```dart
-  // String Function(String) f = (s) => 3.toString();
-  // ```
-  static const CompileTimeErrorCode RETURN_OF_INVALID_TYPE_FROM_CLOSURE =
-      CompileTimeErrorCode(
-          'RETURN_OF_INVALID_TYPE_FROM_CLOSURE',
-          "The return type '{0}' isn't a '{1}', as required by the closure's "
-              "context.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the return type as declared in the return statement
-   * 1: the expected return type as defined by the enclosing class
-   * 2: the name of the constructor
-   */
-  static const CompileTimeErrorCode RETURN_OF_INVALID_TYPE_FROM_CONSTRUCTOR =
-      CompileTimeErrorCode(
-    'RETURN_OF_INVALID_TYPE',
-    "A value of type '{0}' can't be returned from the constructor '{2}' "
-        "because it has a return type of '{1}'.",
-    hasPublishedDocs: true,
-    uniqueName: 'RETURN_OF_INVALID_TYPE_FROM_CONSTRUCTOR',
-  );
-
-  /**
-   * Parameters:
-   * 0: the return type as declared in the return statement
-   * 1: the expected return type as defined by the method
-   * 2: the name of the method
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a method or function returns a
-  // value whose type isn't assignable to the declared return type.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `f` has a return type
-  // of `String` but is returning an `int`:
-  //
-  // ```dart
-  // String f() => [!3!];
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the return type is correct, then replace the value being returned with a
-  // value of the correct type, possibly by converting the existing value:
-  //
-  // ```dart
-  // String f() => 3.toString();
-  // ```
-  //
-  // If the value is correct, then change the return type to match:
-  //
-  // ```dart
-  // int f() => 3;
-  // ```
-  static const CompileTimeErrorCode RETURN_OF_INVALID_TYPE_FROM_FUNCTION =
-      CompileTimeErrorCode(
-    'RETURN_OF_INVALID_TYPE',
-    "A value of type '{0}' can't be returned from the function '{2}' because "
-        "it has a return type of '{1}'.",
-    hasPublishedDocs: true,
-    uniqueName: 'RETURN_OF_INVALID_TYPE_FROM_FUNCTION',
-  );
-
-  /**
-   * Parameters:
-   * 0: the return type as declared in the return statement
-   * 1: the expected return type as defined by the method
-   * 2: the name of the method
-   */
-  static const CompileTimeErrorCode RETURN_OF_INVALID_TYPE_FROM_METHOD =
-      CompileTimeErrorCode(
-    'RETURN_OF_INVALID_TYPE',
-    "A value of type '{0}' can't be returned from the method '{2}' because "
-        "it has a return type of '{1}'.",
-    hasPublishedDocs: true,
-    uniqueName: 'RETURN_OF_INVALID_TYPE_FROM_METHOD',
-  );
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when it finds a `return` statement
-  // without an expression in a function that declares a return type.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because the function `f` is
-  // expected to return an `int`, but no value is being returned:
-  //
-  // ```dart
-  // int f() {
-  //   [!return!];
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Add an expression that computes the value to be returned:
-  //
-  // ```dart
-  // int f() {
-  //   return 0;
-  // }
-  // ```
-  static const CompileTimeErrorCode RETURN_WITHOUT_VALUE = CompileTimeErrorCode(
-      'RETURN_WITHOUT_VALUE', "The return value is missing after 'return'.",
-      hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  static const CompileTimeErrorCode SET_ELEMENT_FROM_DEFERRED_LIBRARY =
-      CompileTimeErrorCode(
-          'COLLECTION_ELEMENT_FROM_DEFERRED_LIBRARY',
-          "Constant values from a deferred library can't be used as values in "
-              "a 'const' set literal.",
-          correction:
-              "Try removing the keyword 'const' from the set literal or removing "
-              "the keyword 'deferred' from the import.",
-          hasPublishedDocs: true,
-          uniqueName: 'SET_ELEMENT_FROM_DEFERRED_LIBRARY');
-
-  /**
-   * Parameters:
-   * 0: the actual type of the set element
-   * 1: the expected type of the set element
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an element in a set literal has
-  // a type that isn't assignable to the element type of the set.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the type of the string
-  // literal `'0'` is `String`, which isn't assignable to `int`, the element
-  // type of the set:
-  //
-  // ```dart
-  // var s = <int>{[!'0'!]};
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the element type of the set literal is wrong, then change the element
-  // type of the set:
-  //
-  // ```dart
-  // var s = <String>{'0'};
-  // ```
-  //
-  // If the type of the element is wrong, then change the element:
-  //
-  // ```dart
-  // var s = <int>{'0'.length};
-  // ```
-  static const CompileTimeErrorCode SET_ELEMENT_TYPE_NOT_ASSIGNABLE =
-      CompileTimeErrorCode('SET_ELEMENT_TYPE_NOT_ASSIGNABLE',
-          "The element type '{0}' can't be assigned to the set type '{1}'.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a prefix in a deferred import is
-  // also used as a prefix in other imports (whether deferred or not). The
-  // prefix in a deferred import can't be shared with other imports because the
-  // prefix is used to load the imported library.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the prefix `x` is used
-  // as the prefix for a deferred import and is also used for one other import:
-  //
-  // ```dart
-  // import 'dart:math' [!deferred!] as x;
-  // import 'dart:convert' as x;
-  //
-  // var y = x.json.encode(x.min(0, 1));
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you can use a different name for the deferred import, then do so:
-  //
-  // ```dart
-  // import 'dart:math' deferred as math;
-  // import 'dart:convert' as x;
-  //
-  // var y = x.json.encode(math.min(0, 1));
-  // ```
-  //
-  // If you can use a different name for the other imports, then do so:
-  //
-  // ```dart
-  // import 'dart:math' deferred as x;
-  // import 'dart:convert' as convert;
-  //
-  // var y = convert.json.encode(x.min(0, 1));
-  // ```
-  static const CompileTimeErrorCode SHARED_DEFERRED_PREFIX =
-      CompileTimeErrorCode(
-          'SHARED_DEFERRED_PREFIX',
-          "The prefix of a deferred import can't be used in other import "
-              "directives.",
-          correction: "Try renaming one of the prefixes.",
-          hasPublishedDocs: true);
-
-  static const CompileTimeErrorCode SPREAD_EXPRESSION_FROM_DEFERRED_LIBRARY =
-      CompileTimeErrorCode(
-          'SPREAD_EXPRESSION_FROM_DEFERRED_LIBRARY',
-          "Constant values from a deferred library can't be spread into a "
-              "const literal.",
-          correction: "Try making the deferred import non-deferred.");
-
-  /**
-   * Parameters:
-   * 0: the name of the instance member
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a class name is used to access
-  // an instance field. Instance fields don't exist on a class; they exist only
-  // on an instance of the class.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `x` is an instance
-  // field:
-  //
-  // ```dart
-  // %language=2.9
-  // class C {
-  //   static int a;
-  //
-  //   int b;
-  // }
-  //
-  // int f() => C.[!b!];
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you intend to access a static field, then change the name of the field
-  // to an existing static field:
-  //
-  // ```dart
-  // %language=2.9
-  // class C {
-  //   static int a;
-  //
-  //   int b;
-  // }
-  //
-  // int f() => C.a;
-  // ```
-  //
-  // If you intend to access the instance field, then use an instance of the
-  // class to access the field:
-  //
-  // ```dart
-  // %language=2.9
-  // class C {
-  //   static int a;
-  //
-  //   int b;
-  // }
-  //
-  // int f(C c) => c.b;
-  // ```
-  static const CompileTimeErrorCode STATIC_ACCESS_TO_INSTANCE_MEMBER =
-      CompileTimeErrorCode('STATIC_ACCESS_TO_INSTANCE_MEMBER',
-          "Instance member '{0}' can't be accessed using static access.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a member declared inside an
-  // extension uses the `super` keyword . Extensions aren't classes and don't
-  // have superclasses, so the `super` keyword serves no purpose.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `super` can't be used
-  // in an extension:
-  //
-  // ```dart
-  // extension E on Object {
-  //   String get displayString => [!super!].toString();
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Remove the `super` keyword :
-  //
-  // ```dart
-  // extension E on Object {
-  //   String get displayString => toString();
-  // }
-  // ```
-  static const CompileTimeErrorCode SUPER_IN_EXTENSION = CompileTimeErrorCode(
-      'SUPER_IN_EXTENSION',
-      "The 'super' keyword can't be used in an extension because an "
-          "extension doesn't have a superclass.",
-      hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the keyword `super` is used
-  // outside of a instance method.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `super` is used in a
-  // top-level function:
-  //
-  // ```dart
-  // void f() {
-  //   [!super!].f();
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Rewrite the code to not use `super`.
-  static const CompileTimeErrorCode SUPER_IN_INVALID_CONTEXT =
-      CompileTimeErrorCode(
-          'SUPER_IN_INVALID_CONTEXT', "Invalid context for 'super' invocation.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a constructor that redirects to
-  // another constructor also attempts to invoke a constructor from the
-  // superclass. The superclass constructor will be invoked when the constructor
-  // that the redirecting constructor is redirected to is invoked.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the constructor `C.a`
-  // both redirects to `C.b` and invokes a constructor from the superclass:
-  //
-  // ```dart
-  // class C {
-  //   C.a() : this.b(), [!super()!];
-  //   C.b();
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Remove the invocation of the `super` constructor:
-  //
-  // ```dart
-  // class C {
-  //   C.a() : this.b();
-  //   C.b();
-  // }
-  // ```
-  static const CompileTimeErrorCode SUPER_IN_REDIRECTING_CONSTRUCTOR =
-      CompileTimeErrorCode('SUPER_IN_REDIRECTING_CONSTRUCTOR',
-          "The redirecting constructor can't have a 'super' initializer.",
-          hasPublishedDocs: true);
-
-  /**
-   * 7.6.1 Generative Constructors: Let <i>k</i> be a generative constructor. It
-   * is a compile-time error if a generative constructor of class Object
-   * includes a superinitializer.
-   */
-  static const CompileTimeErrorCode SUPER_INITIALIZER_IN_OBJECT =
-      CompileTimeErrorCode('SUPER_INITIALIZER_IN_OBJECT',
-          "The class 'Object' can't invoke a constructor from a superclass.");
-
-  /**
-   * It is an error if any case of a switch statement except the last case (the
-   * default case if present) may complete normally. The previous syntactic
-   * restriction requiring the last statement of each case to be one of an
-   * enumerated list of statements (break, continue, return, throw, or rethrow)
-   * is removed.
-   */
-  static const CompileTimeErrorCode SWITCH_CASE_COMPLETES_NORMALLY =
-      CompileTimeErrorCode('SWITCH_CASE_COMPLETES_NORMALLY',
-          "The 'case' should not complete normally.",
-          correction: "Try adding 'break', or 'return', etc.");
-
-  /**
-   * Parameters:
-   * 0: the static type of the switch expression
-   * 1: the static type of the case expressions
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the type of the expression in a
-  // `switch` statement isn't assignable to the type of the expressions in the
-  // `case` clauses.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the type of `s`
-  // (`String`) isn't assignable to the type of `0` (`int`):
-  //
-  // ```dart
-  // %language=2.9
-  // void f(String s) {
-  //   switch ([!s!]) {
-  //     case 0:
-  //       break;
-  //   }
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the type of the `case` expressions is correct, then change the
-  // expression in the `switch` statement to have the correct type:
-  //
-  // ```dart
-  // %language=2.9
-  // void f(String s) {
-  //   switch (int.parse(s)) {
-  //     case 0:
-  //       break;
-  //   }
-  // }
-  // ```
-  //
-  // If the type of the `switch` expression is correct, then change the `case`
-  // expressions to have the correct type:
-  //
-  // ```dart
-  // %language=2.9
-  // void f(String s) {
-  //   switch (s) {
-  //     case '0':
-  //       break;
-  //   }
-  // }
-  // ```
-  static const CompileTimeErrorCode SWITCH_EXPRESSION_NOT_ASSIGNABLE =
-      CompileTimeErrorCode(
-          'SWITCH_EXPRESSION_NOT_ASSIGNABLE',
-          "Type '{0}' of the switch expression isn't assignable to "
-              "the type '{1}' of case expressions.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a generative constructor from an
-  // abstract class is being torn off. This isn't allowed because it isn't valid
-  // to create an instance of an abstract class, which means that there isn't
-  // any valid use for the torn off constructor.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the constructor `C.new`
-  // is being torn off and the class `C` is an abstract class:
-  //
-  // ```dart
-  // abstract class C {
-  //   C();
-  // }
-  //
-  // void f() {
-  //   [!C.new!];
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Tear off the constructor of a concrete class.
-  static const CompileTimeErrorCode
-      TEAROFF_OF_GENERATIVE_CONSTRUCTOR_OF_ABSTRACT_CLASS =
-      CompileTimeErrorCode(
-          'TEAROFF_OF_GENERATIVE_CONSTRUCTOR_OF_ABSTRACT_CLASS',
-          "A generative constructor of an abstract class can't be torn off.",
-          correction: "Try tearing off a constructor of a concrete class, or a "
-              "non-generative constructor.");
-
-  /**
-   * Parameters:
-   * 0: the type that can't be thrown
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the type of the expression in a
-  // throw expression isn't assignable to `Object`. It isn't valid to throw
-  // `null`, so it isn't valid to use an expression that might evaluate to
-  // `null`.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because `s` might be `null`:
-  //
-  // ```dart
-  // void f(String? s) {
-  //   throw [!s!];
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Add an explicit null check to the expression:
-  //
-  // ```dart
-  // void f(String? s) {
-  //   throw s!;
-  // }
-  // ```
-  static const CompileTimeErrorCode THROW_OF_INVALID_TYPE = CompileTimeErrorCode(
-      'THROW_OF_INVALID_TYPE',
-      "The type '{0}' of the thrown expression must be assignable to 'Object'.",
-      hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the element whose type could not be inferred.
-   * 1: The [TopLevelInferenceError]'s arguments that led to the cycle.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a top-level variable has no type
-  // annotation and the variable's initializer refers to the variable, either
-  // directly or indirectly.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the variables `x` and
-  // `y` are defined in terms of each other, and neither has an explicit type,
-  // so the type of the other can't be inferred:
-  //
-  // ```dart
-  // var x = y;
-  // var y = [!x!];
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the two variables don't need to refer to each other, then break the
-  // cycle:
-  //
-  // ```dart
-  // var x = 0;
-  // var y = x;
-  // ```
-  //
-  // If the two variables need to refer to each other, then give at least one of
-  // them an explicit type:
-  //
-  // ```dart
-  // int x = y;
-  // var y = x;
-  // ```
-  //
-  // Note, however, that while this code doesn't produce any diagnostics, it
-  // will produce a stack overflow at runtime unless at least one of the
-  // variables is assigned a value that doesn't depend on the other variables
-  // before any of the variables in the cycle are referenced.
-  static const CompileTimeErrorCode TOP_LEVEL_CYCLE = CompileTimeErrorCode(
-      'TOP_LEVEL_CYCLE',
-      "The type of '{0}' can't be inferred because it depends on itself "
-          "through the cycle: {1}.",
-      correction:
-          "Try adding an explicit type to one or more of the variables in the "
-          "cycle in order to break the cycle.",
-      hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a typedef refers to itself,
-  // either directly or indirectly.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because `F` depends on itself
-  // indirectly through `G`:
-  //
-  // ```dart
-  // typedef [!F!] = void Function(G);
-  // typedef G = void Function(F);
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Change one or more of the typedefs in the cycle so that none of them refer
-  // to themselves:
-  //
-  // ```dart
-  // typedef F = void Function(G);
-  // typedef G = void Function(int);
-  // ```
-  static const CompileTimeErrorCode TYPE_ALIAS_CANNOT_REFERENCE_ITSELF =
-      CompileTimeErrorCode(
-          'TYPE_ALIAS_CANNOT_REFERENCE_ITSELF',
-          "Typedefs can't reference themselves directly or recursively via "
-              "another typedef.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the type that is deferred and being used in a type
-   *    annotation
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the type annotation is in a
-  // variable declaration, or the type used in a cast (`as`) or type test (`is`)
-  // is a type declared in a library that is imported using a deferred import.
-  // These types are required to be available at compile time, but aren't.
-  //
-  // For more information, see the language tour's coverage of
-  // [deferred loading](https://dart.dev/guides/language/language-tour#lazily-loading-a-library).
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the type of the
-  // parameter `f` is imported from a deferred library:
-  //
-  // ```dart
-  // import 'dart:io' deferred as io;
-  //
-  // void f([!io.File!] f) {}
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you need to reference the imported type, then remove the `deferred`
-  // keyword:
-  //
-  // ```dart
-  // import 'dart:io' as io;
-  //
-  // void f(io.File f) {}
-  // ```
-  //
-  // If the import is required to be deferred and there's another type that is
-  // appropriate, then use that type in place of the type from the deferred
-  // library.
-  static const CompileTimeErrorCode TYPE_ANNOTATION_DEFERRED_CLASS =
-      CompileTimeErrorCode(
-          'TYPE_ANNOTATION_DEFERRED_CLASS',
-          "The deferred type '{0}' can't be used in a declaration, cast, or "
-              "type test.",
-          correction: "Try using a different type, or "
-              "changing the import to not be deferred.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the type used in the instance creation that should be
-   *    limited by the bound as specified in the class declaration
-   * 1: the name of the type parameter
-   * 2: the substituted bound of the type parameter
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a type argument isn't the same
-  // as or a subclass of the bounds of the corresponding type parameter.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `String` isn't a
-  // subclass of `num`:
-  //
-  // ```dart
-  // class A<E extends num> {}
-  //
-  // var a = A<[!String!]>();
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Change the type argument to be a subclass of the bounds:
-  //
-  // ```dart
-  // class A<E extends num> {}
-  //
-  // var a = A<int>();
-  // ```
-  static const CompileTimeErrorCode TYPE_ARGUMENT_NOT_MATCHING_BOUNDS =
-      CompileTimeErrorCode(
-    'TYPE_ARGUMENT_NOT_MATCHING_BOUNDS',
-    "'{0}' doesn't conform to the bound '{2}' of the type parameter '{1}'.",
-    correction: "Try using a type that is or is a subclass of '{2}'.",
-    hasPublishedDocs: true,
-  );
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a static member references a
-  // type parameter that is declared for the class. Type parameters only have
-  // meaning for instances of the class.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the static method
-  // `hasType` has a reference to the type parameter `T`:
-  //
-  // ```dart
-  // class C<T> {
-  //   static bool hasType(Object o) => o is [!T!];
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the member can be an instance member, then remove the keyword `static`:
-  //
-  // ```dart
-  // class C<T> {
-  //   bool hasType(Object o) => o is T;
-  // }
-  // ```
-  //
-  // If the member must be a static member, then make the member be generic:
-  //
-  // ```dart
-  // class C<T> {
-  //   static bool hasType<S>(Object o) => o is S;
-  // }
-  // ```
-  //
-  // Note, however, that there isn’t a relationship between `T` and `S`, so this
-  // second option changes the semantics from what was likely to be intended.
-  static const CompileTimeErrorCode TYPE_PARAMETER_REFERENCED_BY_STATIC =
-      CompileTimeErrorCode('TYPE_PARAMETER_REFERENCED_BY_STATIC',
-          "Static members can't reference type parameters of the class.",
-          correction: "Try removing the reference to the type parameter, or "
-              "making the member an instance member.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the type parameter
-   * 1: the name of the bounding type
-   *
-   * See [CompileTimeErrorCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS].
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the bound of a type parameter
-  // (the type following the `extends` keyword) is either directly or indirectly
-  // the type parameter itself. Stating that the type parameter must be the same
-  // as itself or a subtype of itself or a subtype of itself isn't helpful
-  // because it will always be the same as itself.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the bound of `T` is
-  // `T`:
-  //
-  // ```dart
-  // class C<[!T!] extends T> {}
-  // ```
-  //
-  // The following code produces this diagnostic because the bound of `T1` is
-  // `T2`, and the bound of `T2` is `T1`, effectively making the bound of `T1`
-  // be `T1`:
-  //
-  // ```dart
-  // class C<[!T1!] extends T2, T2 extends T1> {}
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the type parameter needs to be a subclass of some type, then replace the
-  // bound with the required type:
-  //
-  // ```dart
-  // class C<T extends num> {}
-  // ```
-  //
-  // If the type parameter can be any type, then remove the `extends` clause:
-  //
-  // ```dart
-  // class C<T> {}
-  // ```
-  static const CompileTimeErrorCode TYPE_PARAMETER_SUPERTYPE_OF_ITS_BOUND =
-      CompileTimeErrorCode('TYPE_PARAMETER_SUPERTYPE_OF_ITS_BOUND',
-          "'{0}' can't be a supertype of its upper bound.",
-          correction:
-              "Try using a type that is the same as or a subclass of '{1}'.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the right-hand side of an `is`
-  // or `is!` test isn't a type.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the right-hand side is
-  // a parameter, not a type:
-  //
-  // ```dart
-  // typedef B = int Function(int);
-  //
-  // void f(Object a, B b) {
-  //   if (a is [!b!]) {
-  //     return;
-  //   }
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you intended to use a type test, then replace the right-hand side with a
-  // type:
-  //
-  // ```dart
-  // typedef B = int Function(int);
-  //
-  // void f(Object a, B b) {
-  //   if (a is B) {
-  //     return;
-  //   }
-  // }
-  // ```
-  //
-  // If you intended to use a different kind of test, then change the test:
-  //
-  // ```dart
-  // typedef B = int Function(int);
-  //
-  // void f(Object a, B b) {
-  //   if (a == b) {
-  //     return;
-  //   }
-  // }
-  // ```
-  static const CompileTimeErrorCode TYPE_TEST_WITH_NON_TYPE =
-      CompileTimeErrorCode(
-          'TYPE_TEST_WITH_NON_TYPE',
-          "The name '{0}' isn't a type and can't be used in an 'is' "
-              "expression.",
-          correction: "Try correcting the name to match an existing type.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the name following the `is` in a
-  // type test expression isn't defined.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because the name `Srting` isn't
-  // defined:
-  //
-  // ```dart
-  // void f(Object o) {
-  //   if (o is [!Srting!]) {
-  //     // ...
-  //   }
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Replace the name with the name of a type:
-  //
-  // ```dart
-  // void f(Object o) {
-  //   if (o is String) {
-  //     // ...
-  //   }
-  // }
-  // ```
-  static const CompileTimeErrorCode TYPE_TEST_WITH_UNDEFINED_NAME =
-      CompileTimeErrorCode(
-          'TYPE_TEST_WITH_UNDEFINED_NAME',
-          "The name '{0}' isn't defined, so it can't be used in an 'is' "
-              "expression.",
-          correction:
-              "Try changing the name to the name of an existing type, or "
-              "creating a type with the name '{0}'.",
-          hasPublishedDocs: true);
-
-  static const CompileTimeErrorCode UNCHECKED_INVOCATION_OF_NULLABLE_VALUE =
-      CompileTimeErrorCode('UNCHECKED_USE_OF_NULLABLE_VALUE',
-          "The function can't be unconditionally invoked because it can be 'null'.",
-          correction: "Try adding a null check ('!').",
-          hasPublishedDocs: true,
-          uniqueName: 'UNCHECKED_INVOCATION_OF_NULLABLE_VALUE');
-
-  static const CompileTimeErrorCode
-      UNCHECKED_METHOD_INVOCATION_OF_NULLABLE_VALUE = CompileTimeErrorCode(
-          'UNCHECKED_USE_OF_NULLABLE_VALUE',
-          "The method '{0}' can't be unconditionally invoked because the "
-              "receiver can be 'null'.",
-          correction:
-              "Try making the call conditional (using '?.') or adding a null "
-              "check to the target ('!').",
-          hasPublishedDocs: true,
-          uniqueName: 'UNCHECKED_METHOD_INVOCATION_OF_NULLABLE_VALUE');
-
-  static const CompileTimeErrorCode
-      UNCHECKED_OPERATOR_INVOCATION_OF_NULLABLE_VALUE = CompileTimeErrorCode(
-          'UNCHECKED_USE_OF_NULLABLE_VALUE',
-          "The operator '{0}' can't be unconditionally invoked because the "
-              "receiver can be 'null'.",
-          correction: "Try adding a null check to the target ('!').",
-          hasPublishedDocs: true,
-          uniqueName: 'UNCHECKED_OPERATOR_INVOCATION_OF_NULLABLE_VALUE');
-
-  static const CompileTimeErrorCode
-      UNCHECKED_PROPERTY_ACCESS_OF_NULLABLE_VALUE = CompileTimeErrorCode(
-          'UNCHECKED_USE_OF_NULLABLE_VALUE',
-          "The property '{0}' can't be unconditionally accessed because the "
-              "receiver can be 'null'.",
-          correction:
-              "Try making the access conditional (using '?.') or adding a null "
-              "check to the target ('!').",
-          hasPublishedDocs: true,
-          uniqueName: 'UNCHECKED_PROPERTY_ACCESS_OF_NULLABLE_VALUE');
-
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an expression whose type is
-  // [potentially non-nullable][] is dereferenced without first verifying that
-  // the value isn't `null`.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because `s` can be `null` at
-  // the point where it's referenced:
-  //
-  // ```dart
-  // void f(String? s) {
-  //   if (s.[!length!] > 3) {
-  //     // ...
-  //   }
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the value really can be `null`, then add a test to ensure that members
-  // are only accessed when the value isn't `null`:
-  //
-  // ```dart
-  // void f(String? s) {
-  //   if (s != null && s.length > 3) {
-  //     // ...
-  //   }
-  // }
-  // ```
-  //
-  // If the expression is a variable and the value should never be `null`, then
-  // change the type of the variable to be non-nullable:
-  //
-  // ```dart
-  // void f(String s) {
-  //   if (s.length > 3) {
-  //     // ...
-  //   }
-  // }
-  // ```
-  //
-  // If you believe that the value of the expression should never be `null`, but
-  // you can't change the type of the variable, and you're willing to risk
-  // having an exception thrown at runtime if you're wrong, then you can assert
-  // that the value isn't null:
-  //
-  // ```dart
-  // void f(String? s) {
-  //   if (s!.length > 3) {
-  //     // ...
-  //   }
-  // }
-  // ```
-  static const CompileTimeErrorCode
-      UNCHECKED_USE_OF_NULLABLE_VALUE_AS_CONDITION = CompileTimeErrorCode(
-          'UNCHECKED_USE_OF_NULLABLE_VALUE',
-          "A nullable expression can't be used as a condition.",
-          correction:
-              "Try checking that the value isn't 'null' before using it as a "
-              'condition.',
-          hasPublishedDocs: true,
-          uniqueName: 'UNCHECKED_USE_OF_NULLABLE_VALUE_AS_CONDITION');
-
-  static const CompileTimeErrorCode
-      UNCHECKED_USE_OF_NULLABLE_VALUE_AS_ITERATOR = CompileTimeErrorCode(
-          'UNCHECKED_USE_OF_NULLABLE_VALUE',
-          "A nullable expression can't be used as an iterator in a for-in "
-              'loop.',
-          correction:
-              "Try checking that the value isn't 'null' before using it as an "
-              'iterator.',
-          hasPublishedDocs: true,
-          uniqueName: 'UNCHECKED_USE_OF_NULLABLE_VALUE_AS_ITERATOR');
-
-  static const CompileTimeErrorCode UNCHECKED_USE_OF_NULLABLE_VALUE_IN_SPREAD =
-      CompileTimeErrorCode('UNCHECKED_USE_OF_NULLABLE_VALUE',
-          "A nullable expression can't be used in a spread.",
-          correction:
-              "Try checking that the value isn't 'null' before using it in a "
-              'spread, or use a null-aware spread.',
-          hasPublishedDocs: true,
-          uniqueName: 'UNCHECKED_USE_OF_NULLABLE_VALUE_IN_SPREAD');
-
-  static const CompileTimeErrorCode
-      UNCHECKED_USE_OF_NULLABLE_VALUE_IN_YIELD_EACH = CompileTimeErrorCode(
-          'UNCHECKED_USE_OF_NULLABLE_VALUE',
-          "A nullable expression can't be used in a yield-each statement.",
-          correction:
-              "Try checking that the value isn't 'null' before using it in a "
-              'yield-each statement.',
-          hasPublishedDocs: true,
-          uniqueName: 'UNCHECKED_USE_OF_NULLABLE_VALUE_IN_YIELD_EACH');
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a name that isn't defined is
-  // used as an annotation.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because the name `undefined`
-  // isn't defined:
-  //
-  // ```dart
-  // [!@undefined!]
-  // void f() {}
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the name is correct, but it isn’t declared yet, then declare the name as
-  // a constant value:
-  //
-  // ```dart
-  // const undefined = 'undefined';
-  //
-  // @undefined
-  // void f() {}
-  // ```
-  //
-  // If the name is wrong, replace the name with the name of a valid constant:
-  //
-  // ```dart
-  // @deprecated
-  // void f() {}
-  // ```
-  //
-  // Otherwise, remove the annotation.
-  static const CompileTimeErrorCode UNDEFINED_ANNOTATION = CompileTimeErrorCode(
-      'UNDEFINED_ANNOTATION', "Undefined name '{0}' used as an annotation.",
-      correction: "Try defining the name or importing it from another library.",
-      hasPublishedDocs: true,
-      isUnresolvedIdentifier: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the undefined class
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when it encounters an identifier that
-  // appears to be the name of a class but either isn't defined or isn't visible
-  // in the scope in which it's being referenced.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `Piont` isn't defined:
-  //
-  // ```dart
-  // class Point {}
-  //
-  // void f([!Piont!] p) {}
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the identifier isn't defined, then either define it or replace it with
-  // the name of a class that is defined. The example above can be corrected by
-  // fixing the spelling of the class:
-  //
-  // ```dart
-  // class Point {}
-  //
-  // void f(Point p) {}
-  // ```
-  //
-  // If the class is defined but isn't visible, then you probably need to add an
-  // import.
-  static const CompileTimeErrorCode UNDEFINED_CLASS = CompileTimeErrorCode(
-      'UNDEFINED_CLASS', "Undefined class '{0}'.",
-      correction: "Try changing the name to the name of an existing class, or "
-          "creating a class with the name '{0}'.",
-      hasPublishedDocs: true,
-      isUnresolvedIdentifier: true);
-
-  /**
-   * Same as [CompileTimeErrorCode.UNDEFINED_CLASS], but to catch using
-   * "boolean" instead of "bool" in order to improve the correction message.
-   *
-   * Parameters:
-   * 0: the name of the undefined class
-   */
-  static const CompileTimeErrorCode UNDEFINED_CLASS_BOOLEAN =
-      CompileTimeErrorCode('UNDEFINED_CLASS', "Undefined class '{0}'.",
-          correction: "Try using the type 'bool'.",
-          hasPublishedDocs: true,
-          isUnresolvedIdentifier: true,
-          uniqueName: 'UNDEFINED_CLASS_BOOLEAN');
-
-  /**
-   * Parameters:
-   * 0: the name of the superclass that does not define the invoked constructor
-   * 1: the name of the constructor being invoked
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a superclass constructor is
-  // invoked in the initializer list of a constructor, but the superclass
-  // doesn't define the constructor being invoked.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `A` doesn't have an
-  // unnamed constructor:
-  //
-  // ```dart
-  // class A {
-  //   A.n();
-  // }
-  // class B extends A {
-  //   B() : [!super()!];
-  // }
-  // ```
-  //
-  // The following code produces this diagnostic because `A` doesn't have a
-  // constructor named `m`:
-  //
-  // ```dart
-  // class A {
-  //   A.n();
-  // }
-  // class B extends A {
-  //   B() : [!super.m()!];
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the superclass defines a constructor that should be invoked, then change
-  // the constructor being invoked:
-  //
-  // ```dart
-  // class A {
-  //   A.n();
-  // }
-  // class B extends A {
-  //   B() : super.n();
-  // }
-  // ```
-  //
-  // If the superclass doesn't define an appropriate constructor, then define
-  // the constructor being invoked:
-  //
-  // ```dart
-  // class A {
-  //   A.m();
-  //   A.n();
-  // }
-  // class B extends A {
-  //   B() : super.m();
-  // }
-  // ```
-  static const CompileTimeErrorCode UNDEFINED_CONSTRUCTOR_IN_INITIALIZER =
-      CompileTimeErrorCode('UNDEFINED_CONSTRUCTOR_IN_INITIALIZER',
-          "The class '{0}' doesn't have a constructor named '{1}'.",
-          correction: "Try defining a constructor named '{1}' in '{0}', or "
-              "invoking a different constructor.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the superclass that does not define the invoked constructor
-   */
-  static const CompileTimeErrorCode
-      UNDEFINED_CONSTRUCTOR_IN_INITIALIZER_DEFAULT = CompileTimeErrorCode(
-    'UNDEFINED_CONSTRUCTOR_IN_INITIALIZER',
-    "The class '{0}' doesn't have an unnamed constructor.",
-    correction: "Try defining an unnamed constructor in '{0}', or "
-        "invoking a different constructor.",
-    hasPublishedDocs: true,
-    uniqueName: 'UNDEFINED_CONSTRUCTOR_IN_INITIALIZER_DEFAULT',
-  );
-
-  /**
-   * Parameters:
-   * 0: the name of the enumeration constant that is not defined
-   * 1: the name of the enumeration used to access the constant
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when it encounters an identifier that
-  // appears to be the name of an enum constant, and the name either isn't
-  // defined or isn't visible in the scope in which it's being referenced.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `E` doesn't define a
-  // constant named `c`:
-  //
-  // ```dart
-  // enum E {a, b}
-  //
-  // var e = E.[!c!];
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the constant should be defined, then add it to the declaration of the
-  // enum:
-  //
-  // ```dart
-  // enum E {a, b, c}
-  //
-  // var e = E.c;
-  // ```
-  //
-  // If the constant shouldn't be defined, then change the name to the name of
-  // an existing constant:
-  //
-  // ```dart
-  // enum E {a, b}
-  //
-  // var e = E.b;
-  // ```
-  static const CompileTimeErrorCode UNDEFINED_ENUM_CONSTANT =
-      CompileTimeErrorCode('UNDEFINED_ENUM_CONSTANT',
-          "There's no constant named '{0}' in '{1}'.",
-          correction:
-              "Try correcting the name to the name of an existing constant, or "
-              "defining a constant named '{0}'.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the getter that is undefined
-   * 1: the name of the extension that was explicitly specified
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an extension override is used to
-  // invoke a getter, but the getter isn't defined by the specified extension.
-  // The analyzer also produces this diagnostic when a static getter is
-  // referenced but isn't defined by the specified extension.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because the extension `E`
-  // doesn't declare an instance getter named `b`:
-  //
-  // ```dart
-  // extension E on String {
-  //   String get a => 'a';
-  // }
-  //
-  // extension F on String {
-  //   String get b => 'b';
-  // }
-  //
-  // void f() {
-  //   E('c').[!b!];
-  // }
-  // ```
-  //
-  // The following code produces this diagnostic because the extension `E`
-  // doesn't declare a static getter named `a`:
-  //
-  // ```dart
-  // extension E on String {}
-  //
-  // var x = E.[!a!];
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the name of the getter is incorrect, then change it to the name of an
-  // existing getter:
-  //
-  // ```dart
-  // extension E on String {
-  //   String get a => 'a';
-  // }
-  //
-  // extension F on String {
-  //   String get b => 'b';
-  // }
-  //
-  // void f() {
-  //   E('c').a;
-  // }
-  // ```
-  //
-  // If the name of the getter is correct but the name of the extension is
-  // wrong, then change the name of the extension to the correct name:
-  //
-  // ```dart
-  // extension E on String {
-  //   String get a => 'a';
-  // }
-  //
-  // extension F on String {
-  //   String get b => 'b';
-  // }
-  //
-  // void f() {
-  //   F('c').b;
-  // }
-  // ```
-  //
-  // If the name of the getter and extension are both correct, but the getter
-  // isn't defined, then define the getter:
-  //
-  // ```dart
-  // extension E on String {
-  //   String get a => 'a';
-  //   String get b => 'z';
-  // }
-  //
-  // extension F on String {
-  //   String get b => 'b';
-  // }
-  //
-  // void f() {
-  //   E('c').b;
-  // }
-  // ```
-  static const CompileTimeErrorCode UNDEFINED_EXTENSION_GETTER =
-      CompileTimeErrorCode('UNDEFINED_EXTENSION_GETTER',
-          "The getter '{0}' isn't defined for the extension '{1}'.",
-          correction:
-              "Try correcting the name to the name of an existing getter, or "
-              "defining a getter named '{0}'.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the method that is undefined
-   * 1: the name of the extension that was explicitly specified
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an extension override is used to
-  // invoke a method, but the method isn't defined by the specified extension.
-  // The analyzer also produces this diagnostic when a static method is
-  // referenced but isn't defined by the specified extension.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because the extension `E`
-  // doesn't declare an instance method named `b`:
-  //
-  // ```dart
-  // extension E on String {
-  //   String a() => 'a';
-  // }
-  //
-  // extension F on String {
-  //   String b() => 'b';
-  // }
-  //
-  // void f() {
-  //   E('c').[!b!]();
-  // }
-  // ```
-  //
-  // The following code produces this diagnostic because the extension `E`
-  // doesn't declare a static method named `a`:
-  //
-  // ```dart
-  // extension E on String {}
-  //
-  // var x = E.[!a!]();
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the name of the method is incorrect, then change it to the name of an
-  // existing method:
-  //
-  // ```dart
-  // extension E on String {
-  //   String a() => 'a';
-  // }
-  //
-  // extension F on String {
-  //   String b() => 'b';
-  // }
-  //
-  // void f() {
-  //   E('c').a();
-  // }
-  // ```
-  //
-  // If the name of the method is correct, but the name of the extension is
-  // wrong, then change the name of the extension to the correct name:
-  //
-  // ```dart
-  // extension E on String {
-  //   String a() => 'a';
-  // }
-  //
-  // extension F on String {
-  //   String b() => 'b';
-  // }
-  //
-  // void f() {
-  //   F('c').b();
-  // }
-  // ```
-  //
-  // If the name of the method and extension are both correct, but the method
-  // isn't defined, then define the method:
-  //
-  // ```dart
-  // extension E on String {
-  //   String a() => 'a';
-  //   String b() => 'z';
-  // }
-  //
-  // extension F on String {
-  //   String b() => 'b';
-  // }
-  //
-  // void f() {
-  //   E('c').b();
-  // }
-  // ```
-  static const CompileTimeErrorCode UNDEFINED_EXTENSION_METHOD =
-      CompileTimeErrorCode('UNDEFINED_EXTENSION_METHOD',
-          "The method '{0}' isn't defined for the extension '{1}'.",
-          correction:
-              "Try correcting the name to the name of an existing method, or "
-              "defining a method named '{0}'.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the operator that is undefined
-   * 1: the name of the extension that was explicitly specified
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an operator is invoked on a
-  // specific extension when that extension doesn't implement the operator.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the extension `E`
-  // doesn't define the operator `*`:
-  //
-  // ```dart
-  // var x = E('') [!*!] 4;
-  //
-  // extension E on String {}
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the extension is expected to implement the operator, then add an
-  // implementation of the operator to the extension:
-  //
-  // ```dart
-  // var x = E('') * 4;
-  //
-  // extension E on String {
-  //   int operator *(int multiplier) => length * multiplier;
-  // }
-  // ```
-  //
-  // If the operator is defined by a different extension, then change the name
-  // of the extension to the name of the one that defines the operator.
-  //
-  // If the operator is defined on the argument of the extension override, then
-  // remove the extension override:
-  //
-  // ```dart
-  // var x = '' * 4;
-  //
-  // extension E on String {}
-  // ```
-  static const CompileTimeErrorCode UNDEFINED_EXTENSION_OPERATOR =
-      CompileTimeErrorCode('UNDEFINED_EXTENSION_OPERATOR',
-          "The operator '{0}' isn't defined for the extension '{1}'.",
-          correction: "Try defining the operator '{0}'.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the setter that is undefined
-   * 1: the name of the extension that was explicitly specified
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an extension override is used to
-  // invoke a setter, but the setter isn't defined by the specified extension.
-  // The analyzer also produces this diagnostic when a static setter is
-  // referenced but isn't defined by the specified extension.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because the extension `E`
-  // doesn't declare an instance setter named `b`:
-  //
-  // ```dart
-  // extension E on String {
-  //   set a(String v) {}
-  // }
-  //
-  // extension F on String {
-  //   set b(String v) {}
-  // }
-  //
-  // void f() {
-  //   E('c').[!b!] = 'd';
-  // }
-  // ```
-  //
-  // The following code produces this diagnostic because the extension `E`
-  // doesn't declare a static setter named `a`:
-  //
-  // ```dart
-  // extension E on String {}
-  //
-  // void f() {
-  //   E.[!a!] = 3;
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the name of the setter is incorrect, then change it to the name of an
-  // existing setter:
-  //
-  // ```dart
-  // extension E on String {
-  //   set a(String v) {}
-  // }
-  //
-  // extension F on String {
-  //   set b(String v) {}
-  // }
-  //
-  // void f() {
-  //   E('c').a = 'd';
-  // }
-  // ```
-  //
-  // If the name of the setter is correct, but the name of the extension is
-  // wrong, then change the name of the extension to the correct name:
-  //
-  // ```dart
-  // extension E on String {
-  //   set a(String v) {}
-  // }
-  //
-  // extension F on String {
-  //   set b(String v) {}
-  // }
-  //
-  // void f() {
-  //   F('c').b = 'd';
-  // }
-  // ```
-  //
-  // If the name of the setter and extension are both correct, but the setter
-  // isn't defined, then define the setter:
-  //
-  // ```dart
-  // extension E on String {
-  //   set a(String v) {}
-  //   set b(String v) {}
-  // }
-  //
-  // extension F on String {
-  //   set b(String v) {}
-  // }
-  //
-  // void f() {
-  //   E('c').b = 'd';
-  // }
-  // ```
-  static const CompileTimeErrorCode UNDEFINED_EXTENSION_SETTER =
-      CompileTimeErrorCode('UNDEFINED_EXTENSION_SETTER',
-          "The setter '{0}' isn't defined for the extension '{1}'.",
-          correction:
-              "Try correcting the name to the name of an existing setter, or "
-              "defining a setter named '{0}'.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the method that is undefined
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when it encounters an identifier that
-  // appears to be the name of a function but either isn't defined or isn't
-  // visible in the scope in which it's being referenced.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because the name `emty` isn't
-  // defined:
-  //
-  // ```dart
-  // List<int> empty() => [];
-  //
-  // void main() {
-  //   print([!emty!]());
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the identifier isn't defined, then either define it or replace it with
-  // the name of a function that is defined. The example above can be corrected
-  // by fixing the spelling of the function:
-  //
-  // ```dart
-  // List<int> empty() => [];
-  //
-  // void main() {
-  //   print(empty());
-  // }
-  // ```
-  //
-  // If the function is defined but isn't visible, then you probably need to add
-  // an import or re-arrange your code to make the function visible.
-  static const CompileTimeErrorCode UNDEFINED_FUNCTION = CompileTimeErrorCode(
-      'UNDEFINED_FUNCTION', "The function '{0}' isn't defined.",
-      correction: "Try importing the library that defines '{0}', "
-          "correcting the name to the name of an existing function, or "
-          "defining a function named '{0}'.",
-      hasPublishedDocs: true,
-      isUnresolvedIdentifier: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the getter
-   * 1: the name of the enclosing type where the getter is being looked for
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when it encounters an identifier that
-  // appears to be the name of a getter but either isn't defined or isn't
-  // visible in the scope in which it's being referenced.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `String` has no member
-  // named `len`:
-  //
-  // ```dart
-  // int f(String s) => s.[!len!];
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the identifier isn't defined, then either define it or replace it with
-  // the name of a getter that is defined. The example above can be corrected by
-  // fixing the spelling of the getter:
-  //
-  // ```dart
-  // int f(String s) => s.length;
-  // ```
-  static const CompileTimeErrorCode UNDEFINED_GETTER = CompileTimeErrorCode(
-      'UNDEFINED_GETTER', "The getter '{0}' isn't defined for the type '{1}'.",
-      correction: "Try importing the library that defines '{0}', "
-          "correcting the name to the name of an existing getter, or "
-          "defining a getter or field named '{0}'.",
-      hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the getter
-   * 1: the name of the function type alias
-   */
-  static const CompileTimeErrorCode UNDEFINED_GETTER_ON_FUNCTION_TYPE =
-      CompileTimeErrorCode('UNDEFINED_GETTER',
-          "The getter '{0}' isn't defined for the '{1}' function type.",
-          correction: "Try wrapping the function type alias in parentheses in "
-              "order to access '{0}' as an extension getter on 'Type'.",
-          hasPublishedDocs: true,
-          uniqueName: 'UNDEFINED_GETTER_ON_FUNCTION_TYPE');
-
-  /**
-   * Parameters:
-   * 0: the name of the identifier
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when it encounters an identifier that
-  // either isn't defined or isn't visible in the scope in which it's being
-  // referenced.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because the name `rihgt` isn't
-  // defined:
-  //
-  // ```dart
-  // int min(int left, int right) => left <= [!rihgt!] ? left : right;
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the identifier isn't defined, then either define it or replace it with
-  // an identifier that is defined. The example above can be corrected by
-  // fixing the spelling of the variable:
-  //
-  // ```dart
-  // int min(int left, int right) => left <= right ? left : right;
-  // ```
-  //
-  // If the identifier is defined but isn't visible, then you probably need to
-  // add an import or re-arrange your code to make the identifier visible.
-  static const CompileTimeErrorCode UNDEFINED_IDENTIFIER =
-      CompileTimeErrorCode('UNDEFINED_IDENTIFIER', "Undefined name '{0}'.",
-          correction: "Try correcting the name to one that is defined, or "
-              "defining the name.",
-          hasPublishedDocs: true,
-          isUnresolvedIdentifier: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the name `await` is used in a
-  // method or function body without being declared, and the body isn't marked
-  // with the `async` keyword. The name `await` only introduces an await
-  // expression in an asynchronous function.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the name `await` is
-  // used in the body of `f` even though the body of `f` isn't marked with the
-  // `async` keyword:
-  //
-  // ```dart
-  // void f(p) { [!await!] p; }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Add the keyword `async` to the function body:
-  //
-  // ```dart
-  // void f(p) async { await p; }
-  // ```
-  static const CompileTimeErrorCode UNDEFINED_IDENTIFIER_AWAIT =
-      CompileTimeErrorCode('UNDEFINED_IDENTIFIER_AWAIT',
-          "Undefined name 'await' in function body not marked with 'async'.",
-          correction: "Try correcting the name to one that is defined, "
-              "defining the name, or "
-              "adding 'async' to the enclosing function body.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the method that is undefined
-   * 1: the resolved type name that the method lookup is happening on
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when it encounters an identifier that
-  // appears to be the name of a method but either isn't defined or isn't
-  // visible in the scope in which it's being referenced.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because the identifier
-  // `removeMiddle` isn't defined:
-  //
-  // ```dart
-  // int f(List<int> l) => l.[!removeMiddle!]();
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the identifier isn't defined, then either define it or replace it with
-  // the name of a method that is defined. The example above can be corrected by
-  // fixing the spelling of the method:
-  //
-  // ```dart
-  // int f(List<int> l) => l.removeLast();
-  // ```
-  static const CompileTimeErrorCode UNDEFINED_METHOD = CompileTimeErrorCode(
-      'UNDEFINED_METHOD', "The method '{0}' isn't defined for the type '{1}'.",
-      correction:
-          "Try correcting the name to the name of an existing method, or "
-          "defining a method named '{0}'.",
-      hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the method
-   * 1: the name of the function type alias
-   */
-  static const CompileTimeErrorCode UNDEFINED_METHOD_ON_FUNCTION_TYPE =
-      CompileTimeErrorCode('UNDEFINED_METHOD',
-          "The method '{0}' isn't defined for the '{1}' function type.",
-          correction: "Try wrapping the function type alias in parentheses in "
-              "order to access '{0}' as an extension method on 'Type'.",
-          hasPublishedDocs: true,
-          uniqueName: 'UNDEFINED_METHOD_ON_FUNCTION_TYPE');
-
-  /**
-   * Parameters:
-   * 0: the name of the requested named parameter
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a method or function invocation
-  // has a named argument, but the method or function being invoked doesn't
-  // define a parameter with the same name.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `m` doesn't declare a
-  // named parameter named `a`:
-  //
-  // ```dart
-  // %language=2.9
-  // class C {
-  //   m({int b}) {}
-  // }
-  //
-  // void f(C c) {
-  //   c.m([!a!]: 1);
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the argument name is mistyped, then replace it with the correct name.
-  // The example above can be fixed by changing `a` to `b`:
-  //
-  // ```dart
-  // %language=2.9
-  // class C {
-  //   m({int b}) {}
-  // }
-  //
-  // void f(C c) {
-  //   c.m(b: 1);
-  // }
-  // ```
-  //
-  // If a subclass adds a parameter with the name in question, then cast the
-  // receiver to the subclass:
-  //
-  // ```dart
-  // %language=2.9
-  // class C {
-  //   m({int b}) {}
-  // }
-  //
-  // class D extends C {
-  //   m({int a, int b}) {}
-  // }
-  //
-  // void f(C c) {
-  //   (c as D).m(a: 1);
-  // }
-  // ```
-  //
-  // If the parameter should be added to the function, then add it:
-  //
-  // ```dart
-  // %language=2.9
-  // class C {
-  //   m({int a, int b}) {}
-  // }
-  //
-  // void f(C c) {
-  //   c.m(a: 1);
-  // }
-  // ```
-  static const CompileTimeErrorCode UNDEFINED_NAMED_PARAMETER =
-      CompileTimeErrorCode('UNDEFINED_NAMED_PARAMETER',
-          "The named parameter '{0}' isn't defined.",
-          correction:
-              "Try correcting the name to an existing named parameter's name, "
-              "or defining a named parameter with the name '{0}'.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the operator
-   * 1: the name of the enclosing type where the operator is being looked for
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a user-definable operator is
-  // invoked on an object for which the operator isn't defined.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because the class `C` doesn't
-  // define the operator `+`:
-  //
-  // ```dart
-  // class C {}
-  //
-  // C f(C c) => c [!+!] 2;
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the operator should be defined for the class, then define it:
-  //
-  // ```dart
-  // class C {
-  //   C operator +(int i) => this;
-  // }
-  //
-  // C f(C c) => c + 2;
-  // ```
-  static const CompileTimeErrorCode UNDEFINED_OPERATOR = CompileTimeErrorCode(
-      'UNDEFINED_OPERATOR',
-      "The operator '{0}' isn't defined for the type '{1}'.",
-      correction: "Try defining the operator '{0}'.",
-      hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a prefixed identifier is found
-  // where the prefix is valid, but the identifier isn't declared in any of the
-  // libraries imported using that prefix.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `dart:core` doesn't
-  // define anything named `a`:
-  //
-  // ```dart
-  // import 'dart:core' as p;
-  //
-  // void f() {
-  //   p.[!a!];
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the library in which the name is declared isn't imported yet, add an
-  // import for the library.
-  //
-  // If the name is wrong, then change it to one of the names that's declared in
-  // the imported libraries.
-  static const CompileTimeErrorCode UNDEFINED_PREFIXED_NAME =
-      CompileTimeErrorCode(
-          'UNDEFINED_PREFIXED_NAME',
-          "The name '{0}' is being referenced through the prefix '{1}', but it "
-              "isn't defined in any of the libraries imported using that "
-              "prefix.",
-          correction: "Try correcting the prefix or "
-              "importing the library that defines '{0}'.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the setter
-   * 1: the name of the enclosing type where the setter is being looked for
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when it encounters an identifier that
-  // appears to be the name of a setter but either isn't defined or isn't
-  // visible in the scope in which the identifier is being referenced.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because there isn't a setter
-  // named `z`:
-  //
-  // ```dart
-  // class C {
-  //   int x = 0;
-  //   void m(int y) {
-  //     this.[!z!] = y;
-  //   }
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the identifier isn't defined, then either define it or replace it with
-  // the name of a setter that is defined. The example above can be corrected by
-  // fixing the spelling of the setter:
-  //
-  // ```dart
-  // class C {
-  //   int x = 0;
-  //   void m(int y) {
-  //     this.x = y;
-  //   }
-  // }
-  // ```
-  static const CompileTimeErrorCode UNDEFINED_SETTER = CompileTimeErrorCode(
-      'UNDEFINED_SETTER', "The setter '{0}' isn't defined for the type '{1}'.",
-      correction: "Try importing the library that defines '{0}', "
-          "correcting the name to the name of an existing setter, or "
-          "defining a setter or field named '{0}'.",
-      hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the setter
-   * 1: the name of the function type alias
-   */
-  static const CompileTimeErrorCode UNDEFINED_SETTER_ON_FUNCTION_TYPE =
-      CompileTimeErrorCode('UNDEFINED_SETTER',
-          "The setter '{0}' isn't defined for the '{1}' function type.",
-          correction: "Try wrapping the function type alias in parentheses in "
-              "order to access '{0}' as an extension getter on 'Type'.",
-          hasPublishedDocs: true,
-          uniqueName: 'UNDEFINED_SETTER_ON_FUNCTION_TYPE');
-
-  /**
-   * Parameters:
-   * 0: the name of the getter
-   * 1: the name of the enclosing type where the getter is being looked for
-   */
-  static const CompileTimeErrorCode UNDEFINED_SUPER_GETTER =
-      CompileTimeErrorCode(
-    'UNDEFINED_SUPER_MEMBER',
-    "The getter '{0}' isn't defined in a superclass of '{1}'.",
-    correction: "Try correcting the name to the name of an existing getter, or "
-        "defining a getter or field named '{0}' in a superclass.",
-    hasPublishedDocs: true,
-    uniqueName: 'UNDEFINED_SUPER_GETTER',
-  );
-
-  /**
-   * Parameters:
-   * 0: the name of the method that is undefined
-   * 1: the resolved type name that the method lookup is happening on
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an inherited member (method,
-  // getter, setter, or operator) is referenced using `super`, but there’s no
-  // member with that name in the superclass chain.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `Object` doesn't define
-  // a method named `n`:
-  //
-  // ```dart
-  // class C {
-  //   void m() {
-  //     super.[!n!]();
-  //   }
-  // }
-  // ```
-  //
-  // The following code produces this diagnostic because `Object` doesn't define
-  // a getter named `g`:
-  //
-  // ```dart
-  // class C {
-  //   void m() {
-  //     super.[!g!];
-  //   }
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the inherited member you intend to invoke has a different name, then
-  // make the name of the invoked member match the inherited member.
-  //
-  // If the member you intend to invoke is defined in the same class, then
-  // remove the `super.`.
-  //
-  // If the member isn’t defined, then either add the member to one of the
-  // superclasses or remove the invocation.
-  static const CompileTimeErrorCode UNDEFINED_SUPER_METHOD =
-      CompileTimeErrorCode(
-    'UNDEFINED_SUPER_MEMBER',
-    "The method '{0}' isn't defined in a superclass of '{1}'.",
-    correction: "Try correcting the name to the name of an existing method, or "
-        "defining a method named '{0}' in a superclass.",
-    hasPublishedDocs: true,
-    uniqueName: 'UNDEFINED_SUPER_METHOD',
-  );
-
-  /**
-   * Parameters:
-   * 0: the name of the operator
-   * 1: the name of the enclosing type where the operator is being looked for
-   */
-  static const CompileTimeErrorCode UNDEFINED_SUPER_OPERATOR =
-      CompileTimeErrorCode(
-    'UNDEFINED_SUPER_MEMBER',
-    "The operator '{0}' isn't defined in a superclass of '{1}'.",
-    correction: "Try defining the operator '{0}' in a superclass.",
-    hasPublishedDocs: true,
-    uniqueName: 'UNDEFINED_SUPER_OPERATOR',
-  );
-
-  /**
-   * Parameters:
-   * 0: the name of the setter
-   * 1: the name of the enclosing type where the setter is being looked for
-   */
-  static const CompileTimeErrorCode UNDEFINED_SUPER_SETTER =
-      CompileTimeErrorCode(
-    'UNDEFINED_SUPER_MEMBER',
-    "The setter '{0}' isn't defined in a superclass of '{1}'.",
-    correction: "Try correcting the name to the name of an existing setter, or "
-        "defining a setter or field named '{0}' in a superclass.",
-    hasPublishedDocs: true,
-    uniqueName: 'UNDEFINED_SUPER_SETTER',
-  );
-
-  /**
-   * This is a specialization of [INSTANCE_ACCESS_TO_STATIC_MEMBER] that is used
-   * when we are able to find the name defined in a supertype. It exists to
-   * provide a more informative error message.
-   *
-   * Parameters:
-   * 0: the name of the defining type
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when code in one class references a
-  // static member in a superclass without prefixing the member's name with the
-  // name of the superclass. Static members can only be referenced without a
-  // prefix in the class in which they're declared.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the static field `x` is
-  // referenced in the getter `g` without prefixing it with the name of the
-  // defining class:
-  //
-  // ```dart
-  // class A {
-  //   static int x = 3;
-  // }
-  //
-  // class B extends A {
-  //   int get g => [!x!];
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Prefix the name of the static member with the name of the declaring class:
-  //
-  // ```dart
-  // class A {
-  //   static int x = 3;
-  // }
-  //
-  // class B extends A {
-  //   int get g => A.x;
-  // }
-  // ```
-  static const CompileTimeErrorCode
-      UNQUALIFIED_REFERENCE_TO_NON_LOCAL_STATIC_MEMBER = CompileTimeErrorCode(
-          'UNQUALIFIED_REFERENCE_TO_NON_LOCAL_STATIC_MEMBER',
-          "Static members from supertypes must be qualified by the name of the "
-              "defining type.",
-          correction: "Try adding '{0}.' before the name.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the defining type
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an undefined name is found, and
-  // the name is the same as a static member of the extended type or one of its
-  // superclasses.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `m` is a static member
-  // of the extended type `C`:
-  //
-  // ```dart
-  // class C {
-  //   static void m() {}
-  // }
-  //
-  // extension E on C {
-  //   void f() {
-  //     [!m!]();
-  //   }
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you're trying to reference a static member that's declared outside the
-  // extension, then add the name of the class or extension before the reference
-  // to the member:
-  //
-  // ```dart
-  // class C {
-  //   static void m() {}
-  // }
-  //
-  // extension E on C {
-  //   void f() {
-  //     C.m();
-  //   }
-  // }
-  // ```
-  //
-  // If you're referencing a member that isn't declared yet, add a declaration:
-  //
-  // ```dart
-  // class C {
-  //   static void m() {}
-  // }
-  //
-  // extension E on C {
-  //   void f() {
-  //     m();
-  //   }
-  //
-  //   void m() {}
-  // }
-  // ```
-  static const CompileTimeErrorCode
-      UNQUALIFIED_REFERENCE_TO_STATIC_MEMBER_OF_EXTENDED_TYPE =
-      CompileTimeErrorCode(
-          'UNQUALIFIED_REFERENCE_TO_STATIC_MEMBER_OF_EXTENDED_TYPE',
-          "Static members from the extended type or one of its superclasses "
-              "must be qualified by the name of the defining type.",
-          correction: "Try adding '{0}.' before the name.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the URI pointing to a non-existent file
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an import, export, or part
-  // directive is found where the URI refers to a file that doesn't exist.
-  //
-  // #### Examples
-  //
-  // If the file `lib.dart` doesn't exist, the following code produces this
-  // diagnostic:
-  //
-  // ```dart
-  // import [!'lib.dart'!];
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the URI was mistyped or invalid, then correct the URI.
-  //
-  // If the URI is correct, then create the file.
-  static const CompileTimeErrorCode URI_DOES_NOT_EXIST = CompileTimeErrorCode(
-      'URI_DOES_NOT_EXIST', "Target of URI doesn't exist: '{0}'.",
-      correction: "Try creating the file referenced by the URI, or "
-          "Try using a URI for a file that does exist.",
-      hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the URI pointing to a non-existent file
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an import, export, or part
-  // directive is found where the URI refers to a file that doesn't exist and
-  // the name of the file ends with a pattern that's commonly produced by code
-  // generators, such as one of the following:
-  // - `.g.dart`
-  // - `.pb.dart`
-  // - `.pbenum.dart`
-  // - `.pbserver.dart`
-  // - `.pbjson.dart`
-  // - `.template.dart`
-  //
-  // #### Examples
-  //
-  // If the file `lib.g.dart` doesn't exist, the following code produces this
-  // diagnostic:
-  //
-  // ```dart
-  // import [!'lib.g.dart'!];
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the file is a generated file, then run the generator that generates the
-  // file.
-  //
-  // If the file isn't a generated file, then check the spelling of the URI or
-  // create the file.
-  static const CompileTimeErrorCode URI_HAS_NOT_BEEN_GENERATED =
-      CompileTimeErrorCode('URI_HAS_NOT_BEEN_GENERATED',
-          "Target of URI hasn't been generated: '{0}'.",
-          correction: "Try running the generator that will generate the file "
-              "referenced by the URI.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the string literal in an
-  // `import`, `export`, or `part` directive contains an interpolation. The
-  // resolution of the URIs in directives must happen before the declarations
-  // are compiled, so expressions can’t be  evaluated  while determining the
-  // values of the URIs.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the string in the
-  // `import` directive contains an interpolation:
-  //
-  // ```dart
-  // import [!'dart:$m'!];
-  //
-  // const m = 'math';
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Remove the interpolation from the URI:
-  //
-  // ```dart
-  // import 'dart:math';
-  //
-  // var zero = min(0, 0);
-  // ```
-  static const CompileTimeErrorCode URI_WITH_INTERPOLATION =
-      CompileTimeErrorCode(
-          'URI_WITH_INTERPOLATION', "URIs can't use string interpolation.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when it finds an expression whose
-  // type is `void`, and the expression is used in a place where a value is
-  // expected, such as before a member access or on the right-hand side of an
-  // assignment.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `f` doesn't produce an
-  // object on which `toString` can be invoked:
-  //
-  // ```dart
-  // void f() {}
-  //
-  // void g() {
-  //   [!f()!].toString();
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Either rewrite the code so that the expression has a value or rewrite the
-  // code so that it doesn't depend on the value.
-  static const CompileTimeErrorCode USE_OF_VOID_RESULT = CompileTimeErrorCode(
-      'USE_OF_VOID_RESULT',
-      "This expression has a type of 'void' so its value can't be used.",
-      correction:
-          "Try checking to see if you're using the correct API; there might "
-          "be a function or call that returns void you didn't expect. Also "
-          "check type parameters and variables which might also be void.",
-      hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the type of the object being assigned.
-   * 1: the type of the variable being assigned to
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the evaluation of a constant
-  // expression would result in a `CastException`.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because the value of `x` is an
-  // `int`, which can't be assigned to `y` because an `int` isn't a `String`:
-  //
-  // ```dart
-  // %language=2.9
-  // const Object x = 0;
-  // const String y = [!x!];
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the declaration of the constant is correct, then change the value being
-  // assigned to be of the correct type:
-  //
-  // ```dart
-  // %language=2.9
-  // const Object x = 0;
-  // const String y = '$x';
-  // ```
-  //
-  // If the assigned value is correct, then change the declaration to have the
-  // correct type:
-  //
-  // ```dart
-  // %language=2.9
-  // const Object x = 0;
-  // const int y = x;
-  // ```
-  static const CompileTimeErrorCode VARIABLE_TYPE_MISMATCH =
-      CompileTimeErrorCode(
-          'VARIABLE_TYPE_MISMATCH',
-          "A value of type '{0}' can't be assigned to a const variable of type "
-              "'{1}'.",
-          correction: "Try using a subtype, or removing the 'const' keyword",
-          hasPublishedDocs: true);
-
-  /**
-   * Let `C` be a generic class that declares a formal type parameter `X`, and
-   * assume that `T` is a direct superinterface of `C`.
-   *
-   * It is a compile-time error if `X` is explicitly defined as a covariant or
-   * 'in' type parameter and `X` occurs in a non-covariant position in `T`.
-   * It is a compile-time error if `X` is explicitly defined as a contravariant
-   * or 'out' type parameter and `X` occurs in a non-contravariant position in
-   * `T`.
-   *
-   * Parameters:
-   * 0: the name of the type parameter
-   * 1: the variance modifier defined for {0}
-   * 2: the variance position of the type parameter {0} in the
-   *    superinterface {3}
-   * 3: the name of the superinterface
-   */
-  static const CompileTimeErrorCode
-      WRONG_EXPLICIT_TYPE_PARAMETER_VARIANCE_IN_SUPERINTERFACE =
-      CompileTimeErrorCode(
-    'WRONG_EXPLICIT_TYPE_PARAMETER_VARIANCE_IN_SUPERINTERFACE',
-    "'{0}' is an '{1}' type parameter and can't be used in an '{2}' position in '{3}'.",
-    correction: "Try using 'in' type parameters in 'in' positions and 'out' "
-        "type parameters in 'out' positions in the superinterface.",
-  );
-
-  /**
-   * Parameters:
-   * 0: the name of the declared operator
-   * 1: the number of parameters expected
-   * 2: the number of parameters found in the operator declaration
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a declaration of an operator has
-  // the wrong number of parameters.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because the operator `+` must
-  // have a single parameter corresponding to the right operand:
-  //
-  // ```dart
-  // class C {
-  //   int operator [!+!](a, b) => 0;
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Add or remove parameters to match the required number:
-  //
-  // ```dart
-  // class C {
-  //   int operator +(a) => 0;
-  // }
-  // ```
-  // TODO(brianwilkerson) It would be good to add a link to the spec or some
-  //  other documentation that lists the number of parameters for each operator,
-  //  but I don't know what to link to.
-  static const CompileTimeErrorCode WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR =
-      CompileTimeErrorCode(
-          'WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR',
-          "Operator '{0}' should declare exactly {1} parameters, but {2} "
-              "found.",
-          hasPublishedDocs: true);
-
-  /**
-   * 7.1.1 Operators: It is a compile time error if the arity of the
-   * user-declared operator - is not 0 or 1.
-   *
-   * Parameters:
-   * 0: the number of parameters found in the operator declaration
-   */
-  static const CompileTimeErrorCode
-      WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR_MINUS = CompileTimeErrorCode(
-          'WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR',
-          "Operator '-' should declare 0 or 1 parameter, but {0} found.",
-          hasPublishedDocs: true,
-          uniqueName: 'WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR_MINUS');
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a setter is found that doesn't
-  // declare exactly one required positional parameter.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because the setter `s` declares
-  // two required parameters:
-  //
-  // ```dart
-  // %language=2.9
-  // class C {
-  //   set [!s!](int x, int y) {}
-  // }
-  // ```
-  //
-  // The following code produces this diagnostic because the setter `s` declares
-  // one optional parameter:
-  //
-  // ```dart
-  // %language=2.9
-  // class C {
-  //   set [!s!]([int x]) {}
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Change the declaration so that there's exactly one required positional
-  // parameter:
-  //
-  // ```dart
-  // %language=2.9
-  // class C {
-  //   set s(int x) {}
-  // }
-  // ```
-  static const CompileTimeErrorCode WRONG_NUMBER_OF_PARAMETERS_FOR_SETTER =
-      CompileTimeErrorCode('WRONG_NUMBER_OF_PARAMETERS_FOR_SETTER',
-          "Setters must declare exactly one required positional parameter.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the type being referenced (<i>G</i>)
-   * 1: the number of type parameters that were declared
-   * 2: the number of type arguments provided
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a type that has type parameters
-  // is used and type arguments are provided, but the number of type arguments
-  // isn't the same as the number of type parameters.
-  //
-  // The analyzer also produces this diagnostic when a constructor is invoked
-  // and the number of type arguments doesn't match the number of type
-  // parameters declared for the class.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because `C` has one type
-  // parameter but two type arguments are provided when it is used as a type
-  // annotation:
-  //
-  // ```dart
-  // class C<E> {}
-  //
-  // void f([!C<int, int>!] x) {}
-  // ```
-  //
-  // The following code produces this diagnostic because `C` declares one type
-  // parameter, but two type arguments are provided when creating an instance:
-  //
-  // ```dart
-  // class C<E> {}
-  //
-  // var c = [!C<int, int>!]();
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Add or remove type arguments, as necessary, to match the number of type
-  // parameters defined for the type:
-  //
-  // ```dart
-  // class C<E> {}
-  //
-  // void f(C<int> x) {}
-  // ```
-  static const CompileTimeErrorCode WRONG_NUMBER_OF_TYPE_ARGUMENTS =
-      CompileTimeErrorCode(
-          'WRONG_NUMBER_OF_TYPE_ARGUMENTS',
-          "The type '{0}' is declared with {1} type parameters, "
-              "but {2} type arguments were given.",
-          correction:
-              "Try adjusting the number of type arguments to match the number "
-              "of type parameters.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the number of type parameters that were declared
-   * 1: the number of type arguments provided
-   */
-  static const CompileTimeErrorCode
-      WRONG_NUMBER_OF_TYPE_ARGUMENTS_ANONYMOUS_FUNCTION = CompileTimeErrorCode(
-          'WRONG_NUMBER_OF_TYPE_ARGUMENTS_FUNCTION',
-          "This function is declared with {0} type parameters, "
-              "but {1} type arguments were given.",
-          correction:
-              "Try adjusting the number of type arguments to match the number "
-              "of type parameters.",
-          uniqueName: 'WRONG_NUMBER_OF_TYPE_ARGUMENTS_ANONYMOUS_FUNCTION');
-
-  /**
-   * Parameters:
-   * 0: the name of the class being instantiated
-   * 1: the name of the constructor being invoked
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when type arguments are provided
-  // after the name of a named constructor. Constructors can't declare type
-  // parameters, so invocations can only provide the type arguments associated
-  // with the class, and those type arguments are required to follow the name of
-  // the class rather than the name of the constructor.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the type parameters
-  // (`<String>`) follow the name of the constructor rather than the name of the
-  // class:
-  //
-  // ```dart
-  // class C<T> {
-  //   C.named();
-  // }
-  // C f() => C.named[!<String>!]();
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the type arguments are for the class' type parameters, then move the
-  // type arguments to follow the class name:
-  //
-  // ```dart
-  // class C<T> {
-  //   C.named();
-  // }
-  // C f() => C<String>.named();
-  // ```
-  //
-  // If the type arguments aren't for the class' type parameters, then remove
-  // them:
-  //
-  // ```dart
-  // class C<T> {
-  //   C.named();
-  // }
-  // C f() => C.named();
-  // ```
-  static const CompileTimeErrorCode WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR =
-      CompileTimeErrorCode('WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR',
-          "The constructor '{0}.{1}' doesn't have type parameters.",
-          correction: "Try moving type arguments to after the type name.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the extension being referenced
-   * 1: the number of type parameters that were declared
-   * 2: the number of type arguments provided
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an extension that has type
-  // parameters is used and type arguments are provided, but the number of type
-  // arguments isn't the same as the number of type parameters.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the extension `E` is
-  // declared to have a single type parameter (`T`), but the extension override
-  // has two type arguments:
-  //
-  // ```dart
-  // extension E<T> on List<T> {
-  //   int get len => length;
-  // }
-  //
-  // void f(List<int> p) {
-  //   E[!<int, String>!](p).len;
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Change the type arguments so that there are the same number of type
-  // arguments as there are type parameters:
-  //
-  // ```dart
-  // extension E<T> on List<T> {
-  //   int get len => length;
-  // }
-  //
-  // void f(List<int> p) {
-  //   E<int>(p).len;
-  // }
-  // ```
-  static const CompileTimeErrorCode WRONG_NUMBER_OF_TYPE_ARGUMENTS_EXTENSION =
-      CompileTimeErrorCode(
-          'WRONG_NUMBER_OF_TYPE_ARGUMENTS_EXTENSION',
-          "The extension '{0}' is declared with {1} type parameters, "
-              "but {2} type arguments were given.",
-          correction: "Try adjusting the number of type arguments.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the function being referenced
-   * 1: the number of type parameters that were declared
-   * 2: the number of type arguments provided
-   */
-  static const CompileTimeErrorCode WRONG_NUMBER_OF_TYPE_ARGUMENTS_FUNCTION =
-      CompileTimeErrorCode(
-          'WRONG_NUMBER_OF_TYPE_ARGUMENTS_FUNCTION',
-          "The function '{0}' is declared with {1} type parameters, "
-              "but {2} type arguments were given.",
-          correction:
-              "Try adjusting the number of type arguments to match the number "
-              "of type parameters.");
-
-  /**
-   * Parameters:
-   * 0: the name of the method being referenced (<i>G</i>)
-   * 1: the number of type parameters that were declared
-   * 2: the number of type arguments provided
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a method or function is invoked
-  // with a different number of type arguments than the number of type
-  // parameters specified in its declaration. There must either be no type
-  // arguments or the number of arguments must match the number of parameters.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the invocation of the
-  // method `m` has two type arguments, but the declaration of `m` only has one
-  // type parameter:
-  //
-  // ```dart
-  // class C {
-  //   int m<A>(A a) => 0;
-  // }
-  //
-  // int f(C c) => c.m[!<int, int>!](2);
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the type arguments are necessary, then make them match the number of
-  // type parameters by either adding or removing type arguments:
-  //
-  // ```dart
-  // class C {
-  //   int m<A>(A a) => 0;
-  // }
-  //
-  // int f(C c) => c.m<int>(2);
-  // ```
-  //
-  // If the type arguments aren't necessary, then remove them:
-  //
-  // ```dart
-  // class C {
-  //   int m<A>(A a) => 0;
-  // }
-  //
-  // int f(C c) => c.m(2);
-  // ```
-  static const CompileTimeErrorCode WRONG_NUMBER_OF_TYPE_ARGUMENTS_METHOD =
-      CompileTimeErrorCode(
-          'WRONG_NUMBER_OF_TYPE_ARGUMENTS_METHOD',
-          "The method '{0}' is declared with {1} type parameters, but {2} type "
-              "arguments are given.",
-          correction: "Try adjusting the number of type arguments.",
-          hasPublishedDocs: true);
-
-  /**
-   * Let `C` be a generic class that declares a formal type parameter `X`, and
-   * assume that `T` is a direct superinterface of `C`. It is a compile-time
-   * error if `X` occurs contravariantly or invariantly in `T`.
-   */
-  static const CompileTimeErrorCode
-      WRONG_TYPE_PARAMETER_VARIANCE_IN_SUPERINTERFACE = CompileTimeErrorCode(
-    'WRONG_TYPE_PARAMETER_VARIANCE_IN_SUPERINTERFACE',
-    "'{0}' can't be used contravariantly or invariantly in '{1}'.",
-    correction: "Try not using class type parameters in types of formal "
-        "parameters of function types, nor in explicitly contravariant or "
-        "invariant superinterfaces.",
-  );
-
-  /**
-   * Let `C` be a generic class that declares a formal type parameter `X`.
-   *
-   * If `X` is explicitly contravariant then it is a compile-time error for
-   * `X` to occur in a non-contravariant position in a member signature in the
-   * body of `C`, except when `X` is in a contravariant position in the type
-   * annotation of a covariant formal parameter.
-   *
-   * If `X` is explicitly covariant then it is a compile-time error for
-   * `X` to occur in a non-covariant position in a member signature in the
-   * body of `C`, except when `X` is in a covariant position in the type
-   * annotation of a covariant formal parameter.
-   *
-   * Parameters:
-   * 0: the variance modifier defined for {0}
-   * 1: the name of the type parameter
-   * 2: the variance position that the type parameter {1} is in
-   */
-  static const CompileTimeErrorCode WRONG_TYPE_PARAMETER_VARIANCE_POSITION =
-      CompileTimeErrorCode(
-    'WRONG_TYPE_PARAMETER_VARIANCE_POSITION',
-    "The '{0}' type parameter '{1}' can't be used in an '{2}' position.",
-    correction: "Try removing the type parameter or change the explicit "
-        "variance modifier declaration for the type parameter to another one "
-        "of 'in', 'out', or 'inout'.",
-  );
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a `yield` or `yield*` statement
-  // appears in a function whose body isn't marked with one of the `async*` or
-  // `sync*` modifiers.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because `yield` is being used
-  // in a function whose body doesn't have a modifier:
-  //
-  // ```dart
-  // Iterable<int> get digits {
-  //   yield* [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
-  // }
-  // ```
-  //
-  // The following code produces this diagnostic because `yield*` is being used
-  // in a function whose body has the `async` modifier rather than the `async*`
-  // modifier:
-  //
-  // ```dart
-  // Stream<int> get digits async {
-  //   yield* [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Add a modifier, or change the existing modifier to be either `async*` or
-  // `sync*`:
-  //
-  // ```dart
-  // Iterable<int> get digits sync* {
-  //   yield* [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
-  // }
-  // ```
-  static const CompileTimeErrorCode YIELD_EACH_IN_NON_GENERATOR =
-      CompileTimeErrorCode(
-          'YIELD_IN_NON_GENERATOR',
-          "Yield-each statements must be in a generator function "
-              "(one marked with either 'async*' or 'sync*').",
-          correction:
-              "Try adding 'async*' or 'sync*' to the enclosing function.",
-          hasPublishedDocs: true,
-          uniqueName: 'YIELD_EACH_IN_NON_GENERATOR');
-
-  /**
-   * ?? Yield: It is a compile-time error if a yield statement appears in a
-   * function that is not a generator function.
-   *
-   * No parameters.
-   */
-  static const CompileTimeErrorCode YIELD_IN_NON_GENERATOR =
-      CompileTimeErrorCode(
-          'YIELD_IN_NON_GENERATOR',
-          "Yield statements must be in a generator function "
-              "(one marked with either 'async*' or 'sync*').",
-          correction:
-              "Try adding 'async*' or 'sync*' to the enclosing function.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the type of the expression after `yield`
-   * 1: the return type of the function containing the `yield`
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the type of object produced by a
-  // `yield` expression doesn't match the type of objects that are to be
-  // returned from the `Iterable` or `Stream` types that are returned from a
-  // generator (a function or method marked with either `sync*` or `async*`).
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the getter `zero` is
-  // declared to return an `Iterable` that returns integers, but the `yield` is
-  // returning a string from the iterable:
-  //
-  // ```dart
-  // Iterable<int> get zero sync* {
-  //   yield [!'0'!];
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the return type of the function is correct, then fix the expression
-  // following the keyword `yield` to return the correct type:
-  //
-  // ```dart
-  // Iterable<int> get zero sync* {
-  //   yield 0;
-  // }
-  // ```
-  //
-  // If the expression following the `yield` is correct, then change the return
-  // type of the function to allow it:
-  //
-  // ```dart
-  // Iterable<String> get zero sync* {
-  //   yield '0';
-  // }
-  // ```
-  static const CompileTimeErrorCode YIELD_OF_INVALID_TYPE =
-      CompileTimeErrorCode(
-          'YIELD_OF_INVALID_TYPE',
-          "The type '{0}' implied by the 'yield' expression must be assignable "
-              "to '{1}'.",
-          hasPublishedDocs: true);
-
-  /**
-   * Initialize a newly created error code to have the given [name]. The message
-   * associated with the error will be created from the given [message]
-   * template. The correction associated with the error will be created from the
-   * given [correction] template.
-   */
-  const CompileTimeErrorCode(
-    String name,
-    String message, {
-    String? correction,
-    bool hasPublishedDocs = false,
-    bool isUnresolvedIdentifier = false,
-    String? uniqueName,
-  }) : super(
-          correction: correction,
-          hasPublishedDocs: hasPublishedDocs,
-          isUnresolvedIdentifier: isUnresolvedIdentifier,
-          message: message,
-          name: name,
-          uniqueName: 'CompileTimeErrorCode.${uniqueName ?? name}',
-        );
-
-  @override
-  ErrorSeverity get errorSeverity => ErrorType.COMPILE_TIME_ERROR.severity;
-
-  @override
-  ErrorType get type => ErrorType.COMPILE_TIME_ERROR;
-}
-
-/**
- * This class has experimental Language-specific codes.
- *
- * Currently it only contains codes related to implicit dynamic.
- */
-class LanguageCode extends ErrorCode {
-  /**
-   * This is appended to the end of an error message about implicit dynamic.
-   *
-   * The idea is to make sure the user is aware that this error message is the
-   * result of turning on a particular option, and they are free to turn it
-   * back off.
-   */
-  static const String _implicitDynamicCorrection =
-      "Try adding an explicit type, or remove implicit-dynamic from your "
-      "analysis options file.";
-
-  static const LanguageCode IMPLICIT_DYNAMIC_FIELD = LanguageCode(
-      'IMPLICIT_DYNAMIC_FIELD', "Missing field type for '{0}'.",
-      correction: _implicitDynamicCorrection);
-
-  static const LanguageCode IMPLICIT_DYNAMIC_FUNCTION = LanguageCode(
-      'IMPLICIT_DYNAMIC_FUNCTION',
-      "Missing type arguments for generic function '{0}<{1}>'.",
-      correction: _implicitDynamicCorrection);
-
-  static const LanguageCode IMPLICIT_DYNAMIC_INVOKE = LanguageCode(
-      'IMPLICIT_DYNAMIC_INVOKE',
-      "Missing type arguments for calling generic function type '{0}'.",
-      correction: _implicitDynamicCorrection);
-
-  static const LanguageCode IMPLICIT_DYNAMIC_LIST_LITERAL = LanguageCode(
-      'IMPLICIT_DYNAMIC_LIST_LITERAL',
-      "Missing type argument for list literal.",
-      correction: _implicitDynamicCorrection);
-
-  static const LanguageCode IMPLICIT_DYNAMIC_MAP_LITERAL = LanguageCode(
-      'IMPLICIT_DYNAMIC_MAP_LITERAL', "Missing type arguments for map literal.",
-      correction: _implicitDynamicCorrection);
-
-  static const LanguageCode IMPLICIT_DYNAMIC_METHOD = LanguageCode(
-      'IMPLICIT_DYNAMIC_METHOD',
-      "Missing type arguments for generic method '{0}<{1}>'.",
-      correction: _implicitDynamicCorrection);
-
-  static const LanguageCode IMPLICIT_DYNAMIC_PARAMETER = LanguageCode(
-      'IMPLICIT_DYNAMIC_PARAMETER', "Missing parameter type for '{0}'.",
-      correction: _implicitDynamicCorrection);
-
-  static const LanguageCode IMPLICIT_DYNAMIC_RETURN = LanguageCode(
-      'IMPLICIT_DYNAMIC_RETURN', "Missing return type for '{0}'.",
-      correction: _implicitDynamicCorrection);
-
-  static const LanguageCode IMPLICIT_DYNAMIC_TYPE = LanguageCode(
-      'IMPLICIT_DYNAMIC_TYPE', "Missing type arguments for generic type '{0}'.",
-      correction: _implicitDynamicCorrection);
-
-  static const LanguageCode IMPLICIT_DYNAMIC_VARIABLE = LanguageCode(
-      'IMPLICIT_DYNAMIC_VARIABLE', "Missing variable type for '{0}'.",
-      correction: _implicitDynamicCorrection);
-
-  @override
-  final ErrorType type = ErrorType.COMPILE_TIME_ERROR;
-
-  /**
-   * Initialize a newly created language code to have the given [type] and
-   * [name].
-   *
-   * The message associated with the code will be created from the given
-   * [message] template. The correction associated with the code will be
-   * created from the optional [correction] template.
-   */
-  const LanguageCode(String name, String message,
-      {String? correction, bool hasPublishedDocs = false})
-      : super(
-          correction: correction,
-          hasPublishedDocs: hasPublishedDocs,
-          message: message,
-          name: name,
-          uniqueName: 'LanguageCode.$name',
-        );
-
-  @override
-  ErrorSeverity get errorSeverity => type.severity;
-}
-
-/**
- * The error codes used for static warnings. The convention for this class is
- * for the name of the error code to indicate the problem that caused the error
- * to be generated and for the error message to explain what is wrong and, when
- * appropriate, how the problem can be corrected.
- */
-class StaticWarningCode extends AnalyzerErrorCode {
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic in two cases.
-  //
-  // The first is when the left operand of an `??` operator can't be `null`.
-  // The right operand is only evaluated if the left operand has the value
-  // `null`, and because the left operand can't be `null`, the right operand is
-  // never evaluated.
-  //
-  // The second is when the left-hand side of an assignment using the `??=`
-  // operator can't be `null`. The right-hand side is only evaluated if the
-  // left-hand side has the value `null`, and because the left-hand side can't
-  // be `null`, the right-hand side is never evaluated.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because `x` can't be `null`:
-  //
-  // ```dart
-  // int f(int x) {
-  //   return x ?? [!0!];
-  // }
-  // ```
-  //
-  // The following code produces this diagnostic because `f` can't be `null`:
-  //
-  // ```dart
-  // class C {
-  //   int f = -1;
-  //
-  //   void m(int x) {
-  //     f ??= [!x!];
-  //   }
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the diagnostic is reported for an `??` operator, then remove the `??`
-  // operator and the right operand:
-  //
-  // ```dart
-  // int f(int x) {
-  //   return x;
-  // }
-  // ```
-  //
-  // If the diagnostic is reported for an assignment, and the assignment isn't
-  // needed, then remove the assignment:
-  //
-  // ```dart
-  // class C {
-  //   int f = -1;
-  //
-  //   void m(int x) {
-  //   }
-  // }
-  // ```
-  //
-  // If the assignment is needed, but should be based on a different condition,
-  // then rewrite the code to use `=` and the different condition:
-  //
-  // ```dart
-  // class C {
-  //   int f = -1;
-  //
-  //   void m(int x) {
-  //     if (f < 0) {
-  //       f = x;
-  //     }
-  //   }
-  // }
-  // ```
-  static const StaticWarningCode DEAD_NULL_AWARE_EXPRESSION = StaticWarningCode(
-      'DEAD_NULL_AWARE_EXPRESSION',
-      "The left operand can't be null, so the right operand is never executed.",
-      correction: "Try removing the operator and the right operand.",
-      hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the null-aware operator that is invalid
-   * 1: the non-null-aware operator that can replace the invalid operator
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a null-aware operator (`?.`,
-  // `?..`, `?[`, `?..[`, or `...?`) is used on a receiver that's known to be
-  // non-nullable.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because `s` can't be `null`:
-  //
-  // ```dart
-  // int? getLength(String s) {
-  //   return s[!?.!]length;
-  // }
-  // ```
-  //
-  // The following code produces this diagnostic because `a` can't be `null`:
-  //
-  // ```dart
-  // var a = [];
-  // var b = [[!...?!]a];
-  // ```
-  //
-  // The following code produces this diagnostic because `s?.length` can't
-  // return `null`:
-  //
-  // ```dart
-  // void f(String? s) {
-  //   s?.length[!?.!]isEven;
-  // }
-  // ```
-  //
-  // The reason `s?.length` can't return `null` is because the null-aware
-  // operator following `s` short-circuits the evaluation of both `length` and
-  // `isEven` if `s` is `null`. In other words, if `s` is `null`, then neither
-  // `length` nor `isEven` will be invoked, and if `s` is non-`null`, then
-  // `length` can't return a `null` value. Either way, `isEven` can't be invoked
-  // on a `null` value, so the null-aware operator is not necessary. See
-  // [Understanding null safety](/null-safety/understanding-null-safety#smarter-null-aware-methods)
-  // for more details.
-  //
-  // The following code produces this diagnostic because `s` can't be `null`.
-  //
-  // ```dart
-  // void f(Object? o) {
-  //   var s = o as String;
-  //   s[!?.!]length;
-  // }
-  // ```
-  //
-  // The reason `s` can't be null, despite the fact that `o` can be `null`, is
-  // because of the cast to `String`, which is a non-nullable type. If `o` ever
-  // has the value `null`, the cast will fail and the invocation of `length`
-  // will not happen.
-  //
-  // #### Common fixes
-  //
-  // Replace the null-aware operator with a non-null-aware equivalent; for
-  // example, change `?.` to  `.`:
-  //
-  // ```dart
-  // int getLength(String s) {
-  //   return s.length;
-  // }
-  // ```
-  //
-  // (Note that the return type was also changed to be non-nullable, which might
-  // not be appropriate in some cases.)
-  static const StaticWarningCode INVALID_NULL_AWARE_OPERATOR =
-      StaticWarningCode(
-          'INVALID_NULL_AWARE_OPERATOR',
-          "The receiver can't be null, so the null-aware operator '{0}' is "
-              "unnecessary.",
-          correction: "Try replacing the operator '{0}' with '{1}'.",
-          hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the null-aware operator that is invalid
-   * 1: the non-null-aware operator that can replace the invalid operator
-   */
-  static const StaticWarningCode
-      INVALID_NULL_AWARE_OPERATOR_AFTER_SHORT_CIRCUIT = StaticWarningCode(
-    'INVALID_NULL_AWARE_OPERATOR',
-    "The receiver can't be null because of short-circuiting, so the "
-        "null-aware operator '{0}' can't be used.",
-    correction: "Try replacing the operator '{0}' with '{1}'.",
-    hasPublishedDocs: true,
-    uniqueName: 'INVALID_NULL_AWARE_OPERATOR_AFTER_SHORT_CIRCUIT',
-  );
-
-  /**
-   * 7.1 Instance Methods: It is a static warning if an instance method
-   * <i>m1</i> overrides an instance member <i>m2</i>, the signature of
-   * <i>m2</i> explicitly specifies a default value for a formal parameter
-   * <i>p</i> and the signature of <i>m1</i> specifies a different default value
-   * for <i>p</i>.
-   */
-  static const StaticWarningCode
-      INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_NAMED = StaticWarningCode(
-          'INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_NAMED',
-          "Parameters can't override default values, this method overrides "
-              "'{0}.{1}' where '{2}' has a different value.",
-          correction: "Try using the same default value in both methods.");
-
-  /**
-   * 7.1 Instance Methods: It is a static warning if an instance method
-   * <i>m1</i> overrides an instance member <i>m2</i>, the signature of
-   * <i>m2</i> explicitly specifies a default value for a formal parameter
-   * <i>p</i> and the signature of <i>m1</i> specifies a different default value
-   * for <i>p</i>.
-   */
-  static const StaticWarningCode
-      INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_POSITIONAL = StaticWarningCode(
-          'INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_POSITIONAL',
-          "Parameters can't override default values, this method overrides "
-              "'{0}.{1}' where this positional parameter has a different "
-              "value.",
-          correction: "Try using the same default value in both methods.");
-
-  /**
-   * Parameters:
-   * 0: the name of the constant that is missing
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a `switch` statement for an enum
-  // doesn't include an option for one of the values in the enumeration.
-  //
-  // Note that `null` is always a possible value for an enum and therefore also
-  // must be handled.
-  //
-  // #### Examples
-  //
-  // The following code produces this diagnostic because the enum constant `e2`
-  // isn't handled:
-  //
-  // ```dart
-  // enum E { e1, e2 }
-  //
-  // void f(E e) {
-  //   [!switch (e)!] {
-  //     case E.e1:
-  //       break;
-  //   }
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If there's special handling for the missing values, then add a `case`
-  // clause for each of the missing values:
-  //
-  // ```dart
-  // enum E { e1, e2 }
-  //
-  // void f(E e) {
-  //   switch (e) {
-  //     case E.e1:
-  //       break;
-  //     case E.e2:
-  //       break;
-  //   }
-  // }
-  // ```
-  //
-  // If the missing values should be handled the same way, then add a `default`
-  // clause:
-  //
-  // ```dart
-  // enum E { e1, e2 }
-  //
-  // void f(E e) {
-  //   switch (e) {
-  //     case E.e1:
-  //       break;
-  //     default:
-  //       break;
-  //   }
-  // }
-  // ```
-  // TODO(brianwilkerson) This documentation will need to be updated when NNBD
-  //  ships.
-  static const StaticWarningCode MISSING_ENUM_CONSTANT_IN_SWITCH =
-      StaticWarningCode(
-          'MISSING_ENUM_CONSTANT_IN_SWITCH', "Missing case clause for '{0}'.",
-          correction: "Try adding a case clause for the missing constant, or "
-              "adding a default clause.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the operand of the `!` operator
-  // can't be `null`.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because `x` can't be `null`:
-  //
-  // ```dart
-  // int f(int x) {
-  //   return x[!!!];
-  // }
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Remove the null check operator (`!`):
-  //
-  // ```dart
-  // int f(int x) {
-  //   return x;
-  // }
-  // ```
-  static const StaticWarningCode UNNECESSARY_NON_NULL_ASSERTION =
-      StaticWarningCode('UNNECESSARY_NON_NULL_ASSERTION',
-          "The '!' will have no effect because the receiver can't be null.",
-          correction: "Try removing the '!' operator.", hasPublishedDocs: true);
-
-  /**
-   * Initialize a newly created error code to have the given [name]. The message
-   * associated with the error will be created from the given [message]
-   * template. The correction associated with the error will be created from the
-   * given [correction] template.
-   */
-  const StaticWarningCode(
-    String name,
-    String message, {
-    String? correction,
-    bool hasPublishedDocs = false,
-    bool isUnresolvedIdentifier = false,
-    String? uniqueName,
-  }) : super(
-          correction: correction,
-          hasPublishedDocs: hasPublishedDocs,
-          isUnresolvedIdentifier: isUnresolvedIdentifier,
-          message: message,
-          name: name,
-          uniqueName: 'StaticWarningCode.${uniqueName ?? name}',
-        );
-
-  @override
-  ErrorSeverity get errorSeverity => ErrorSeverity.WARNING;
-
-  @override
-  ErrorType get type => ErrorType.STATIC_WARNING;
-}
+export 'package:analyzer/src/error/codes.g.dart';
diff --git a/pkg/analyzer/lib/src/error/codes.g.dart b/pkg/analyzer/lib/src/error/codes.g.dart
new file mode 100644
index 0000000..eb89966
--- /dev/null
+++ b/pkg/analyzer/lib/src/error/codes.g.dart
@@ -0,0 +1,16058 @@
+// Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+// THIS FILE IS GENERATED. DO NOT EDIT.
+//
+// Instead modify 'pkg/analyzer/messages.yaml' and run
+// 'dart pkg/analyzer/tool/messages/generate.dart' to update.
+
+import "package:analyzer/error/error.dart";
+import "package:analyzer/src/error/analyzer_error_code.dart";
+
+// It is hard to visually separate each code's _doc comment_ from its published
+// _documentation comment_ when each is written as an end-of-line comment.
+// ignore_for_file: slash_for_doc_comments
+
+class CompileTimeErrorCode extends AnalyzerErrorCode {
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a field that has the `abstract`
+  // modifier also has an initializer.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because `f` is marked as
+  // `abstract` and has an initializer:
+  //
+  // ```dart
+  // abstract class C {
+  //   abstract int [!f!] = 0;
+  // }
+  // ```
+  //
+  // The following code produces this diagnostic because `f` is marked as
+  // `abstract` and there's an initializer in the constructor:
+  //
+  // ```dart
+  // abstract class C {
+  //   abstract int f;
+  //
+  //   C() : [!f!] = 0;
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the field must be abstract, then remove the initializer:
+  //
+  // ```dart
+  // abstract class C {
+  //   abstract int f;
+  // }
+  // ```
+  //
+  // If the field isn't required to be abstract, then remove the keyword:
+  //
+  // ```dart
+  // abstract class C {
+  //   int f = 0;
+  // }
+  // ```
+  static const CompileTimeErrorCode ABSTRACT_FIELD_CONSTRUCTOR_INITIALIZER =
+      CompileTimeErrorCode(
+    'ABSTRACT_FIELD_INITIALIZER',
+    "Abstract fields can't have initializers.",
+    correction:
+        "Try removing the field initializer or the 'abstract' keyword from the field declaration.",
+    hasPublishedDocs: true,
+    uniqueName: 'ABSTRACT_FIELD_CONSTRUCTOR_INITIALIZER',
+  );
+
+  /**
+   * No parameters.
+   */
+  static const CompileTimeErrorCode ABSTRACT_FIELD_INITIALIZER =
+      CompileTimeErrorCode(
+    'ABSTRACT_FIELD_INITIALIZER',
+    "Abstract fields can't have initializers.",
+    correction: "Try removing the initializer or the 'abstract' keyword.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the display name for the kind of the found abstract member
+   * 1: the name of the member
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an inherited member is
+  // referenced using `super`, but there is no concrete implementation of the
+  // member in the superclass chain. Abstract members can't be invoked.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `B` doesn't inherit a
+  // concrete implementation of `a`:
+  //
+  // ```dart
+  // abstract class A {
+  //   int get a;
+  // }
+  // class B extends A {
+  //   int get a => super.[!a!];
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Remove the invocation of the abstract member, possibly replacing it with an
+  // invocation of a concrete member.
+  // TODO(brianwilkerson) This either needs to be generalized (use 'member'
+  //  rather than '{0}') or split into multiple codes.
+  static const CompileTimeErrorCode ABSTRACT_SUPER_MEMBER_REFERENCE =
+      CompileTimeErrorCode(
+    'ABSTRACT_SUPER_MEMBER_REFERENCE',
+    "The {0} '{1}' is always abstract in the supertype.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the ambiguous element
+   * 1: the name of the first library in which the type is found
+   * 2: the name of the second library in which the type is found
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when two or more export directives
+  // cause the same name to be exported from multiple libraries.
+  //
+  // #### Example
+  //
+  // Given a file named `a.dart` containing
+  //
+  // ```dart
+  // %uri="lib/a.dart"
+  // class C {}
+  // ```
+  //
+  // And a file named `b.dart` containing
+  //
+  // ```dart
+  // %uri="lib/b.dart"
+  // class C {}
+  // ```
+  //
+  // The following code produces this diagnostic because the name `C` is being
+  // exported from both `a.dart` and `b.dart`:
+  //
+  // ```dart
+  // export 'a.dart';
+  // export [!'b.dart'!];
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If none of the names in one of the libraries needs to be exported, then
+  // remove the unnecessary export directives:
+  //
+  // ```dart
+  // export 'a.dart';
+  // ```
+  //
+  // If all of the export directives are needed, then hide the name in all
+  // except one of the directives:
+  //
+  // ```dart
+  // export 'a.dart';
+  // export 'b.dart' hide C;
+  // ```
+  static const CompileTimeErrorCode AMBIGUOUS_EXPORT = CompileTimeErrorCode(
+    'AMBIGUOUS_EXPORT',
+    "The name '{0}' is defined in the libraries '{1}' and '{2}'.",
+    correction:
+        "Try removing the export of one of the libraries, or explicitly hiding the name in one of the export directives.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the member
+   * 1: the name of the first declaring extension
+   * 2: the name of the second declaring extension
+   */
+  // #### Description
+  //
+  // When code refers to a member of an object (for example, `o.m()` or `o.m` or
+  // `o[i]`) where the static type of `o` doesn't declare the member (`m` or
+  // `[]`, for example), then the analyzer tries to find the member in an
+  // extension. For example, if the member is `m`, then the analyzer looks for
+  // extensions that declare a member named `m` and have an extended type that
+  // the static type of `o` can be assigned to. When there's more than one such
+  // extension in scope, the extension whose extended type is most specific is
+  // selected.
+  //
+  // The analyzer produces this diagnostic when none of the extensions has an
+  // extended type that's more specific than the extended types of all of the
+  // other extensions, making the reference to the member ambiguous.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because there's no way to
+  // choose between the member in `E1` and the member in `E2`:
+  //
+  // ```dart
+  // extension E1 on String {
+  //   int get charCount => 1;
+  // }
+  //
+  // extension E2 on String {
+  //   int get charCount => 2;
+  // }
+  //
+  // void f(String s) {
+  //   print(s.[!charCount!]);
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you don't need both extensions, then you can delete or hide one of them.
+  //
+  // If you need both, then explicitly select the one you want to use by using
+  // an extension override:
+  //
+  // ```dart
+  // extension E1 on String {
+  //   int get charCount => length;
+  // }
+  //
+  // extension E2 on String {
+  //   int get charCount => length;
+  // }
+  //
+  // void f(String s) {
+  //   print(E2(s).charCount);
+  // }
+  // ```
+  static const CompileTimeErrorCode AMBIGUOUS_EXTENSION_MEMBER_ACCESS =
+      CompileTimeErrorCode(
+    'AMBIGUOUS_EXTENSION_MEMBER_ACCESS',
+    "A member named '{0}' is defined in extensions {1}, and none are more specific.",
+    correction:
+        "Try using an extension override to specify the extension you want to be chosen.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the ambiguous type
+   * 1: the name of the first library that the type is found
+   * 2: the name of the second library that the type is found
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a name is referenced that is
+  // declared in two or more imported libraries.
+  //
+  // #### Examples
+  //
+  // Given a library (`a.dart`) that defines a class (`C` in this example):
+  //
+  // ```dart
+  // %uri="lib/a.dart"
+  // class A {}
+  // class C {}
+  // ```
+  //
+  // And a library (`b.dart`) that defines a different class with the same name:
+  //
+  // ```dart
+  // %uri="lib/b.dart"
+  // class B {}
+  // class C {}
+  // ```
+  //
+  // The following code produces this diagnostic:
+  //
+  // ```dart
+  // import 'a.dart';
+  // import 'b.dart';
+  //
+  // void f([!C!] c1, [!C!] c2) {}
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If any of the libraries aren't needed, then remove the import directives
+  // for them:
+  //
+  // ```dart
+  // import 'a.dart';
+  //
+  // void f(C c1, C c2) {}
+  // ```
+  //
+  // If the name is still defined by more than one library, then add a `hide`
+  // clause to the import directives for all except one library:
+  //
+  // ```dart
+  // import 'a.dart' hide C;
+  // import 'b.dart';
+  //
+  // void f(C c1, C c2) {}
+  // ```
+  //
+  // If you must be able to reference more than one of these types, then add a
+  // prefix to each of the import directives, and qualify the references with
+  // the appropriate prefix:
+  //
+  // ```dart
+  // import 'a.dart' as a;
+  // import 'b.dart' as b;
+  //
+  // void f(a.C c1, b.C c2) {}
+  // ```
+  static const CompileTimeErrorCode AMBIGUOUS_IMPORT = CompileTimeErrorCode(
+    'AMBIGUOUS_IMPORT',
+    "The name '{0}' is defined in the libraries {1}.",
+    correction:
+        "Try using 'as prefix' for one of the import directives, or hiding the name from all but one of the imports.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // Because map and set literals use the same delimiters (`{` and `}`), the
+  // analyzer looks at the type arguments and the elements to determine which
+  // kind of literal you meant. When there are no type arguments, then the
+  // analyzer uses the types of the elements. If all of the elements are literal
+  // map entries and all of the spread operators are spreading a `Map` then it's
+  // a `Map`. If none of the elements are literal map entries and all of the
+  // spread operators are spreading an `Iterable`, then it's a `Set`. If neither
+  // of those is true then it's ambiguous.
+  //
+  // The analyzer produces this diagnostic when at least one element is a
+  // literal map entry or a spread operator spreading a `Map`, and at least one
+  // element is neither of these, making it impossible for the analyzer to
+  // determine whether you are writing a map literal or a set literal.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic:
+  //
+  // ```dart
+  // union(Map<String, String> a, List<String> b, Map<String, String> c) =>
+  //     [!{...a, ...b, ...c}!];
+  // ```
+  //
+  // The list `b` can only be spread into a set, and the maps `a` and `c` can
+  // only be spread into a map, and the literal can't be both.
+  //
+  // #### Common fixes
+  //
+  // There are two common ways to fix this problem. The first is to remove all
+  // of the spread elements of one kind or another, so that the elements are
+  // consistent. In this case, that likely means removing the list and deciding
+  // what to do about the now unused parameter:
+  //
+  // ```dart
+  // union(Map<String, String> a, List<String> b, Map<String, String> c) =>
+  //     {...a, ...c};
+  // ```
+  //
+  // The second fix is to change the elements of one kind into elements that are
+  // consistent with the other elements. For example, you can add the elements
+  // of the list as keys that map to themselves:
+  //
+  // ```dart
+  // union(Map<String, String> a, List<String> b, Map<String, String> c) =>
+  //     {...a, for (String s in b) s: s, ...c};
+  // ```
+  static const CompileTimeErrorCode AMBIGUOUS_SET_OR_MAP_LITERAL_BOTH =
+      CompileTimeErrorCode(
+    'AMBIGUOUS_SET_OR_MAP_LITERAL_BOTH',
+    "The literal can't be either a map or a set because it contains at least one literal map entry or a spread operator spreading a 'Map', and at least one element which is neither of these.",
+    correction:
+        "Try removing or changing some of the elements so that all of the elements are consistent.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // Because map and set literals use the same delimiters (`{` and `}`), the
+  // analyzer looks at the type arguments and the elements to determine which
+  // kind of literal you meant. When there are no type arguments and all of the
+  // elements are spread elements (which are allowed in both kinds of literals)
+  // then the analyzer uses the types of the expressions that are being spread.
+  // If all of the expressions have the type `Iterable`, then it's a set
+  // literal; if they all have the type `Map`, then it's a map literal.
+  //
+  // This diagnostic is produced when none of the expressions being spread have
+  // a type that allows the analyzer to decide whether you were writing a map
+  // literal or a set literal.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic:
+  //
+  // ```dart
+  // union(a, b) => [!{...a, ...b}!];
+  // ```
+  //
+  // The problem occurs because there are no type arguments, and there is no
+  // information about the type of either `a` or `b`.
+  //
+  // #### Common fixes
+  //
+  // There are three common ways to fix this problem. The first is to add type
+  // arguments to the literal. For example, if the literal is intended to be a
+  // map literal, you might write something like this:
+  //
+  // ```dart
+  // union(a, b) => <String, String>{...a, ...b};
+  // ```
+  //
+  // The second fix is to add type information so that the expressions have
+  // either the type `Iterable` or the type `Map`. You can add an explicit cast
+  // or, in this case, add types to the declarations of the two parameters:
+  //
+  // ```dart
+  // union(List<int> a, List<int> b) => {...a, ...b};
+  // ```
+  //
+  // The third fix is to add context information. In this case, that means
+  // adding a return type to the function:
+  //
+  // ```dart
+  // Set<String> union(a, b) => {...a, ...b};
+  // ```
+  //
+  // In other cases, you might add a type somewhere else. For example, say the
+  // original code looks like this:
+  //
+  // ```dart
+  // union(a, b) {
+  //   var x = [!{...a, ...b}!];
+  //   return x;
+  // }
+  // ```
+  //
+  // You might add a type annotation on `x`, like this:
+  //
+  // ```dart
+  // union(a, b) {
+  //   Map<String, String> x = {...a, ...b};
+  //   return x;
+  // }
+  // ```
+  static const CompileTimeErrorCode AMBIGUOUS_SET_OR_MAP_LITERAL_EITHER =
+      CompileTimeErrorCode(
+    'AMBIGUOUS_SET_OR_MAP_LITERAL_EITHER',
+    "This literal must be either a map or a set, but the elements don't have enough information for type inference to work.",
+    correction:
+        "Try adding type arguments to the literal (one for sets, two for maps).",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the actual argument type
+   * 1: the name of the expected type
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the static type of an argument
+  // can't be assigned to the static type of the corresponding parameter.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because a `num` can't be
+  // assigned to a `String`:
+  //
+  // ```dart
+  // %language=2.9
+  // String f(String x) => x;
+  // String g(num y) => f([!y!]);
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If possible, rewrite the code so that the static type is assignable. In the
+  // example above you might be able to change the type of the parameter `y`:
+  //
+  // ```dart
+  // %language=2.9
+  // String f(String x) => x;
+  // String g(String y) => f(y);
+  // ```
+  //
+  // If that fix isn't possible, then add code to handle the case where the
+  // argument value isn't the required type. One approach is to coerce other
+  // types to the required type:
+  //
+  // ```dart
+  // %language=2.9
+  // String f(String x) => x;
+  // String g(num y) => f(y.toString());
+  // ```
+  //
+  // Another approach is to add explicit type tests and fallback code:
+  //
+  // ```dart
+  // %language=2.9
+  // String f(String x) => x;
+  // String g(num y) => f(y is String ? y : '');
+  // ```
+  //
+  // If you believe that the runtime type of the argument will always be the
+  // same as the static type of the parameter, and you're willing to risk having
+  // an exception thrown at runtime if you're wrong, then add an explicit cast:
+  //
+  // ```dart
+  // String f(String x) => x;
+  // String g(num y) => f(y as String);
+  // ```
+  static const CompileTimeErrorCode ARGUMENT_TYPE_NOT_ASSIGNABLE =
+      CompileTimeErrorCode(
+    'ARGUMENT_TYPE_NOT_ASSIGNABLE',
+    "The argument type '{0}' can't be assigned to the parameter type '{1}'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a redirecting constructor (a
+  // constructor that redirects to another constructor in the same class) has an
+  // assert in the initializer list.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the unnamed constructor
+  // is a redirecting constructor and also has an assert in the initializer
+  // list:
+  //
+  // ```dart
+  // class C {
+  //   C(int x) : [!assert(x > 0)!], this.name();
+  //   C.name() {}
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the assert isn't needed, then remove it:
+  //
+  // ```dart
+  // class C {
+  //   C(int x) : this.name();
+  //   C.name() {}
+  // }
+  // ```
+  //
+  // If the assert is needed, then convert the constructor into a factory
+  // constructor:
+  //
+  // ```dart
+  // class C {
+  //   factory C(int x) {
+  //     assert(x > 0);
+  //     return C.name();
+  //   }
+  //   C.name() {}
+  // }
+  // ```
+  static const CompileTimeErrorCode ASSERT_IN_REDIRECTING_CONSTRUCTOR =
+      CompileTimeErrorCode(
+    'ASSERT_IN_REDIRECTING_CONSTRUCTOR',
+    "A redirecting constructor can't have an 'assert' initializer.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when it finds an assignment to a
+  // top-level variable, a static field, or a local variable that has the
+  // `const` modifier. The value of a compile-time constant can't be changed at
+  // runtime.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because `c` is being assigned a
+  // value even though it has the `const` modifier:
+  //
+  // ```dart
+  // const c = 0;
+  //
+  // void f() {
+  //   [!c!] = 1;
+  //   print(c);
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the variable must be assignable, then remove the `const` modifier:
+  //
+  // ```dart
+  // var c = 0;
+  //
+  // void f() {
+  //   c = 1;
+  //   print(c);
+  // }
+  // ```
+  //
+  // If the constant shouldn't be changed, then either remove the assignment or
+  // use a local variable in place of references to the constant:
+  //
+  // ```dart
+  // const c = 0;
+  //
+  // void f() {
+  //   var v = 1;
+  //   print(v);
+  // }
+  // ```
+  static const CompileTimeErrorCode ASSIGNMENT_TO_CONST = CompileTimeErrorCode(
+    'ASSIGNMENT_TO_CONST',
+    "Constant variables can't be assigned a value.",
+    correction:
+        "Try removing the assignment, or remove the modifier 'const' from the variable.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the final variable
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when it finds an invocation of a
+  // setter, but there's no setter because the field with the same name was
+  // declared to be `final` or `const`.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `v` is final:
+  //
+  // ```dart
+  // class C {
+  //   final v = 0;
+  // }
+  //
+  // f(C c) {
+  //   c.[!v!] = 1;
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you need to be able to set the value of the field, then remove the
+  // modifier `final` from the field:
+  //
+  // ```dart
+  // class C {
+  //   int v = 0;
+  // }
+  //
+  // f(C c) {
+  //   c.v = 1;
+  // }
+  // ```
+  static const CompileTimeErrorCode ASSIGNMENT_TO_FINAL = CompileTimeErrorCode(
+    'ASSIGNMENT_TO_FINAL',
+    "'{0}' can't be used as a setter because it's final.",
+    correction: "Try finding a different setter, or making '{0}' non-final.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a local variable that was
+  // declared to be final is assigned after it was initialized.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `x` is final, so it
+  // can't have a value assigned to it after it was initialized:
+  //
+  // ```dart
+  // void f() {
+  //   final x = 0;
+  //   [!x!] = 3;
+  //   print(x);
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Remove the keyword `final`, and replace it with `var` if there's no type
+  // annotation:
+  //
+  // ```dart
+  // void f() {
+  //   var x = 0;
+  //   x = 3;
+  //   print(x);
+  // }
+  // ```
+  static const CompileTimeErrorCode ASSIGNMENT_TO_FINAL_LOCAL =
+      CompileTimeErrorCode(
+    'ASSIGNMENT_TO_FINAL_LOCAL',
+    "The final variable '{0}' can only be set once.",
+    correction: "Try making '{0}' non-final.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a reference to a setter is
+  // found; there is no setter defined for the type; but there is a getter
+  // defined with the same name.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because there is no setter
+  // named `x` in `C`, but there is a getter named `x`:
+  //
+  // ```dart
+  // class C {
+  //   int get x => 0;
+  //   set y(int p) {}
+  // }
+  //
+  // void f(C c) {
+  //   c.[!x!] = 1;
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you want to invoke an existing setter, then correct the name:
+  //
+  // ```dart
+  // class C {
+  //   int get x => 0;
+  //   set y(int p) {}
+  // }
+  //
+  // void f(C c) {
+  //   c.y = 1;
+  // }
+  // ```
+  //
+  // If you want to invoke the setter but it just doesn't exist yet, then
+  // declare it:
+  //
+  // ```dart
+  // class C {
+  //   int get x => 0;
+  //   set x(int p) {}
+  //   set y(int p) {}
+  // }
+  //
+  // void f(C c) {
+  //   c.x = 1;
+  // }
+  // ```
+  static const CompileTimeErrorCode ASSIGNMENT_TO_FINAL_NO_SETTER =
+      CompileTimeErrorCode(
+    'ASSIGNMENT_TO_FINAL_NO_SETTER',
+    "There isn’t a setter named '{0}' in class '{1}'.",
+    correction:
+        "Try correcting the name to reference an existing setter, or declare the setter.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the name of a function appears
+  // on the left-hand side of an assignment expression.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the assignment to the
+  // function `f` is invalid:
+  //
+  // ```dart
+  // void f() {}
+  //
+  // void g() {
+  //   [!f!] = () {};
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the right-hand side should be assigned to something else, such as a
+  // local variable, then change the left-hand side:
+  //
+  // ```dart
+  // void f() {}
+  //
+  // void g() {
+  //   var x = () {};
+  //   print(x);
+  // }
+  // ```
+  //
+  // If the intent is to change the implementation of the function, then define
+  // a function-valued variable instead of a function:
+  //
+  // ```dart
+  // void Function() f = () {};
+  //
+  // void g() {
+  //   f = () {};
+  // }
+  // ```
+  static const CompileTimeErrorCode ASSIGNMENT_TO_FUNCTION =
+      CompileTimeErrorCode(
+    'ASSIGNMENT_TO_FUNCTION',
+    "Functions can't be assigned a value.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the target of an assignment is a
+  // method.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `f` can't be assigned a
+  // value because it's a method:
+  //
+  // ```dart
+  // class C {
+  //   void f() {}
+  //
+  //   void g() {
+  //     [!f!] = null;
+  //   }
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Rewrite the code so that there isn't an assignment to a method.
+  static const CompileTimeErrorCode ASSIGNMENT_TO_METHOD = CompileTimeErrorCode(
+    'ASSIGNMENT_TO_METHOD',
+    "Methods can't be assigned a value.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the name of a type name appears
+  // on the left-hand side of an assignment expression.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the assignment to the
+  // class `C` is invalid:
+  //
+  // ```dart
+  // class C {}
+  //
+  // void f() {
+  //   [!C!] = null;
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the right-hand side should be assigned to something else, such as a
+  // local variable, then change the left-hand side:
+  //
+  // ```dart
+  // void f() {}
+  //
+  // void g() {
+  //   var c = null;
+  //   print(c);
+  // }
+  // ```
+  static const CompileTimeErrorCode ASSIGNMENT_TO_TYPE = CompileTimeErrorCode(
+    'ASSIGNMENT_TO_TYPE',
+    "Types can't be assigned a value.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an async for-in loop is found in
+  // a function or method whose body isn't marked as being either `async` or
+  // `async*`.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the body of `f` isn't
+  // marked as being either `async` or `async*`, but `f` contains an async
+  // for-in loop:
+  //
+  // ```dart
+  // void f(list) {
+  //   await for (var e [!in!] list) {
+  //     print(e);
+  //   }
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the function should return a `Future`, then mark the body with `async`:
+  //
+  // ```dart
+  // Future<void> f(list) async {
+  //   await for (var e in list) {
+  //     print(e);
+  //   }
+  // }
+  // ```
+  //
+  // If the function should return a `Stream` of values, then mark the body with
+  // `async*`:
+  //
+  // ```dart
+  // Stream<void> f(list) async* {
+  //   await for (var e in list) {
+  //     print(e);
+  //   }
+  // }
+  // ```
+  //
+  // If the function should be synchronous, then remove the `await` before the
+  // loop:
+  //
+  // ```dart
+  // void f(list) {
+  //   for (var e in list) {
+  //     print(e);
+  //   }
+  // }
+  // ```
+  static const CompileTimeErrorCode ASYNC_FOR_IN_WRONG_CONTEXT =
+      CompileTimeErrorCode(
+    'ASYNC_FOR_IN_WRONG_CONTEXT',
+    "The async for-in loop can only be used in an async function.",
+    correction:
+        "Try marking the function body with either 'async' or 'async*', or removing the 'await' before the for-in loop.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a local variable that has the
+  // `late` modifier uses an `await` expression in the initializer.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because an `await` expression
+  // is used in the initializer for `v`, a local variable that is marked `late`:
+  //
+  // ```dart
+  // Future<int> f() async {
+  //   late var v = [!await!] 42;
+  //   return v;
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the initializer can be rewritten to not use `await`, then rewrite it:
+  //
+  // ```dart
+  // Future<int> f() async {
+  //   late var v = 42;
+  //   return v;
+  // }
+  // ```
+  //
+  // If the initializer can't be rewritten, then remove the `late` modifier:
+  //
+  // ```dart
+  // Future<int> f() async {
+  //   var v = await 42;
+  //   return v;
+  // }
+  // ```
+  static const CompileTimeErrorCode AWAIT_IN_LATE_LOCAL_VARIABLE_INITIALIZER =
+      CompileTimeErrorCode(
+    'AWAIT_IN_LATE_LOCAL_VARIABLE_INITIALIZER',
+    "The 'await' expression can't be used in a 'late' local variable's initializer.",
+    correction:
+        "Try removing the 'late' modifier, or rewriting the initializer without using the 'await' expression.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * 16.30 Await Expressions: It is a compile-time error if the function
+   * immediately enclosing _a_ is not declared asynchronous. (Where _a_ is the
+   * await expression.)
+   */
+  static const CompileTimeErrorCode AWAIT_IN_WRONG_CONTEXT =
+      CompileTimeErrorCode(
+    'AWAIT_IN_WRONG_CONTEXT',
+    "The await expression can only be used in an async function.",
+    correction:
+        "Try marking the function body with either 'async' or 'async*'.",
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a method or function has a
+  // return type that's [potentially non-nullable][] but would implicitly return
+  // `null` if control reached the end of the function.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the method `m` has an
+  // implicit return of `null` inserted at the end of the method, but the method
+  // is declared to not return `null`:
+  //
+  // ```dart
+  // class C {
+  //   int [!m!](int t) {
+  //     print(t);
+  //   }
+  // }
+  // ```
+  //
+  // The following code produces this diagnostic because the method `m` has an
+  // implicit return of `null` inserted at the end of the method, but because
+  // the class `C` can be instantiated with a non-nullable type argument, the
+  // method is effectively declared to not return `null`:
+  //
+  // ```dart
+  // class C<T> {
+  //   T [!m!](T t) {
+  //     print(t);
+  //   }
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If there's a reasonable value that can be returned, then add a `return`
+  // statement at the end of the method:
+  //
+  // ```dart
+  // class C<T> {
+  //   T m(T t) {
+  //     print(t);
+  //     return t;
+  //   }
+  // }
+  // ```
+  //
+  // If the method won't reach the implicit return, then add a `throw` at the
+  // end of the method:
+  //
+  // ```dart
+  // class C<T> {
+  //   T m(T t) {
+  //     print(t);
+  //     throw '';
+  //   }
+  // }
+  // ```
+  //
+  // If the method intentionally returns `null` at the end, then change the
+  // return type so that it's valid to return `null`:
+  //
+  // ```dart
+  // class C<T> {
+  //   T? m(T t) {
+  //     print(t);
+  //   }
+  // }
+  // ```
+  static const CompileTimeErrorCode BODY_MIGHT_COMPLETE_NORMALLY =
+      CompileTimeErrorCode(
+    'BODY_MIGHT_COMPLETE_NORMALLY',
+    "The body might complete normally, causing 'null' to be returned, but the return type is a potentially non-nullable type.",
+    correction: "Try adding either a return or a throw statement at the end.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a break in a case clause inside
+  // a switch statement has a label that is associated with another case clause.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the label `l` is
+  // associated with the case clause for `0`:
+  //
+  // ```dart
+  // void f(int i) {
+  //   switch (i) {
+  //     l: case 0:
+  //       break;
+  //     case 1:
+  //       break [!l!];
+  //   }
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the intent is to transfer control to the statement after the switch,
+  // then remove the label from the break statement:
+  //
+  // ```dart
+  // void f(int i) {
+  //   switch (i) {
+  //     case 0:
+  //       break;
+  //     case 1:
+  //       break;
+  //   }
+  // }
+  // ```
+  //
+  // If the intent is to transfer control to a different case block, then use
+  // `continue` rather than `break`:
+  //
+  // ```dart
+  // void f(int i) {
+  //   switch (i) {
+  //     l: case 0:
+  //       break;
+  //     case 1:
+  //       continue l;
+  //   }
+  // }
+  // ```
+  static const CompileTimeErrorCode BREAK_LABEL_ON_SWITCH_MEMBER =
+      CompileTimeErrorCode(
+    'BREAK_LABEL_ON_SWITCH_MEMBER',
+    "A break label resolves to the 'case' or 'default' statement.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the built-in identifier that is being used
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the name used in the declaration
+  // of a class, extension, mixin, typedef, type parameter, or import prefix is
+  // a built-in identifier. Built-in identifiers can’t be used to name any of
+  // these kinds of declarations.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because `mixin` is a built-in
+  // identifier:
+  //
+  // ```dart
+  // extension [!mixin!] on int {}
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Choose a different name for the declaration.
+  static const CompileTimeErrorCode BUILT_IN_IDENTIFIER_AS_EXTENSION_NAME =
+      CompileTimeErrorCode(
+    'BUILT_IN_IDENTIFIER_IN_DECLARATION',
+    "The built-in identifier '{0}' can't be used as an extension name.",
+    correction: "Try choosing a different name for the extension.",
+    hasPublishedDocs: true,
+    uniqueName: 'BUILT_IN_IDENTIFIER_AS_EXTENSION_NAME',
+  );
+
+  /**
+   * Parameters:
+   * 0: the built-in identifier that is being used
+   */
+  static const CompileTimeErrorCode BUILT_IN_IDENTIFIER_AS_PREFIX_NAME =
+      CompileTimeErrorCode(
+    'BUILT_IN_IDENTIFIER_IN_DECLARATION',
+    "The built-in identifier '{0}' can't be used as a prefix name.",
+    correction: "Try choosing a different name for the prefix.",
+    hasPublishedDocs: true,
+    uniqueName: 'BUILT_IN_IDENTIFIER_AS_PREFIX_NAME',
+  );
+
+  /**
+   * Parameters:
+   * 0: the built-in identifier that is being used
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a built-in identifier is used
+  // where a type name is expected.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `import` can't be used
+  // as a type because it's a built-in identifier:
+  //
+  // ```dart
+  // [!import!]<int> x;
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Replace the built-in identifier with the name of a valid type:
+  //
+  // ```dart
+  // List<int> x;
+  // ```
+  static const CompileTimeErrorCode BUILT_IN_IDENTIFIER_AS_TYPE =
+      CompileTimeErrorCode(
+    'BUILT_IN_IDENTIFIER_AS_TYPE',
+    "The built-in identifier '{0}' can't be used as a type.",
+    correction: "Try correcting the name to match an existing type.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the built-in identifier that is being used
+   */
+  static const CompileTimeErrorCode BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME =
+      CompileTimeErrorCode(
+    'BUILT_IN_IDENTIFIER_IN_DECLARATION',
+    "The built-in identifier '{0}' can't be used as a typedef name.",
+    correction: "Try choosing a different name for the typedef.",
+    hasPublishedDocs: true,
+    uniqueName: 'BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME',
+  );
+
+  /**
+   * Parameters:
+   * 0: the built-in identifier that is being used
+   */
+  static const CompileTimeErrorCode BUILT_IN_IDENTIFIER_AS_TYPE_NAME =
+      CompileTimeErrorCode(
+    'BUILT_IN_IDENTIFIER_IN_DECLARATION',
+    "The built-in identifier '{0}' can't be used as a type name.",
+    correction: "Try choosing a different name for the type.",
+    hasPublishedDocs: true,
+    uniqueName: 'BUILT_IN_IDENTIFIER_AS_TYPE_NAME',
+  );
+
+  /**
+   * Parameters:
+   * 0: the built-in identifier that is being used
+   */
+  static const CompileTimeErrorCode BUILT_IN_IDENTIFIER_AS_TYPE_PARAMETER_NAME =
+      CompileTimeErrorCode(
+    'BUILT_IN_IDENTIFIER_IN_DECLARATION',
+    "The built-in identifier '{0}' can't be used as a type parameter name.",
+    correction: "Try choosing a different name for the type parameter.",
+    hasPublishedDocs: true,
+    uniqueName: 'BUILT_IN_IDENTIFIER_AS_TYPE_PARAMETER_NAME',
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the last statement in a `case`
+  // block isn't one of the required terminators: `break`, `continue`,
+  // `rethrow`, `return`, or `throw`.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because the `case` block ends
+  // with an assignment:
+  //
+  // ```dart
+  // %language=2.9
+  // void f(int x) {
+  //   switch (x) {
+  //     [!case!] 0:
+  //       x += 2;
+  //     default:
+  //       x += 1;
+  //   }
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Add one of the required terminators:
+  //
+  // ```dart
+  // %language=2.9
+  // void f(int x) {
+  //   switch (x) {
+  //     case 0:
+  //       x += 2;
+  //       break;
+  //     default:
+  //       x += 1;
+  //   }
+  // }
+  // ```
+  static const CompileTimeErrorCode CASE_BLOCK_NOT_TERMINATED =
+      CompileTimeErrorCode(
+    'CASE_BLOCK_NOT_TERMINATED',
+    "The last statement of the 'case' should be 'break', 'continue', 'rethrow', 'return', or 'throw'.",
+    correction: "Try adding one of the required statements.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the this of the switch case expression
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the type of the expression
+  // following the keyword `case` has an implementation of the `==` operator
+  // other than the one in `Object`.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the expression
+  // following the keyword `case` (`C(0)`) has the type `C`, and the class `C`
+  // overrides the `==` operator:
+  //
+  // ```dart
+  // class C {
+  //   final int value;
+  //
+  //   const C(this.value);
+  //
+  //   bool operator ==(Object other) {
+  //     return false;
+  //   }
+  // }
+  //
+  // void f(C c) {
+  //   switch (c) {
+  //     case [!C(0)!]:
+  //       break;
+  //   }
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If there isn't a strong reason not to do so, then rewrite the code to use
+  // an if-else structure:
+  //
+  // ```dart
+  // class C {
+  //   final int value;
+  //
+  //   const C(this.value);
+  //
+  //   bool operator ==(Object other) {
+  //     return false;
+  //   }
+  // }
+  //
+  // void f(C c) {
+  //   if (c == C(0)) {
+  //     // ...
+  //   }
+  // }
+  // ```
+  //
+  // If you can't rewrite the switch statement and the implementation of `==`
+  // isn't necessary, then remove it:
+  //
+  // ```dart
+  // class C {
+  //   final int value;
+  //
+  //   const C(this.value);
+  // }
+  //
+  // void f(C c) {
+  //   switch (c) {
+  //     case C(0):
+  //       break;
+  //   }
+  // }
+  // ```
+  //
+  // If you can't rewrite the switch statement and you can't remove the
+  // definition of `==`, then find some other value that can be used to control
+  // the switch:
+  //
+  // ```dart
+  // class C {
+  //   final int value;
+  //
+  //   const C(this.value);
+  //
+  //   bool operator ==(Object other) {
+  //     return false;
+  //   }
+  // }
+  //
+  // void f(C c) {
+  //   switch (c.value) {
+  //     case 0:
+  //       break;
+  //   }
+  // }
+  // ```
+  static const CompileTimeErrorCode CASE_EXPRESSION_TYPE_IMPLEMENTS_EQUALS =
+      CompileTimeErrorCode(
+    'CASE_EXPRESSION_TYPE_IMPLEMENTS_EQUALS',
+    "The switch case expression type '{0}' can't override the '==' operator.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the type of the case expression
+   * 1: the type of the switch expression
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the expression following `case`
+  // in a `switch` statement has a static type that isn't a subtype of the
+  // static type of the expression following `switch`.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because `1` is an `int`, which
+  // isn't a subtype of `String` (the type of `s`):
+  //
+  // ```dart
+  // void f(String s) {
+  //   switch (s) {
+  //     case [!1!]:
+  //       break;
+  //   }
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the value of the `case` expression is wrong, then change the `case`
+  // expression so that it has the required type:
+  //
+  // ```dart
+  // void f(String s) {
+  //   switch (s) {
+  //     case '1':
+  //       break;
+  //   }
+  // }
+  // ```
+  //
+  // If the value of the `case` expression is correct, then change the `switch`
+  // expression to have the required type:
+  //
+  // ```dart
+  // void f(int s) {
+  //   switch (s) {
+  //     case 1:
+  //       break;
+  //   }
+  // }
+  // ```
+  static const CompileTimeErrorCode
+      CASE_EXPRESSION_TYPE_IS_NOT_SWITCH_EXPRESSION_SUBTYPE =
+      CompileTimeErrorCode(
+    'CASE_EXPRESSION_TYPE_IS_NOT_SWITCH_EXPRESSION_SUBTYPE',
+    "The switch case expression type '{0}' must be a subtype of the switch expression type '{1}'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the name following the `as` in a
+  // cast expression is defined to be something other than a type.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `x` is a variable, not
+  // a type:
+  //
+  // ```dart
+  // num x = 0;
+  // int y = x as [!x!];
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Replace the name with the name of a type:
+  //
+  // ```dart
+  // num x = 0;
+  // int y = x as int;
+  // ```
+  static const CompileTimeErrorCode CAST_TO_NON_TYPE = CompileTimeErrorCode(
+    'CAST_TO_NON_TYPE',
+    "The name '{0}' isn't a type, so it can't be used in an 'as' expression.",
+    correction:
+        "Try changing the name to the name of an existing type, or creating a type with the name '{0}'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the member
+   */
+  static const CompileTimeErrorCode
+      CLASS_INSTANTIATION_ACCESS_TO_INSTANCE_MEMBER = CompileTimeErrorCode(
+    'CLASS_INSTANTIATION_ACCESS_TO_MEMBER',
+    "The instance member '{0}' can't be accessed on a class instantiation.",
+    correction: "Try changing the member name to the name of a constructor.",
+    uniqueName: 'CLASS_INSTANTIATION_ACCESS_TO_INSTANCE_MEMBER',
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the member
+   */
+  static const CompileTimeErrorCode
+      CLASS_INSTANTIATION_ACCESS_TO_STATIC_MEMBER = CompileTimeErrorCode(
+    'CLASS_INSTANTIATION_ACCESS_TO_MEMBER',
+    "The static member '{0}' can't be accessed on a class instantiation.",
+    correction:
+        "Try removing the type arguments from the class name, or changing the member name to the name of a constructor.",
+    uniqueName: 'CLASS_INSTANTIATION_ACCESS_TO_STATIC_MEMBER',
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the member
+   */
+  static const CompileTimeErrorCode
+      CLASS_INSTANTIATION_ACCESS_TO_UNKNOWN_MEMBER = CompileTimeErrorCode(
+    'CLASS_INSTANTIATION_ACCESS_TO_MEMBER',
+    "The class '{0} doesn't have a constructor named '{1}.",
+    correction:
+        "Try invoking a different constructor, or defining a constructor named '{1}'.",
+    uniqueName: 'CLASS_INSTANTIATION_ACCESS_TO_UNKNOWN_MEMBER',
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the abstract method
+   * 1: the name of the enclosing class
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a member of a concrete class is
+  // found that doesn't have a concrete implementation. Concrete classes aren't
+  // allowed to contain abstract members.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `m` is an abstract
+  // method but `C` isn't an abstract class:
+  //
+  // ```dart
+  // class C {
+  //   [!void m();!]
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If it's valid to create instances of the class, provide an implementation
+  // for the member:
+  //
+  // ```dart
+  // class C {
+  //   void m() {}
+  // }
+  // ```
+  //
+  // If it isn't valid to create instances of the class, mark the class as being
+  // abstract:
+  //
+  // ```dart
+  // abstract class C {
+  //   void m();
+  // }
+  // ```
+  static const CompileTimeErrorCode CONCRETE_CLASS_WITH_ABSTRACT_MEMBER =
+      CompileTimeErrorCode(
+    'CONCRETE_CLASS_WITH_ABSTRACT_MEMBER',
+    "'{0}' must have a method body because '{1}' isn't abstract.",
+    correction: "Try making '{1}' abstract, or adding a body to '{0}'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the constructor and field
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a named constructor and either a
+  // static method or static field have the same name. Both are accessed using
+  // the name of the class, so having the same name makes the reference
+  // ambiguous.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the static field `foo`
+  // and the named constructor `foo` have the same name:
+  //
+  // ```dart
+  // class C {
+  //   C.[!foo!]();
+  //   static int foo = 0;
+  // }
+  // ```
+  //
+  // The following code produces this diagnostic because the static method `foo`
+  // and the named constructor `foo` have the same name:
+  //
+  // ```dart
+  // class C {
+  //   C.[!foo!]();
+  //   static void foo() {}
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Rename either the member or the constructor.
+  static const CompileTimeErrorCode CONFLICTING_CONSTRUCTOR_AND_STATIC_FIELD =
+      CompileTimeErrorCode(
+    'CONFLICTING_CONSTRUCTOR_AND_STATIC_MEMBER',
+    "'{0}' can't be used to name both a constructor and a static field in this class.",
+    correction: "Try renaming either the constructor or the field.",
+    hasPublishedDocs: true,
+    uniqueName: 'CONFLICTING_CONSTRUCTOR_AND_STATIC_FIELD',
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the constructor and getter
+   */
+  static const CompileTimeErrorCode CONFLICTING_CONSTRUCTOR_AND_STATIC_GETTER =
+      CompileTimeErrorCode(
+    'CONFLICTING_CONSTRUCTOR_AND_STATIC_MEMBER',
+    "'{0}' can't be used to name both a constructor and a static getter in this class.",
+    correction: "Try renaming either the constructor or the getter.",
+    hasPublishedDocs: true,
+    uniqueName: 'CONFLICTING_CONSTRUCTOR_AND_STATIC_GETTER',
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the constructor
+   */
+  static const CompileTimeErrorCode CONFLICTING_CONSTRUCTOR_AND_STATIC_METHOD =
+      CompileTimeErrorCode(
+    'CONFLICTING_CONSTRUCTOR_AND_STATIC_MEMBER',
+    "'{0}' can't be used to name both a constructor and a static method in this class.",
+    correction: "Try renaming either the constructor or the method.",
+    hasPublishedDocs: true,
+    uniqueName: 'CONFLICTING_CONSTRUCTOR_AND_STATIC_METHOD',
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the constructor and setter
+   */
+  static const CompileTimeErrorCode CONFLICTING_CONSTRUCTOR_AND_STATIC_SETTER =
+      CompileTimeErrorCode(
+    'CONFLICTING_CONSTRUCTOR_AND_STATIC_MEMBER',
+    "'{0}' can't be used to name both a constructor and a static setter in this class.",
+    correction: "Try renaming either the constructor or the setter.",
+    hasPublishedDocs: true,
+    uniqueName: 'CONFLICTING_CONSTRUCTOR_AND_STATIC_SETTER',
+  );
+
+  /**
+   * 10.11 Class Member Conflicts: Let `C` be a class. It is a compile-time
+   * error if `C` declares a getter or a setter with basename `n`, and has a
+   * method named `n`.
+   *
+   * Parameters:
+   * 0: the name of the class defining the conflicting field
+   * 1: the name of the conflicting field
+   * 2: the name of the class defining the method with which the field conflicts
+   */
+  static const CompileTimeErrorCode CONFLICTING_FIELD_AND_METHOD =
+      CompileTimeErrorCode(
+    'CONFLICTING_FIELD_AND_METHOD',
+    "Class '{0}' can't define field '{1}' and have method '{2}.{1}' with the same name.",
+    correction:
+        "Try converting the getter to a method, or renaming the field to a name that doesn't conflict.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the class implementing the conflicting interface
+   * 1: the first conflicting type
+   * 2: the second conflicting type
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a class attempts to implement a
+  // generic interface multiple times, and the values of the type arguments
+  // aren't the same.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because `C` is defined to
+  // implement both `I<int>` (because it extends `A`) and `I<String>` (because
+  // it implements`B`), but `int` and `String` aren't the same type:
+  //
+  // ```dart
+  // class I<T> {}
+  // class A implements I<int> {}
+  // class B implements I<String> {}
+  // class [!C!] extends A implements B {}
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Rework the type hierarchy to avoid this situation. For example, you might
+  // make one or both of the inherited types generic so that `C` can specify the
+  // same type for both type arguments:
+  //
+  // ```dart
+  // class I<T> {}
+  // class A<S> implements I<S> {}
+  // class B implements I<String> {}
+  // class C extends A<String> implements B {}
+  // ```
+  static const CompileTimeErrorCode CONFLICTING_GENERIC_INTERFACES =
+      CompileTimeErrorCode(
+    'CONFLICTING_GENERIC_INTERFACES',
+    "The class '{0}' can't implement both '{1}' and '{2}' because the type arguments are different.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * 10.11 Class Member Conflicts: Let `C` be a class. It is a compile-time
+   * error if `C` declares a method named `n`, and has a getter or a setter
+   * with basename `n`.
+   *
+   * Parameters:
+   * 0: the name of the class defining the conflicting method
+   * 1: the name of the conflicting method
+   * 2: the name of the class defining the field with which the method conflicts
+   */
+  static const CompileTimeErrorCode CONFLICTING_METHOD_AND_FIELD =
+      CompileTimeErrorCode(
+    'CONFLICTING_METHOD_AND_FIELD',
+    "Class '{0}' can't define method '{1}' and have field '{2}.{1}' with the same name.",
+    correction:
+        "Try converting the method to a getter, or renaming the method to a name that doesn't conflict.",
+  );
+
+  /**
+   * 10.11 Class Member Conflicts: Let `C` be a class. It is a compile-time
+   * error if `C` declares a static member with basename `n`, and has an
+   * instance member with basename `n`.
+   *
+   * Parameters:
+   * 0: the name of the class defining the conflicting member
+   * 1: the name of the conflicting static member
+   * 2: the name of the class defining the field with which the method conflicts
+   */
+  static const CompileTimeErrorCode CONFLICTING_STATIC_AND_INSTANCE =
+      CompileTimeErrorCode(
+    'CONFLICTING_STATIC_AND_INSTANCE',
+    "Class '{0}' can't define static member '{1}' and have instance member '{2}.{1}' with the same name.",
+    correction: "Try renaming the member to a name that doesn't conflict.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the type variable
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a class, mixin, or extension
+  // declaration declares a type parameter with the same name as the class,
+  // mixin, or extension that declares it.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the type parameter `C`
+  // has the same name as the class `C` of which it's a part:
+  //
+  // ```dart
+  // class C<[!C!]> {}
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Rename either the type parameter, or the class, mixin, or extension:
+  //
+  // ```dart
+  // class C<T> {}
+  // ```
+  static const CompileTimeErrorCode CONFLICTING_TYPE_VARIABLE_AND_CLASS =
+      CompileTimeErrorCode(
+    'CONFLICTING_TYPE_VARIABLE_AND_CONTAINER',
+    "'{0}' can't be used to name both a type variable and the class in which the type variable is defined.",
+    correction: "Try renaming either the type variable or the class.",
+    hasPublishedDocs: true,
+    uniqueName: 'CONFLICTING_TYPE_VARIABLE_AND_CLASS',
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the type variable
+   */
+  static const CompileTimeErrorCode CONFLICTING_TYPE_VARIABLE_AND_EXTENSION =
+      CompileTimeErrorCode(
+    'CONFLICTING_TYPE_VARIABLE_AND_CONTAINER',
+    "'{0}' can't be used to name both a type variable and the extension in which the type variable is defined.",
+    correction: "Try renaming either the type variable or the extension.",
+    hasPublishedDocs: true,
+    uniqueName: 'CONFLICTING_TYPE_VARIABLE_AND_EXTENSION',
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the type variable
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a class, mixin, or extension
+  // declaration declares a type parameter with the same name as one of the
+  // members of the class, mixin, or extension that declares it.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the type parameter `T`
+  // has the same name as the field `T`:
+  //
+  // ```dart
+  // class C<[!T!]> {
+  //   int T = 0;
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Rename either the type parameter or the member with which it conflicts:
+  //
+  // ```dart
+  // class C<T> {
+  //   int total = 0;
+  // }
+  // ```
+  static const CompileTimeErrorCode CONFLICTING_TYPE_VARIABLE_AND_MEMBER_CLASS =
+      CompileTimeErrorCode(
+    'CONFLICTING_TYPE_VARIABLE_AND_MEMBER',
+    "'{0}' can't be used to name both a type variable and a member in this class.",
+    correction: "Try renaming either the type variable or the member.",
+    hasPublishedDocs: true,
+    uniqueName: 'CONFLICTING_TYPE_VARIABLE_AND_MEMBER_CLASS',
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the type variable
+   */
+  static const CompileTimeErrorCode
+      CONFLICTING_TYPE_VARIABLE_AND_MEMBER_EXTENSION = CompileTimeErrorCode(
+    'CONFLICTING_TYPE_VARIABLE_AND_MEMBER',
+    "'{0}' can't be used to name both a type variable and a member in this extension.",
+    correction: "Try renaming either the type variable or the member.",
+    hasPublishedDocs: true,
+    uniqueName: 'CONFLICTING_TYPE_VARIABLE_AND_MEMBER_EXTENSION',
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the type variable
+   */
+  static const CompileTimeErrorCode CONFLICTING_TYPE_VARIABLE_AND_MEMBER_MIXIN =
+      CompileTimeErrorCode(
+    'CONFLICTING_TYPE_VARIABLE_AND_MEMBER',
+    "'{0}' can't be used to name both a type variable and a member in this mixin.",
+    correction: "Try renaming either the type variable or the member.",
+    hasPublishedDocs: true,
+    uniqueName: 'CONFLICTING_TYPE_VARIABLE_AND_MEMBER_MIXIN',
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the type variable
+   */
+  static const CompileTimeErrorCode CONFLICTING_TYPE_VARIABLE_AND_MIXIN =
+      CompileTimeErrorCode(
+    'CONFLICTING_TYPE_VARIABLE_AND_CONTAINER',
+    "'{0}' can't be used to name both a type variable and the mixin in which the type variable is defined.",
+    correction: "Try renaming either the type variable or the mixin.",
+    hasPublishedDocs: true,
+    uniqueName: 'CONFLICTING_TYPE_VARIABLE_AND_MIXIN',
+  );
+
+  /**
+   * 16.12.2 Const: It is a compile-time error if evaluation of a constant
+   * object results in an uncaught exception being thrown.
+   */
+  static const CompileTimeErrorCode CONST_CONSTRUCTOR_FIELD_TYPE_MISMATCH =
+      CompileTimeErrorCode(
+    'CONST_CONSTRUCTOR_FIELD_TYPE_MISMATCH',
+    "In a const constructor, a value of type '{0}' can't be assigned to the field '{1}', which has type '{2}'.",
+    correction: "Try using a subtype, or removing the keyword 'const'.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the type of the runtime value of the argument
+   * 1: the static type of the parameter
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the runtime type of a constant
+  // value can't be assigned to the static type of a constant constructor's
+  // parameter.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the runtime type of `i`
+  // is `int`, which can't be assigned to the static type of `s`:
+  //
+  // ```dart
+  // class C {
+  //   final String s;
+  //
+  //   const C(this.s);
+  // }
+  //
+  // const dynamic i = 0;
+  //
+  // void f() {
+  //   const C([!i!]);
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Pass a value of the correct type to the constructor:
+  //
+  // ```dart
+  // class C {
+  //   final String s;
+  //
+  //   const C(this.s);
+  // }
+  //
+  // const dynamic i = 0;
+  //
+  // void f() {
+  //   const C('$i');
+  // }
+  // ```
+  static const CompileTimeErrorCode CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH =
+      CompileTimeErrorCode(
+    'CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH',
+    "A value of type '{0}' can't be assigned to a parameter of type '{1}' in a const constructor.",
+    correction: "Try using a subtype, or removing the keyword 'const'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * 16.12.2 Const: It is a compile-time error if evaluation of a constant
+   * object results in an uncaught exception being thrown.
+   */
+  static const CompileTimeErrorCode CONST_CONSTRUCTOR_THROWS_EXCEPTION =
+      CompileTimeErrorCode(
+    'CONST_CONSTRUCTOR_THROWS_EXCEPTION',
+    "Const constructors can't throw exceptions.",
+    correction:
+        "Try removing the throw statement, or removing the keyword 'const'.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the field
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a constructor has the keyword
+  // `const`, but a field in the class is initialized to a non-constant value.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the field `s` is
+  // initialized to a non-constant value:
+  //
+  // ```dart
+  // class C {
+  //   final String s = 3.toString();
+  //   [!const!] C();
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the field can be initialized to a constant value, then change the
+  // initializer to a constant expression:
+  //
+  // ```dart
+  // class C {
+  //   final String s = '3';
+  //   const C();
+  // }
+  // ```
+  //
+  // If the field can't be initialized to a constant value, then remove the
+  // keyword `const` from the constructor:
+  //
+  // ```dart
+  // class C {
+  //   final String s = 3.toString();
+  //   C();
+  // }
+  // ```
+  static const CompileTimeErrorCode
+      CONST_CONSTRUCTOR_WITH_FIELD_INITIALIZED_BY_NON_CONST =
+      CompileTimeErrorCode(
+    'CONST_CONSTRUCTOR_WITH_FIELD_INITIALIZED_BY_NON_CONST',
+    "Can't define the 'const' constructor because the field '{0}' is initialized with a non-constant value.",
+    correction:
+        "Try initializing the field to a constant value, or removing the keyword 'const' from the constructor.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * 7.6.3 Constant Constructors: The superinitializer that appears, explicitly
+   * or implicitly, in the initializer list of a constant constructor must
+   * specify a constant constructor of the superclass of the immediately
+   * enclosing class or a compile-time error occurs.
+   *
+   * 12.1 Mixin Application: For each generative constructor named ... an
+   * implicitly declared constructor named ... is declared. If Sq is a
+   * generative const constructor, and M does not declare any fields, Cq is
+   * also a const constructor.
+   *
+   * Parameters:
+   * 0: the name of the instance field.
+   */
+  static const CompileTimeErrorCode CONST_CONSTRUCTOR_WITH_MIXIN_WITH_FIELD =
+      CompileTimeErrorCode(
+    'CONST_CONSTRUCTOR_WITH_MIXIN_WITH_FIELD',
+    "This constructor can't be declared 'const' because a mixin adds the instance field: {0}.",
+    correction:
+        "Try removing the 'const' keyword or removing the 'with' clause from the class declaration, or removing the field from the mixin class.",
+  );
+
+  /**
+   * 7.6.3 Constant Constructors: The superinitializer that appears, explicitly
+   * or implicitly, in the initializer list of a constant constructor must
+   * specify a constant constructor of the superclass of the immediately
+   * enclosing class or a compile-time error occurs.
+   *
+   * 12.1 Mixin Application: For each generative constructor named ... an
+   * implicitly declared constructor named ... is declared. If Sq is a
+   * generative const constructor, and M does not declare any fields, Cq is
+   * also a const constructor.
+   *
+   * Parameters:
+   * 0: the names of the instance fields.
+   */
+  static const CompileTimeErrorCode CONST_CONSTRUCTOR_WITH_MIXIN_WITH_FIELDS =
+      CompileTimeErrorCode(
+    'CONST_CONSTRUCTOR_WITH_MIXIN_WITH_FIELD',
+    "This constructor can't be declared 'const' because the mixins add the instance fields: {0}.",
+    correction:
+        "Try removing the 'const' keyword or removing the 'with' clause from the class declaration, or removing the fields from the mixin classes.",
+    uniqueName: 'CONST_CONSTRUCTOR_WITH_MIXIN_WITH_FIELDS',
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the superclass
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a constructor that is marked as
+  // `const` invokes a constructor from its superclass that isn't marked as
+  // `const`.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the `const` constructor
+  // in `B` invokes the constructor `nonConst` from the class `A`, and the
+  // superclass constructor isn't a `const` constructor:
+  //
+  // ```dart
+  // class A {
+  //   const A();
+  //   A.nonConst();
+  // }
+  //
+  // class B extends A {
+  //   const B() : [!super.nonConst()!];
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If it isn't essential to invoke the superclass constructor that is
+  // currently being invoked, then invoke a constant constructor from the
+  // superclass:
+  //
+  // ```dart
+  // class A {
+  //   const A();
+  //   A.nonConst();
+  // }
+  //
+  // class B extends A {
+  //   const B() : super();
+  // }
+  // ```
+  //
+  // If it's essential that the current constructor be invoked and if you can
+  // modify it, then add `const` to the constructor in the superclass:
+  //
+  // ```dart
+  // class A {
+  //   const A();
+  //   const A.nonConst();
+  // }
+  //
+  // class B extends A {
+  //   const B() : super.nonConst();
+  // }
+  // ```
+  //
+  // If it's essential that the current constructor be invoked and you can't
+  // modify it, then remove `const` from the constructor in the subclass:
+  //
+  // ```dart
+  // class A {
+  //   const A();
+  //   A.nonConst();
+  // }
+  //
+  // class B extends A {
+  //   B() : super.nonConst();
+  // }
+  // ```
+  static const CompileTimeErrorCode CONST_CONSTRUCTOR_WITH_NON_CONST_SUPER =
+      CompileTimeErrorCode(
+    'CONST_CONSTRUCTOR_WITH_NON_CONST_SUPER',
+    "A constant constructor can't call a non-constant super constructor of '{0}'.",
+    correction:
+        "Try calling a constant constructor in the superclass, or removing the keyword 'const' from the constructor.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a constructor is marked as a
+  // const constructor, but the constructor is defined in a class that has at
+  // least one non-final instance field (either directly or by inheritance).
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because the field `x` isn't
+  // final:
+  //
+  // ```dart
+  // class C {
+  //   int x;
+  //
+  //   const [!C!](this.x);
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If it's possible to mark all of the fields as final, then do so:
+  //
+  // ```dart
+  // class C {
+  //   final int x;
+  //
+  //   const C(this.x);
+  // }
+  // ```
+  //
+  // If it isn't possible to mark all of the fields as final, then remove the
+  // keyword `const` from the constructor:
+  //
+  // ```dart
+  // class C {
+  //   int x;
+  //
+  //   C(this.x);
+  // }
+  // ```
+  static const CompileTimeErrorCode CONST_CONSTRUCTOR_WITH_NON_FINAL_FIELD =
+      CompileTimeErrorCode(
+    'CONST_CONSTRUCTOR_WITH_NON_FINAL_FIELD',
+    "Can't define a const constructor for a class with non-final fields.",
+    correction:
+        "Try making all of the fields final, or removing the keyword 'const' from the constructor.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a class from a library that is
+  // imported using a deferred import is used to create a `const` object.
+  // Constants are evaluated at compile time, and classes from deferred
+  // libraries aren't available at compile time.
+  //
+  // For more information, see the language tour's coverage of
+  // [deferred loading](https://dart.dev/guides/language/language-tour#lazily-loading-a-library).
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because it attempts to create a
+  // `const` instance of a class from a deferred library:
+  //
+  // ```dart
+  // import 'dart:convert' deferred as convert;
+  //
+  // const json2 = [!convert.JsonCodec()!];
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the object isn't required to be a constant, then change the code so that
+  // a non-constant instance is created:
+  //
+  // ```dart
+  // import 'dart:convert' deferred as convert;
+  //
+  // final json2 = convert.JsonCodec();
+  // ```
+  //
+  // If the object must be a constant, then remove `deferred` from the import
+  // directive:
+  //
+  // ```dart
+  // import 'dart:convert' as convert;
+  //
+  // const json2 = convert.JsonCodec();
+  // ```
+  static const CompileTimeErrorCode CONST_DEFERRED_CLASS = CompileTimeErrorCode(
+    'CONST_DEFERRED_CLASS',
+    "Deferred classes can't be created with 'const'.",
+    correction:
+        "Try using 'new' to create the instance, or changing the import to not be deferred.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * 16.12.2 Const: It is a compile-time error if evaluation of a constant
+   * object results in an uncaught exception being thrown.
+   */
+  static const CompileTimeErrorCode CONST_EVAL_THROWS_EXCEPTION =
+      CompileTimeErrorCode(
+    'CONST_EVAL_THROWS_EXCEPTION',
+    "Evaluation of this constant expression throws an exception.",
+  );
+
+  /**
+   * 16.12.2 Const: It is a compile-time error if evaluation of a constant
+   * object results in an uncaught exception being thrown.
+   */
+  static const CompileTimeErrorCode CONST_EVAL_THROWS_IDBZE =
+      CompileTimeErrorCode(
+    'CONST_EVAL_THROWS_IDBZE',
+    "Evaluation of this constant expression throws an IntegerDivisionByZeroException.",
+  );
+
+  /**
+   * 16.12.2 Const: An expression of one of the forms !e, e1 && e2 or e1 || e2,
+   * where e, e1 and e2 are constant expressions that evaluate to a boolean
+   * value.
+   */
+  static const CompileTimeErrorCode CONST_EVAL_TYPE_BOOL = CompileTimeErrorCode(
+    'CONST_EVAL_TYPE_BOOL',
+    "In constant expressions, operands of this operator must be of type 'bool'.",
+  );
+
+  /**
+   * 16.12.2 Const: An expression of one of the forms !e, e1 && e2 or e1 || e2,
+   * where e, e1 and e2 are constant expressions that evaluate to a boolean
+   * value.
+   */
+  static const CompileTimeErrorCode CONST_EVAL_TYPE_BOOL_INT =
+      CompileTimeErrorCode(
+    'CONST_EVAL_TYPE_BOOL_INT',
+    "In constant expressions, operands of this operator must be of type 'bool' or 'int'.",
+  );
+
+  /**
+   * 16.12.2 Const: An expression of one of the forms e1 == e2 or e1 != e2 where
+   * e1 and e2 are constant expressions that evaluate to a numeric, string or
+   * boolean value or to null.
+   */
+  static const CompileTimeErrorCode CONST_EVAL_TYPE_BOOL_NUM_STRING =
+      CompileTimeErrorCode(
+    'CONST_EVAL_TYPE_BOOL_NUM_STRING',
+    "In constant expressions, operands of this operator must be of type 'bool', 'num', 'String' or 'null'.",
+  );
+
+  /**
+   * 16.12.2 Const: An expression of one of the forms ~e, e1 ^ e2, e1 & e2,
+   * e1 | e2, e1 >> e2 or e1 << e2, where e, e1 and e2 are constant expressions
+   * that evaluate to an integer value or to null.
+   */
+  static const CompileTimeErrorCode CONST_EVAL_TYPE_INT = CompileTimeErrorCode(
+    'CONST_EVAL_TYPE_INT',
+    "In constant expressions, operands of this operator must be of type 'int'.",
+  );
+
+  /**
+   * 16.12.2 Const: An expression of one of the forms e, e1 + e2, e1 - e2, e1
+   * e2, e1 / e2, e1 ~/ e2, e1 > e2, e1 < e2, e1 >= e2, e1 <= e2 or e1 % e2,
+   * where e, e1 and e2 are constant expressions that evaluate to a numeric
+   * value or to null.
+   */
+  static const CompileTimeErrorCode CONST_EVAL_TYPE_NUM = CompileTimeErrorCode(
+    'CONST_EVAL_TYPE_NUM',
+    "In constant expressions, operands of this operator must be of type 'num'.",
+  );
+
+  static const CompileTimeErrorCode CONST_EVAL_TYPE_TYPE = CompileTimeErrorCode(
+    'CONST_EVAL_TYPE_TYPE',
+    "In constant expressions, operands of this operator must be of type 'Type'.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the type of the initializer expression
+   * 1: the name of the type of the field
+   */
+  static const CompileTimeErrorCode CONST_FIELD_INITIALIZER_NOT_ASSIGNABLE =
+      CompileTimeErrorCode(
+    'FIELD_INITIALIZER_NOT_ASSIGNABLE',
+    "The initializer type '{0}' can't be assigned to the field type '{1}' in a const constructor.",
+    correction: "Try using a subtype, or removing the 'const' keyword",
+    hasPublishedDocs: true,
+    uniqueName: 'CONST_FIELD_INITIALIZER_NOT_ASSIGNABLE',
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a value that isn't statically
+  // known to be a constant is assigned to a variable that's declared to be a
+  // `const` variable.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `x` isn't declared to
+  // be `const`:
+  //
+  // ```dart
+  // var x = 0;
+  // const y = [!x!];
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the value being assigned can be declared to be `const`, then change the
+  // declaration:
+  //
+  // ```dart
+  // const x = 0;
+  // const y = x;
+  // ```
+  //
+  // If the value can't be declared to be `const`, then remove the `const`
+  // modifier from the variable, possibly using `final` in its place:
+  //
+  // ```dart
+  // var x = 0;
+  // final y = x;
+  // ```
+  static const CompileTimeErrorCode CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE =
+      CompileTimeErrorCode(
+    'CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE',
+    "Const variables must be initialized with a constant value.",
+    correction: "Try changing the initializer to be a constant expression.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a `const` variable is
+  // initialized using a `const` variable from a library that is imported using
+  // a deferred import. Constants are evaluated at compile time, and values from
+  // deferred libraries aren't available at compile time.
+  //
+  // For more information, see the language tour's coverage of
+  // [deferred loading](https://dart.dev/guides/language/language-tour#lazily-loading-a-library).
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the variable `pi` is
+  // being initialized using the constant `math.pi` from the library
+  // `dart:math`, and `dart:math` is imported as a deferred library:
+  //
+  // ```dart
+  // import 'dart:math' deferred as math;
+  //
+  // const pi = [!math.pi!];
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you need to reference the value of the constant from the imported
+  // library, then remove the keyword `deferred`:
+  //
+  // ```dart
+  // import 'dart:math' as math;
+  //
+  // const pi = math.pi;
+  // ```
+  //
+  // If you don't need to reference the imported constant, then remove the
+  // reference:
+  //
+  // ```dart
+  // const pi = 3.14;
+  // ```
+  static const CompileTimeErrorCode
+      CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE_FROM_DEFERRED_LIBRARY =
+      CompileTimeErrorCode(
+    'CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE_FROM_DEFERRED_LIBRARY',
+    "Constant values from a deferred library can't be used to initialize a 'const' variable.",
+    correction:
+        "Try initializing the variable without referencing members of the deferred library, or changing the import to not be deferred.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an instance field is marked as
+  // being const.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `f` is an instance
+  // field:
+  //
+  // ```dart
+  // class C {
+  //   [!const!] int f = 3;
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the field needs to be an instance field, then remove the keyword
+  // `const`, or replace it with `final`:
+  //
+  // ```dart
+  // class C {
+  //   final int f = 3;
+  // }
+  // ```
+  //
+  // If the field really should be a const field, then make it a static field:
+  //
+  // ```dart
+  // class C {
+  //   static const int f = 3;
+  // }
+  // ```
+  static const CompileTimeErrorCode CONST_INSTANCE_FIELD = CompileTimeErrorCode(
+    'CONST_INSTANCE_FIELD',
+    "Only static fields can be declared as const.",
+    correction:
+        "Try declaring the field as final, or adding the keyword 'static'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the type of the entry's key
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the class of object used as a
+  // key in a constant map literal implements the `==` operator. The
+  // implementation of constant maps uses the `==` operator, so any
+  // implementation other than the one inherited from `Object` requires
+  // executing arbitrary code at compile time, which isn't supported.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the constant map
+  // contains a key whose type is `C`, and the class `C` overrides the
+  // implementation of `==`:
+  //
+  // ```dart
+  // class C {
+  //   const C();
+  //
+  //   bool operator ==(Object other) => true;
+  // }
+  //
+  // const map = {[!C()!] : 0};
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you can remove the implementation of `==` from the class, then do so:
+  //
+  // ```dart
+  // class C {
+  //   const C();
+  // }
+  //
+  // const map = {C() : 0};
+  // ```
+  //
+  // If you can't remove the implementation of `==` from the class, then make
+  // the map be non-constant:
+  //
+  // ```dart
+  // class C {
+  //   const C();
+  //
+  //   bool operator ==(Object other) => true;
+  // }
+  //
+  // final map = {C() : 0};
+  // ```
+  static const CompileTimeErrorCode
+      CONST_MAP_KEY_EXPRESSION_TYPE_IMPLEMENTS_EQUALS = CompileTimeErrorCode(
+    'CONST_MAP_KEY_EXPRESSION_TYPE_IMPLEMENTS_EQUALS',
+    "The type of a key in a constant map can't override the '==' operator, but the class '{0}' does.",
+    correction:
+        "Try using a different value for the key, or removing the keyword 'const' from the map.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the uninitialized final variable
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a variable that is declared to
+  // be a constant doesn't have an initializer.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `c` isn't initialized:
+  //
+  // ```dart
+  // const [!c!];
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Add an initializer:
+  //
+  // ```dart
+  // const c = 'c';
+  // ```
+  static const CompileTimeErrorCode CONST_NOT_INITIALIZED =
+      CompileTimeErrorCode(
+    'CONST_NOT_INITIALIZED',
+    "The constant '{0}' must be initialized.",
+    correction: "Try adding an initialization to the declaration.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the type of the element
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the class of object used as an
+  // element in a constant set literal implements the `==` operator. The
+  // implementation of constant sets uses the `==` operator, so any
+  // implementation other than the one inherited from `Object` requires
+  // executing arbitrary code at compile time, which isn't supported.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the constant set
+  // contains an element whose type is `C`, and the class `C` overrides the
+  // implementation of `==`:
+  //
+  // ```dart
+  // class C {
+  //   const C();
+  //
+  //   bool operator ==(Object other) => true;
+  // }
+  //
+  // const set = {[!C()!]};
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you can remove the implementation of `==` from the class, then do so:
+  //
+  // ```dart
+  // class C {
+  //   const C();
+  // }
+  //
+  // const set = {C()};
+  // ```
+  //
+  // If you can't remove the implementation of `==` from the class, then make
+  // the set be non-constant:
+  //
+  // ```dart
+  // class C {
+  //   const C();
+  //
+  //   bool operator ==(Object other) => true;
+  // }
+  //
+  // final set = {C()};
+  // ```
+  static const CompileTimeErrorCode CONST_SET_ELEMENT_TYPE_IMPLEMENTS_EQUALS =
+      CompileTimeErrorCode(
+    'CONST_SET_ELEMENT_TYPE_IMPLEMENTS_EQUALS',
+    "The type of an element in a constant set can't override the '==' operator, but the type '{0}' does.",
+    correction:
+        "Try using a different value for the element, or removing the keyword 'const' from the set.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the expression of a spread
+  // operator in a constant list or set evaluates to something other than a list
+  // or a set.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because the value of `list1` is
+  // `null`, which is neither a list nor a set:
+  //
+  // ```dart
+  // %language=2.9
+  // const List<int> list1 = null;
+  // const List<int> list2 = [...[!list1!]];
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Change the expression to something that evaluates to either a constant list
+  // or a constant set:
+  //
+  // ```dart
+  // %language=2.9
+  // const List<int> list1 = [];
+  // const List<int> list2 = [...list1];
+  // ```
+  static const CompileTimeErrorCode CONST_SPREAD_EXPECTED_LIST_OR_SET =
+      CompileTimeErrorCode(
+    'CONST_SPREAD_EXPECTED_LIST_OR_SET',
+    "A list or a set is expected in this spread.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the expression of a spread
+  // operator in a constant map evaluates to something other than a map.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because the value of `map1` is
+  // `null`, which isn't a map:
+  //
+  // ```dart
+  // %language=2.9
+  // const Map<String, int> map1 = null;
+  // const Map<String, int> map2 = {...[!map1!]};
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Change the expression to something that evaluates to a constant map:
+  //
+  // ```dart
+  // %language=2.9
+  // const Map<String, int> map1 = {};
+  // const Map<String, int> map2 = {...map1};
+  // ```
+  static const CompileTimeErrorCode CONST_SPREAD_EXPECTED_MAP =
+      CompileTimeErrorCode(
+    'CONST_SPREAD_EXPECTED_MAP',
+    "A map is expected in this spread.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the keyword `const` is used to
+  // invoke a constructor that isn't marked with `const`.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because the constructor in `A`
+  // isn't a const constructor:
+  //
+  // ```dart
+  // class A {
+  //   A();
+  // }
+  //
+  // A f() => [!const!] A();
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If it's desirable and possible to make the class a constant class (by
+  // making all of the fields of the class, including inherited fields, final),
+  // then add the keyword `const` to the constructor:
+  //
+  // ```dart
+  // class A {
+  //   const A();
+  // }
+  //
+  // A f() => const A();
+  // ```
+  //
+  // Otherwise, remove the keyword `const`:
+  //
+  // ```dart
+  // class A {
+  //   A();
+  // }
+  //
+  // A f() => A();
+  // ```
+  static const CompileTimeErrorCode CONST_WITH_NON_CONST = CompileTimeErrorCode(
+    'CONST_WITH_NON_CONST',
+    "The constructor being called isn't a const constructor.",
+    correction: "Try removing 'const' from the constructor invocation.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a const constructor is invoked
+  // with an argument that isn't a constant expression.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `i` isn't a constant:
+  //
+  // ```dart
+  // class C {
+  //   final int i;
+  //   const C(this.i);
+  // }
+  // C f(int i) => const C([!i!]);
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Either make all of the arguments constant expressions, or remove the
+  // `const` keyword to use the non-constant form of the constructor:
+  //
+  // ```dart
+  // class C {
+  //   final int i;
+  //   const C(this.i);
+  // }
+  // C f(int i) => C(i);
+  // ```
+  static const CompileTimeErrorCode CONST_WITH_NON_CONSTANT_ARGUMENT =
+      CompileTimeErrorCode(
+    'CONST_WITH_NON_CONSTANT_ARGUMENT',
+    "Arguments of a constant creation must be constant expressions.",
+    correction:
+        "Try making the argument a valid constant, or use 'new' to call the constructor.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the non-type element
+   */
+  static const CompileTimeErrorCode CONST_WITH_NON_TYPE = CompileTimeErrorCode(
+    'CREATION_WITH_NON_TYPE',
+    "The name '{0}' isn't a class.",
+    correction: "Try correcting the name to match an existing class.",
+    hasPublishedDocs: true,
+    isUnresolvedIdentifier: true,
+    uniqueName: 'CONST_WITH_NON_TYPE',
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a type parameter is used as a
+  // type argument in a `const` invocation of a constructor. This isn't allowed
+  // because the value of the type parameter (the actual type that will be used
+  // at runtime) can't be known at compile time.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the type parameter `T`
+  // is being used as a type argument when creating a constant:
+  //
+  // ```dart
+  // class C<T> {
+  //   const C();
+  // }
+  //
+  // C<T> newC<T>() => const C<[!T!]>();
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the type that will be used for the type parameter can be known at
+  // compile time, then remove the use of the type parameter:
+  //
+  // ```dart
+  // class C<T> {
+  //   const C();
+  // }
+  //
+  // C<int> newC() => const C<int>();
+  // ```
+  //
+  // If the type that will be used for the type parameter can't be known until
+  // runtime, then remove the keyword `const`:
+  //
+  // ```dart
+  // class C<T> {
+  //   const C();
+  // }
+  //
+  // C<T> newC<T>() => C<T>();
+  // ```
+  static const CompileTimeErrorCode CONST_WITH_TYPE_PARAMETERS =
+      CompileTimeErrorCode(
+    'CONST_WITH_TYPE_PARAMETERS',
+    "A constant creation can't use a type parameter as a type argument.",
+    correction: "Try replacing the type parameter with a different type.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  static const CompileTimeErrorCode
+      CONST_WITH_TYPE_PARAMETERS_CONSTRUCTOR_TEAROFF = CompileTimeErrorCode(
+    'CONST_WITH_TYPE_PARAMETERS',
+    "A constant constructor tearoff can't use a type parameter as a type argument.",
+    correction: "Try replacing the type parameter with a different type.",
+    hasPublishedDocs: true,
+    uniqueName: 'CONST_WITH_TYPE_PARAMETERS_CONSTRUCTOR_TEAROFF',
+  );
+
+  /**
+   * No parameters.
+   */
+  static const CompileTimeErrorCode
+      CONST_WITH_TYPE_PARAMETERS_FUNCTION_TEAROFF = CompileTimeErrorCode(
+    'CONST_WITH_TYPE_PARAMETERS',
+    "A constant function tearoff can't use a type parameter as a type argument.",
+    correction: "Try replacing the type parameter with a different type.",
+    hasPublishedDocs: true,
+    uniqueName: 'CONST_WITH_TYPE_PARAMETERS_FUNCTION_TEAROFF',
+  );
+
+  /**
+   * 16.12.2 Const: It is a compile-time error if <i>T.id</i> is not the name of
+   * a constant constructor declared by the type <i>T</i>.
+   *
+   * Parameters:
+   * 0: the name of the type
+   * 1: the name of the requested constant constructor
+   */
+  static const CompileTimeErrorCode CONST_WITH_UNDEFINED_CONSTRUCTOR =
+      CompileTimeErrorCode(
+    'CONST_WITH_UNDEFINED_CONSTRUCTOR',
+    "The class '{0}' doesn't have a constant constructor '{1}'.",
+    correction: "Try calling a different constructor.",
+  );
+
+  /**
+   * 16.12.2 Const: It is a compile-time error if <i>T.id</i> is not the name of
+   * a constant constructor declared by the type <i>T</i>.
+   *
+   * Parameters:
+   * 0: the name of the type
+   */
+  static const CompileTimeErrorCode CONST_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT =
+      CompileTimeErrorCode(
+    'CONST_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT',
+    "The class '{0}' doesn't have an unnamed constant constructor.",
+    correction: "Try calling a different constructor.",
+  );
+
+  static const CompileTimeErrorCode CONTINUE_LABEL_ON_SWITCH =
+      CompileTimeErrorCode(
+    'CONTINUE_LABEL_ON_SWITCH',
+    "A continue label resolves to switch, must be loop or switch member",
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the type parameter
+   * 1: detail text explaining why the type could not be inferred
+   */
+  static const CompileTimeErrorCode COULD_NOT_INFER = CompileTimeErrorCode(
+    'COULD_NOT_INFER',
+    "Couldn't infer type parameter '{0}'.{1}",
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when it finds a use of the default
+  // constructor for the class `List` in code that has opted in to null safety.
+  //
+  // #### Example
+  //
+  // Assuming the following code is opted in to null safety, it produces this
+  // diagnostic because it uses the default `List` constructor:
+  //
+  // ```dart
+  // var l = [!List<int>!]();
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If no initial size is provided, then convert the code to use a list
+  // literal:
+  //
+  // ```dart
+  // var l = <int>[];
+  // ```
+  //
+  // If an initial size needs to be provided and there is a single reasonable
+  // initial value for the elements, then use `List.filled`:
+  //
+  // ```dart
+  // var l = List.filled(3, 0);
+  // ```
+  //
+  // If an initial size needs to be provided but each element needs to be
+  // computed, then use `List.generate`:
+  //
+  // ```dart
+  // var l = List.generate(3, (i) => i);
+  // ```
+  static const CompileTimeErrorCode DEFAULT_LIST_CONSTRUCTOR =
+      CompileTimeErrorCode(
+    'DEFAULT_LIST_CONSTRUCTOR',
+    "The default 'List' constructor isn't available when null safety is enabled.",
+    correction: "Try using a list literal, 'List.filled' or 'List.generate'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a factory constructor that
+  // redirects to another constructor specifies a default value for an optional
+  // parameter.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the factory constructor
+  // in `A` has a default value for the optional parameter `x`:
+  //
+  // ```dart
+  // class A {
+  //   factory A([int [!x!] = 0]) = B;
+  // }
+  //
+  // class B implements A {
+  //   B([int x = 1]) {}
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Remove the default value from the factory constructor:
+  //
+  // ```dart
+  // class A {
+  //   factory A([int x]) = B;
+  // }
+  //
+  // class B implements A {
+  //   B([int x = 1]) {}
+  // }
+  // ```
+  //
+  // Note that this fix might change the value used when the optional parameter
+  // is omitted. If that happens, and if that change is a problem, then consider
+  // making the optional parameter a required parameter in the factory method:
+  //
+  // ```dart
+  // class A {
+  //  factory A(int x) = B;
+  // }
+  //
+  // class B implements A {
+  //   B([int x = 1]) {}
+  // }
+  // ```
+  static const CompileTimeErrorCode
+      DEFAULT_VALUE_IN_REDIRECTING_FACTORY_CONSTRUCTOR = CompileTimeErrorCode(
+    'DEFAULT_VALUE_IN_REDIRECTING_FACTORY_CONSTRUCTOR',
+    "Default values aren't allowed in factory constructors that redirect to another constructor.",
+    correction: "Try removing the default value.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a named parameter has both the
+  // `required` modifier and a default value. If the parameter is required, then
+  // a value for the parameter is always provided at the call sites, so the
+  // default value can never be used.
+  //
+  // #### Examples
+  //
+  // The following code generates this diagnostic:
+  //
+  // ```dart
+  // void log({required String [!message!] = 'no message'}) {}
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the parameter is really required, then remove the default value:
+  //
+  // ```dart
+  // void log({required String message}) {}
+  // ```
+  //
+  // If the parameter isn't always required, then remove the `required`
+  // modifier:
+  //
+  // ```dart
+  // void log({String message = 'no message'}) {}
+  // ```
+  static const CompileTimeErrorCode DEFAULT_VALUE_ON_REQUIRED_PARAMETER =
+      CompileTimeErrorCode(
+    'DEFAULT_VALUE_ON_REQUIRED_PARAMETER',
+    "Required named parameters can't have a default value.",
+    correction:
+        "Try removing either the default value or the 'required' modifier.",
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a library that is imported using
+  // a deferred import declares an extension that is visible in the importing
+  // library. Extension methods are resolved at compile time, and extensions
+  // from deferred libraries aren't available at compile time.
+  //
+  // For more information, see the language tour's coverage of
+  // [deferred loading](https://dart.dev/guides/language/language-tour#lazily-loading-a-library).
+  //
+  // #### Example
+  //
+  // Given a file (`a.dart`) that defines a named extension:
+  //
+  // ```dart
+  // %uri="lib/a.dart"
+  // class C {}
+  //
+  // extension E on String {
+  //   int get size => length;
+  // }
+  // ```
+  //
+  // The following code produces this diagnostic because the named extension is
+  // visible to the library:
+  //
+  // ```dart
+  // import [!'a.dart'!] deferred as a;
+  //
+  // void f() {
+  //   a.C();
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the library must be imported as `deferred`, then either add a `show`
+  // clause listing the names being referenced or add a `hide` clause listing
+  // all of the named extensions. Adding a `show` clause would look like this:
+  //
+  // ```dart
+  // import 'a.dart' deferred as a show C;
+  //
+  // void f() {
+  //   a.C();
+  // }
+  // ```
+  //
+  // Adding a `hide` clause would look like this:
+  //
+  // ```dart
+  // import 'a.dart' deferred as a hide E;
+  //
+  // void f() {
+  //   a.C();
+  // }
+  // ```
+  //
+  // With the first fix, the benefit is that if new extensions are added to the
+  // imported library, then the extensions won't cause a diagnostic to be
+  // generated.
+  //
+  // If the library doesn't need to be imported as `deferred`, or if you need to
+  // make use of the extension method declared in it, then remove the keyword
+  // `deferred`:
+  //
+  // ```dart
+  // import 'a.dart' as a;
+  //
+  // void f() {
+  //   a.C();
+  // }
+  // ```
+  static const CompileTimeErrorCode DEFERRED_IMPORT_OF_EXTENSION =
+      CompileTimeErrorCode(
+    'DEFERRED_IMPORT_OF_EXTENSION',
+    "Imports of deferred libraries must hide all extensions.",
+    correction:
+        "Try adding either a show combinator listing the names you need to reference or a hide combinator listing all of the extensions.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the variable that is invalid
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when [definite assignment][] analysis
+  // shows that a local variable that's marked as `late` is read before being
+  // assigned.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because `x` wasn't assigned a
+  // value before being read:
+  //
+  // ```dart
+  // void f(bool b) {
+  //   late int x;
+  //   print([!x!]);
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Assign a value to the variable before reading from it:
+  //
+  // ```dart
+  // void f(bool b) {
+  //   late int x;
+  //   x = b ? 1 : 0;
+  //   print(x);
+  // }
+  // ```
+  static const CompileTimeErrorCode DEFINITELY_UNASSIGNED_LATE_LOCAL_VARIABLE =
+      CompileTimeErrorCode(
+    'DEFINITELY_UNASSIGNED_LATE_LOCAL_VARIABLE',
+    "The late local variable '{0}' is definitely unassigned at this point.",
+    correction: "Ensure that it is assigned on necessary execution paths.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  static const CompileTimeErrorCode DISALLOWED_TYPE_INSTANTIATION_EXPRESSION =
+      CompileTimeErrorCode(
+    'DISALLOWED_TYPE_INSTANTIATION_EXPRESSION',
+    "Only a generic type, generic function, generic instance method, or generic constructor can be type instantiated.",
+    correction:
+        "Try instantiating the type(s) of a generic type, generic function, generic instance method, or generic constructor.",
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a class declares more than one
+  // unnamed constructor or when it declares more than one constructor with the
+  // same name.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because there are two
+  // declarations for the unnamed constructor:
+  //
+  // ```dart
+  // class C {
+  //   C();
+  //
+  //   [!C!]();
+  // }
+  // ```
+  //
+  // The following code produces this diagnostic because there are two
+  // declarations for the constructor named `m`:
+  //
+  // ```dart
+  // class C {
+  //   C.m();
+  //
+  //   [!C.m!]();
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If there are multiple unnamed constructors and all of the constructors are
+  // needed, then give all of them, or all except one of them, a name:
+  //
+  // ```dart
+  // class C {
+  //   C();
+  //
+  //   C.n();
+  // }
+  // ```
+  //
+  // If there are multiple unnamed constructors and all except one of them are
+  // unneeded, then remove the constructors that aren't needed:
+  //
+  // ```dart
+  // class C {
+  //   C();
+  // }
+  // ```
+  //
+  // If there are multiple named constructors and all of the constructors are
+  // needed, then rename all except one of them:
+  //
+  // ```dart
+  // class C {
+  //   C.m();
+  //
+  //   C.n();
+  // }
+  // ```
+  //
+  // If there are multiple named constructors and all except one of them are
+  // unneeded, then remove the constructorsthat aren't needed:
+  //
+  // ```dart
+  // class C {
+  //   C.m();
+  // }
+  // ```
+  static const CompileTimeErrorCode DUPLICATE_CONSTRUCTOR_DEFAULT =
+      CompileTimeErrorCode(
+    'DUPLICATE_CONSTRUCTOR',
+    "The unnamed constructor is already defined.",
+    correction: "Try giving one of the constructors a name.",
+    hasPublishedDocs: true,
+    uniqueName: 'DUPLICATE_CONSTRUCTOR_DEFAULT',
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the duplicate entity
+   */
+  static const CompileTimeErrorCode DUPLICATE_CONSTRUCTOR_NAME =
+      CompileTimeErrorCode(
+    'DUPLICATE_CONSTRUCTOR',
+    "The constructor with name '{0}' is already defined.",
+    correction: "Try renaming one of the constructors.",
+    hasPublishedDocs: true,
+    uniqueName: 'DUPLICATE_CONSTRUCTOR_NAME',
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the duplicate entity
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a name is declared, and there is
+  // a previous declaration with the same name in the same scope.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because the name `x` is
+  // declared twice:
+  //
+  // ```dart
+  // int x = 0;
+  // int [!x!] = 1;
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Choose a different name for one of the declarations.
+  //
+  // ```dart
+  // int x = 0;
+  // int y = 1;
+  // ```
+  static const CompileTimeErrorCode DUPLICATE_DEFINITION = CompileTimeErrorCode(
+    'DUPLICATE_DEFINITION',
+    "The name '{0}' is already defined.",
+    correction: "Try renaming one of the declarations.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the field
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when there's more than one field
+  // formal parameter for the same field in a constructor's parameter list. It
+  // isn't useful to assign a value that will immediately be overwritten.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because `this.f` appears twice
+  // in the parameter list:
+  //
+  // ```dart
+  // class C {
+  //   int f;
+  //
+  //   C(this.f, this.[!f!]) {}
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Remove one of the field formal parameters:
+  //
+  // ```dart
+  // class C {
+  //   int f;
+  //
+  //   C(this.f) {}
+  // }
+  // ```
+  static const CompileTimeErrorCode DUPLICATE_FIELD_FORMAL_PARAMETER =
+      CompileTimeErrorCode(
+    'DUPLICATE_FIELD_FORMAL_PARAMETER',
+    "The field '{0}' can't be initialized by multiple parameters in the same constructor.",
+    correction:
+        "Try removing one of the parameters, or using different fields.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the parameter that was duplicated
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an invocation has two or more
+  // named arguments that have the same name.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because there are two arguments
+  // with the name `a`:
+  //
+  // ```dart
+  // %language=2.9
+  // void f(C c) {
+  //   c.m(a: 0, [!a!]: 1);
+  // }
+  //
+  // class C {
+  //   void m({int a, int b}) {}
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If one of the arguments should have a different name, then change the name:
+  //
+  // ```dart
+  // %language=2.9
+  // void f(C c) {
+  //   c.m(a: 0, b: 1);
+  // }
+  //
+  // class C {
+  //   void m({int a, int b}) {}
+  // }
+  // ```
+  //
+  // If one of the arguments is wrong, then remove it:
+  //
+  // ```dart
+  // %language=2.9
+  // void f(C c) {
+  //   c.m(a: 1);
+  // }
+  //
+  // class C {
+  //   void m({int a, int b}) {}
+  // }
+  // ```
+  static const CompileTimeErrorCode DUPLICATE_NAMED_ARGUMENT =
+      CompileTimeErrorCode(
+    'DUPLICATE_NAMED_ARGUMENT',
+    "The argument for the named parameter '{0}' was already specified.",
+    correction:
+        "Try removing one of the named arguments, or correcting one of the names to reference a different named parameter.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the URI of the duplicate part
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a single file is referenced in
+  // multiple part directives.
+  //
+  // #### Example
+  //
+  // Given a file named `part.dart` containing
+  //
+  // ```dart
+  // %uri="lib/part.dart"
+  // part of lib;
+  // ```
+  //
+  // The following code produces this diagnostic because the file `part.dart` is
+  // included multiple times:
+  //
+  // ```dart
+  // library lib;
+  //
+  // part 'part.dart';
+  // part [!'part.dart'!];
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Remove all except the first of the duplicated part directives:
+  //
+  // ```dart
+  // library lib;
+  //
+  // part 'part.dart';
+  // ```
+  static const CompileTimeErrorCode DUPLICATE_PART = CompileTimeErrorCode(
+    'DUPLICATE_PART',
+    "The library already contains a part with the URI '{0}'.",
+    correction:
+        "Try removing all except one of the duplicated part directives.",
+    hasPublishedDocs: true,
+  );
+
+  static const CompileTimeErrorCode ENUM_CONSTANT_SAME_NAME_AS_ENCLOSING =
+      CompileTimeErrorCode(
+    'ENUM_CONSTANT_SAME_NAME_AS_ENCLOSING',
+    "The name of the enum constant can't be the same as the enum's name.",
+    correction: "Try renaming the constant.",
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when two elements in a constant set
+  // literal have the same value. The set can only contain each value once,
+  // which means that one of the values is unnecessary.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because the string `'a'` is
+  // specified twice:
+  //
+  // ```dart
+  // const Set<String> set = {'a', [!'a'!]};
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Remove one of the duplicate values:
+  //
+  // ```dart
+  // const Set<String> set = {'a'};
+  // ```
+  //
+  // Note that literal sets preserve the order of their elements, so the choice
+  // of which element to remove might affect the order in which elements are
+  // returned by an iterator.
+  static const CompileTimeErrorCode EQUAL_ELEMENTS_IN_CONST_SET =
+      CompileTimeErrorCode(
+    'EQUAL_ELEMENTS_IN_CONST_SET',
+    "Two elements in a constant set literal can't be equal.",
+    correction: "Change or remove the duplicate element.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a key in a constant map is the
+  // same as a previous key in the same map. If two keys are the same, then the
+  // second value would overwrite the first value, which makes having both pairs
+  // pointless.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because the key `1` is used
+  // twice:
+  //
+  // ```dart
+  // const map = <int, String>{1: 'a', 2: 'b', [!1!]: 'c', 4: 'd'};
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If both entries should be included in the map, then change one of the keys
+  // to be different:
+  //
+  // ```dart
+  // const map = <int, String>{1: 'a', 2: 'b', 3: 'c', 4: 'd'};
+  // ```
+  //
+  // If only one of the entries is needed, then remove the one that isn't
+  // needed:
+  //
+  // ```dart
+  // const map = <int, String>{1: 'a', 2: 'b', 4: 'd'};
+  // ```
+  //
+  // Note that literal maps preserve the order of their entries, so the choice
+  // of which entry to remove might affect the order in which keys and values
+  // are returned by an iterator.
+  static const CompileTimeErrorCode EQUAL_KEYS_IN_CONST_MAP =
+      CompileTimeErrorCode(
+    'EQUAL_KEYS_IN_CONST_MAP',
+    "Two keys in a constant map literal can't be equal.",
+    correction: "Change or remove the duplicate key.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the number of provided type arguments
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a list literal has more than one
+  // type argument.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the list literal has
+  // two type arguments when it can have at most one:
+  //
+  // ```dart
+  // var l = [!<int, int>!][];
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Remove all except one of the type arguments:
+  //
+  // ```dart
+  // var l = <int>[];
+  // ```
+  static const CompileTimeErrorCode EXPECTED_ONE_LIST_TYPE_ARGUMENTS =
+      CompileTimeErrorCode(
+    'EXPECTED_ONE_LIST_TYPE_ARGUMENTS',
+    "List literals require one type argument or none, but {0} found.",
+    correction: "Try adjusting the number of type arguments.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the number of provided type arguments
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a set literal has more than one
+  // type argument.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the set literal has
+  // three type arguments when it can have at most one:
+  //
+  // ```dart
+  // var s = [!<int, String, int>!]{0, 'a', 1};
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Remove all except one of the type arguments:
+  //
+  // ```dart
+  // var s = <int>{0, 1};
+  // ```
+  static const CompileTimeErrorCode EXPECTED_ONE_SET_TYPE_ARGUMENTS =
+      CompileTimeErrorCode(
+    'EXPECTED_ONE_SET_TYPE_ARGUMENTS',
+    "Set literals require one type argument or none, but {0} were found.",
+    correction: "Try adjusting the number of type arguments.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the number of provided type arguments
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a map literal has either one or
+  // more than two type arguments.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the map literal has
+  // three type arguments when it can have either two or zero:
+  //
+  // ```dart
+  // var m = [!<int, String, int>!]{};
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Remove all except two of the type arguments:
+  //
+  // ```dart
+  // var m = <int, String>{};
+  // ```
+  static const CompileTimeErrorCode EXPECTED_TWO_MAP_TYPE_ARGUMENTS =
+      CompileTimeErrorCode(
+    'EXPECTED_TWO_MAP_TYPE_ARGUMENTS',
+    "Map literals require two type arguments or none, but {0} found.",
+    correction: "Try adjusting the number of type arguments.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the uri pointing to a library
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when it finds an export whose `dart:`
+  // URI references an internal library.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because `_interceptors` is an
+  // internal library:
+  //
+  // ```dart
+  // export [!'dart:_interceptors'!];
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Remove the export directive.
+  static const CompileTimeErrorCode EXPORT_INTERNAL_LIBRARY =
+      CompileTimeErrorCode(
+    'EXPORT_INTERNAL_LIBRARY',
+    "The library '{0}' is internal and can't be exported.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of a symbol defined in a legacy library
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a library that was opted in to
+  // null safety exports another library, and the exported library is opted out
+  // of null safety.
+  //
+  // #### Example
+  //
+  // Given a library that is opted out of null safety:
+  //
+  // ```dart
+  // %uri="lib/optedOut.dart"
+  // // @dart = 2.8
+  // String s;
+  // ```
+  //
+  // The following code produces this diagnostic because it's exporting symbols
+  // from an opted-out library:
+  //
+  // ```dart
+  // export [!'optedOut.dart'!];
+  //
+  // class C {}
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you're able to do so, migrate the exported library so that it doesn't
+  // need to opt out:
+  //
+  // ```dart
+  // String? s;
+  // ```
+  //
+  // If you can't migrate the library, then remove the export:
+  //
+  // ```dart
+  // class C {}
+  // ```
+  //
+  // If the exported library (the one that is opted out) itself exports an
+  // opted-in library, then it's valid for your library to indirectly export the
+  // symbols from the opted-in library. You can do so by adding a hide
+  // combinator to the export directive in your library that hides all of the
+  // names declared in the opted-out library.
+  static const CompileTimeErrorCode EXPORT_LEGACY_SYMBOL = CompileTimeErrorCode(
+    'EXPORT_LEGACY_SYMBOL',
+    "The symbol '{0}' is defined in a legacy library, and can't be re-exported from a library with null safety enabled.",
+    correction: "Try removing the export or migrating the legacy library.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the uri pointing to a non-library declaration
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an export directive references a
+  // part rather than a library.
+  //
+  // #### Example
+  //
+  // Given a file named `part.dart` containing
+  //
+  // ```dart
+  // %uri="lib/part.dart"
+  // part of lib;
+  // ```
+  //
+  // The following code produces this diagnostic because the file `part.dart` is
+  // a part, and only libraries can be exported:
+  //
+  // ```dart
+  // library lib;
+  //
+  // export [!'part.dart'!];
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Either remove the export directive, or change the URI to be the URI of the
+  // library containing the part.
+  static const CompileTimeErrorCode EXPORT_OF_NON_LIBRARY =
+      CompileTimeErrorCode(
+    'EXPORT_OF_NON_LIBRARY',
+    "The exported library '{0}' can't have a part-of directive.",
+    correction: "Try exporting the library that the part is a part of.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the analyzer finds an
+  // expression, rather than a map entry, in what appears to be a map literal.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic:
+  //
+  // ```dart
+  // var map = <String, int>{'a': 0, 'b': 1, [!'c'!]};
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the expression is intended to compute either a key or a value in an
+  // entry, fix the issue by replacing the expression with the key or the value.
+  // For example:
+  //
+  // ```dart
+  // var map = <String, int>{'a': 0, 'b': 1, 'c': 2};
+  // ```
+  static const CompileTimeErrorCode EXPRESSION_IN_MAP = CompileTimeErrorCode(
+    'EXPRESSION_IN_MAP',
+    "Expressions can't be used in a map literal.",
+    correction:
+        "Try removing the expression or converting it to be a map entry.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a type (class or mixin) is a
+  // subtype of a class from a library being imported using a deferred import.
+  // The supertypes of a type must be compiled at the same time as the type, and
+  // classes from deferred libraries aren't compiled until the library is
+  // loaded.
+  //
+  // For more information, see the language tour's coverage of
+  // [deferred loading](https://dart.dev/guides/language/language-tour#lazily-loading-a-library).
+  //
+  // #### Example
+  //
+  // Given a file (`a.dart`) that defines the class `A`:
+  //
+  // ```dart
+  // %uri="lib/a.dart"
+  // class A {}
+  // ```
+  //
+  // The following code produces this diagnostic because the superclass of `B`
+  // is declared in a deferred library:
+  //
+  // ```dart
+  // import 'a.dart' deferred as a;
+  //
+  // class B extends [!a.A!] {}
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you need to create a subtype of a type from the deferred library, then
+  // remove the `deferred` keyword:
+  //
+  // ```dart
+  // import 'a.dart' as a;
+  //
+  // class B extends a.A {}
+  // ```
+  static const CompileTimeErrorCode EXTENDS_DEFERRED_CLASS =
+      CompileTimeErrorCode(
+    'SUBTYPE_OF_DEFERRED_CLASS',
+    "Classes can't extend deferred classes.",
+    correction:
+        "Try specifying a different superclass, or removing the extends clause.",
+    hasPublishedDocs: true,
+    uniqueName: 'EXTENDS_DEFERRED_CLASS',
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the disallowed type
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when one of the restricted classes is
+  // used in either an `extends`, `implements`, `with`, or `on` clause. The
+  // classes `bool`, `double`, `FutureOr`, `int`, `Null`, `num`, and `String`
+  // are all restricted in this way, to allow for more efficient
+  // implementations.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because `String` is used in an
+  // `extends` clause:
+  //
+  // ```dart
+  // class A extends [!String!] {}
+  // ```
+  //
+  // The following code produces this diagnostic because `String` is used in an
+  // `implements` clause:
+  //
+  // ```dart
+  // class B implements [!String!] {}
+  // ```
+  //
+  // The following code produces this diagnostic because `String` is used in a
+  // `with` clause:
+  //
+  // ```dart
+  // class C with [!String!] {}
+  // ```
+  //
+  // The following code produces this diagnostic because `String` is used in an
+  // `on` clause:
+  //
+  // ```dart
+  // mixin M on [!String!] {}
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If a different type should be specified, then replace the type:
+  //
+  // ```dart
+  // class A extends Object {}
+  // ```
+  //
+  // If there isn't a different type that would be appropriate, then remove the
+  // type, and possibly the whole clause:
+  //
+  // ```dart
+  // class B {}
+  // ```
+  static const CompileTimeErrorCode EXTENDS_DISALLOWED_CLASS =
+      CompileTimeErrorCode(
+    'SUBTYPE_OF_DISALLOWED_TYPE',
+    "Classes can't extend '{0}'.",
+    correction:
+        "Try specifying a different superclass, or removing the extends clause.",
+    hasPublishedDocs: true,
+    uniqueName: 'EXTENDS_DISALLOWED_CLASS',
+  );
+
+  /**
+   * Parameters:
+   * 0: the name in the extends clause
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an `extends` clause contains a
+  // name that is declared to be something other than a class.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `f` is declared to be a
+  // function:
+  //
+  // ```dart
+  // void f() {}
+  //
+  // class C extends [!f!] {}
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you want the class to extend a class other than `Object`, then replace
+  // the name in the `extends` clause with the name of that class:
+  //
+  // ```dart
+  // void f() {}
+  //
+  // class C extends B {}
+  //
+  // class B {}
+  // ```
+  //
+  // If you want the class to extend `Object`, then remove the `extends` clause:
+  //
+  // ```dart
+  // void f() {}
+  //
+  // class C {}
+  // ```
+  static const CompileTimeErrorCode EXTENDS_NON_CLASS = CompileTimeErrorCode(
+    'EXTENDS_NON_CLASS',
+    "Classes can only extend other classes.",
+    correction:
+        "Try specifying a different superclass, or removing the extends clause.",
+    hasPublishedDocs: true,
+    isUnresolvedIdentifier: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a type alias that expands to a
+  // type parameter is used in an `extends`, `implements`, `with`, or `on`
+  // clause.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the type alias `T`,
+  // which expands to the type parameter `S`, is used in the `extends` clause of
+  // the class `C`:
+  //
+  // ```dart
+  // typedef T<S> = S;
+  //
+  // class C extends [!T!]<Object> {}
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Use the value of the type argument directly:
+  //
+  // ```dart
+  // typedef T<S> = S;
+  //
+  // class C extends Object {}
+  // ```
+  static const CompileTimeErrorCode
+      EXTENDS_TYPE_ALIAS_EXPANDS_TO_TYPE_PARAMETER = CompileTimeErrorCode(
+    'SUPERTYPE_EXPANDS_TO_TYPE_PARAMETER',
+    "A type alias that expands to a type parameter can't be used as a superclass.",
+    correction:
+        "Try specifying a different superclass, or removing the extends clause.",
+    hasPublishedDocs: true,
+    uniqueName: 'EXTENDS_TYPE_ALIAS_EXPANDS_TO_TYPE_PARAMETER',
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the extension
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the name of an extension is used
+  // in an expression other than in an extension override or to qualify an
+  // access to a static member of the extension. Because classes define a type,
+  // the name of a class can be used to refer to the instance of `Type`
+  // representing the type of the class. Extensions, on the other hand, don't
+  // define a type and can't be used as a type literal.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `E` is an extension:
+  //
+  // ```dart
+  // extension E on int {
+  //   static String m() => '';
+  // }
+  //
+  // var x = [!E!];
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Replace the name of the extension with a name that can be referenced, such
+  // as a static member defined on the extension:
+  //
+  // ```dart
+  // extension E on int {
+  //   static String m() => '';
+  // }
+  //
+  // var x = E.m();
+  // ```
+  static const CompileTimeErrorCode EXTENSION_AS_EXPRESSION =
+      CompileTimeErrorCode(
+    'EXTENSION_AS_EXPRESSION',
+    "Extension '{0}' can't be used as an expression.",
+    correction: "Try replacing it with a valid expression.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the extension defining the conflicting member
+   * 1: the name of the conflicting static member
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an extension declaration
+  // contains both an instance member and a static member that have the same
+  // name. The instance member and the static member can't have the same name
+  // because it's unclear which member is being referenced by an unqualified use
+  // of the name within the body of the extension.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because the name `a` is being
+  // used for two different members:
+  //
+  // ```dart
+  // extension E on Object {
+  //   int get a => 0;
+  //   static int [!a!]() => 0;
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Rename or remove one of the members:
+  //
+  // ```dart
+  // extension E on Object {
+  //   int get a => 0;
+  //   static int b() => 0;
+  // }
+  // ```
+  static const CompileTimeErrorCode EXTENSION_CONFLICTING_STATIC_AND_INSTANCE =
+      CompileTimeErrorCode(
+    'EXTENSION_CONFLICTING_STATIC_AND_INSTANCE',
+    "Extension '{0}' can't define static member '{1}' and an instance member with the same name.",
+    correction: "Try renaming the member to a name that doesn't conflict.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an extension declaration
+  // declares a member with the same name as a member declared in the class
+  // `Object`. Such a member can never be used because the member in `Object` is
+  // always found first.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `toString` is defined
+  // by `Object`:
+  //
+  // ```dart
+  // extension E on String {
+  //   String [!toString!]() => this;
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Remove the member or rename it so that the name doesn't conflict with the
+  // member in `Object`:
+  //
+  // ```dart
+  // extension E on String {
+  //   String displayString() => this;
+  // }
+  // ```
+  static const CompileTimeErrorCode EXTENSION_DECLARES_MEMBER_OF_OBJECT =
+      CompileTimeErrorCode(
+    'EXTENSION_DECLARES_MEMBER_OF_OBJECT',
+    "Extensions can't declare members with the same name as a member declared by 'Object'.",
+    correction: "Try specifying a different name for the member.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an extension override is the
+  // receiver of the invocation of a static member. Similar to static members in
+  // classes, the static members of an extension should be accessed using the
+  // name of the extension, not an extension override.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `m` is static:
+  //
+  // ```dart
+  // extension E on String {
+  //   static void m() {}
+  // }
+  //
+  // void f() {
+  //   E('').[!m!]();
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Replace the extension override with the name of the extension:
+  //
+  // ```dart
+  // extension E on String {
+  //   static void m() {}
+  // }
+  //
+  // void f() {
+  //   E.m();
+  // }
+  // ```
+  static const CompileTimeErrorCode EXTENSION_OVERRIDE_ACCESS_TO_STATIC_MEMBER =
+      CompileTimeErrorCode(
+    'EXTENSION_OVERRIDE_ACCESS_TO_STATIC_MEMBER',
+    "An extension override can't be used to access a static member from an extension.",
+    correction: "Try using just the name of the extension.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the type of the argument
+   * 1: the extended type
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the argument to an extension
+  // override isn't assignable to the type being extended by the extension.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `3` isn't a `String`:
+  //
+  // ```dart
+  // extension E on String {
+  //   void method() {}
+  // }
+  //
+  // void f() {
+  //   E([!3!]).method();
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you're using the correct extension, then update the argument to have the
+  // correct type:
+  //
+  // ```dart
+  // extension E on String {
+  //   void method() {}
+  // }
+  //
+  // void f() {
+  //   E(3.toString()).method();
+  // }
+  // ```
+  //
+  // If there's a different extension that's valid for the type of the argument,
+  // then either replace the name of the extension or unwrap the argument so
+  // that the correct extension is found.
+  static const CompileTimeErrorCode EXTENSION_OVERRIDE_ARGUMENT_NOT_ASSIGNABLE =
+      CompileTimeErrorCode(
+    'EXTENSION_OVERRIDE_ARGUMENT_NOT_ASSIGNABLE',
+    "The type of the argument to the extension override '{0}' isn't assignable to the extended type '{1}'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an extension override is found
+  // that isn't being used to access one of the members of the extension. The
+  // extension override syntax doesn't have any runtime semantics; it only
+  // controls which member is selected at compile time.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `E(i)` isn't an
+  // expression:
+  //
+  // ```dart
+  // extension E on int {
+  //   int get a => 0;
+  // }
+  //
+  // void f(int i) {
+  //   print([!E(i)!]);
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you want to invoke one of the members of the extension, then add the
+  // invocation:
+  //
+  // ```dart
+  // extension E on int {
+  //   int get a => 0;
+  // }
+  //
+  // void f(int i) {
+  //   print(E(i).a);
+  // }
+  // ```
+  //
+  // If you don't want to invoke a member, then unwrap the argument:
+  //
+  // ```dart
+  // extension E on int {
+  //   int get a => 0;
+  // }
+  //
+  // void f(int i) {
+  //   print(i);
+  // }
+  // ```
+  static const CompileTimeErrorCode EXTENSION_OVERRIDE_WITHOUT_ACCESS =
+      CompileTimeErrorCode(
+    'EXTENSION_OVERRIDE_WITHOUT_ACCESS',
+    "An extension override can only be used to access instance members.",
+    correction: "Consider adding an access to an instance member.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an extension override is used as
+  // the receiver of a cascade expression. The value of a cascade expression
+  // `e..m` is the value of the receiver `e`, but extension overrides aren't
+  // expressions and don't have a value.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `E(3)` isn't an
+  // expression:
+  //
+  // ```dart
+  // extension E on int {
+  //   void m() {}
+  // }
+  // f() {
+  //   [!E!](3)..m();
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Use `.` rather than `..`:
+  //
+  // ```dart
+  // extension E on int {
+  //   void m() {}
+  // }
+  // f() {
+  //   E(3).m();
+  // }
+  // ```
+  //
+  // If there are multiple cascaded accesses, you'll need to duplicate the
+  // extension override for each one.
+  static const CompileTimeErrorCode EXTENSION_OVERRIDE_WITH_CASCADE =
+      CompileTimeErrorCode(
+    'EXTENSION_OVERRIDE_WITH_CASCADE',
+    "Extension overrides have no value so they can't be used as the receiver of a cascade expression.",
+    correction: "Try using '.' instead of '..'.",
+    hasPublishedDocs: true,
+  );
+
+  static const CompileTimeErrorCode EXTERNAL_FIELD_CONSTRUCTOR_INITIALIZER =
+      CompileTimeErrorCode(
+    'EXTERNAL_FIELD_CONSTRUCTOR_INITIALIZER',
+    "External fields cannot have initializers.",
+    correction:
+        "Try removing the field initializer or the 'external' keyword from the field declaration.",
+  );
+
+  static const CompileTimeErrorCode EXTERNAL_FIELD_INITIALIZER =
+      CompileTimeErrorCode(
+    'EXTERNAL_FIELD_INITIALIZER',
+    "External fields cannot have initializers.",
+    correction: "Try removing the initializer or the 'external' keyword.",
+  );
+
+  static const CompileTimeErrorCode EXTERNAL_VARIABLE_INITIALIZER =
+      CompileTimeErrorCode(
+    'EXTERNAL_VARIABLE_INITIALIZER',
+    "External variables cannot have initializers.",
+    correction: "Try removing the initializer or the 'external' keyword.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the maximum number of positional arguments
+   * 1: the actual number of positional arguments given
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a method or function invocation
+  // has more positional arguments than the method or function allows.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `f` defines 2
+  // parameters but is invoked with 3 arguments:
+  //
+  // ```dart
+  // void f(int a, int b) {}
+  // void g() {
+  //   f(1, 2, [!3!]);
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Remove the arguments that don't correspond to parameters:
+  //
+  // ```dart
+  // void f(int a, int b) {}
+  // void g() {
+  //   f(1, 2);
+  // }
+  // ```
+  static const CompileTimeErrorCode EXTRA_POSITIONAL_ARGUMENTS =
+      CompileTimeErrorCode(
+    'EXTRA_POSITIONAL_ARGUMENTS',
+    "Too many positional arguments: {0} expected, but {1} found.",
+    correction: "Try removing the extra arguments.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the maximum number of positional arguments
+   * 1: the actual number of positional arguments given
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a method or function invocation
+  // has more positional arguments than the method or function allows, but the
+  // method or function defines named parameters.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `f` defines 2
+  // positional parameters but has a named parameter that could be used for the
+  // third argument:
+  //
+  // ```dart
+  // %language=2.9
+  // void f(int a, int b, {int c}) {}
+  // void g() {
+  //   f(1, 2, [!3!]);
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If some of the arguments should be values for named parameters, then add
+  // the names before the arguments:
+  //
+  // ```dart
+  // %language=2.9
+  // void f(int a, int b, {int c}) {}
+  // void g() {
+  //   f(1, 2, c: 3);
+  // }
+  // ```
+  //
+  // Otherwise, remove the arguments that don't correspond to positional
+  // parameters:
+  //
+  // ```dart
+  // %language=2.9
+  // void f(int a, int b, {int c}) {}
+  // void g() {
+  //   f(1, 2);
+  // }
+  // ```
+  static const CompileTimeErrorCode EXTRA_POSITIONAL_ARGUMENTS_COULD_BE_NAMED =
+      CompileTimeErrorCode(
+    'EXTRA_POSITIONAL_ARGUMENTS_COULD_BE_NAMED',
+    "Too many positional arguments: {0} expected, but {1} found.",
+    correction:
+        "Try removing the extra positional arguments, or specifying the name for named arguments.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the field being initialized multiple times
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the initializer list of a
+  // constructor initializes a field more than once. There is no value to allow
+  // both initializers because only the last value is preserved.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the field `f` is being
+  // initialized twice:
+  //
+  // ```dart
+  // class C {
+  //   int f;
+  //
+  //   C() : f = 0, [!f!] = 1;
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Remove one of the initializers:
+  //
+  // ```dart
+  // class C {
+  //   int f;
+  //
+  //   C() : f = 0;
+  // }
+  // ```
+  static const CompileTimeErrorCode FIELD_INITIALIZED_BY_MULTIPLE_INITIALIZERS =
+      CompileTimeErrorCode(
+    'FIELD_INITIALIZED_BY_MULTIPLE_INITIALIZERS',
+    "The field '{0}' can't be initialized twice in the same constructor.",
+    correction: "Try removing one of the initializations.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a final field is initialized in
+  // both the declaration of the field and in an initializer in a constructor.
+  // Final fields can only be assigned once, so it can't be initialized in both
+  // places.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because `f` is :
+  //
+  // ```dart
+  // class C {
+  //   final int f = 0;
+  //   C() : [!f!] = 1;
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the initialization doesn't depend on any values passed to the
+  // constructor, and if all of the constructors need to initialize the field to
+  // the same value, then remove the initializer from the constructor:
+  //
+  // ```dart
+  // class C {
+  //   final int f = 0;
+  //   C();
+  // }
+  // ```
+  //
+  // If the initialization depends on a value passed to the constructor, or if
+  // different constructors need to initialize the field differently, then
+  // remove the initializer in the field's declaration:
+  //
+  // ```dart
+  // class C {
+  //   final int f;
+  //   C() : f = 1;
+  // }
+  // ```
+  static const CompileTimeErrorCode
+      FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION = CompileTimeErrorCode(
+    'FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION',
+    "Fields can't be initialized in the constructor if they are final and were already initialized at their declaration.",
+    correction: "Try removing one of the initializations.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a field is initialized in both
+  // the parameter list and in the initializer list of a constructor.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the field `f` is
+  // initialized both by a field formal parameter and in the initializer list:
+  //
+  // ```dart
+  // class C {
+  //   int f;
+  //
+  //   C(this.f) : [!f!] = 0;
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the field should be initialized by the parameter, then remove the
+  // initialization in the initializer list:
+  //
+  // ```dart
+  // class C {
+  //   int f;
+  //
+  //   C(this.f);
+  // }
+  // ```
+  //
+  // If the field should be initialized in the initializer list and the
+  // parameter isn't needed, then remove the parameter:
+  //
+  // ```dart
+  // class C {
+  //   int f;
+  //
+  //   C() : f = 0;
+  // }
+  // ```
+  //
+  // If the field should be initialized in the initializer list and the
+  // parameter is needed, then make it a normal parameter:
+  //
+  // ```dart
+  // class C {
+  //   int f;
+  //
+  //   C(int g) : f = g * 2;
+  // }
+  // ```
+  static const CompileTimeErrorCode
+      FIELD_INITIALIZED_IN_PARAMETER_AND_INITIALIZER = CompileTimeErrorCode(
+    'FIELD_INITIALIZED_IN_PARAMETER_AND_INITIALIZER',
+    "Fields can't be initialized in both the parameter list and the initializers.",
+    correction: "Try removing one of the initializations.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a factory constructor has a
+  // field formal parameter. Factory constructors can't assign values to fields
+  // because no instance is created; hence, there is no field to assign.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the factory constructor
+  // uses a field formal parameter:
+  //
+  // ```dart
+  // class C {
+  //   int? f;
+  //
+  //   factory C([!this.f!]) => throw 0;
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Replace the field formal parameter with a normal parameter:
+  //
+  // ```dart
+  // class C {
+  //   int? f;
+  //
+  //   factory C(int f) => throw 0;
+  // }
+  // ```
+  static const CompileTimeErrorCode FIELD_INITIALIZER_FACTORY_CONSTRUCTOR =
+      CompileTimeErrorCode(
+    'FIELD_INITIALIZER_FACTORY_CONSTRUCTOR',
+    "Initializing formal parameters can't be used in factory constructors.",
+    correction: "Try using a normal parameter.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the type of the initializer expression
+   * 1: the name of the type of the field
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the initializer list of a
+  // constructor initializes a field to a value that isn't assignable to the
+  // field.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because `0` has the type `int`,
+  // and an `int` can't be assigned to a field of type `String`:
+  //
+  // ```dart
+  // class C {
+  //   String s;
+  //
+  //   C() : s = [!0!];
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the type of the field is correct, then change the value assigned to it
+  // so that the value has a valid type:
+  //
+  // ```dart
+  // class C {
+  //   String s;
+  //
+  //   C() : s = '0';
+  // }
+  // ```
+  //
+  // If the type of the value is correct, then change the type of the field to
+  // allow the assignment:
+  //
+  // ```dart
+  // class C {
+  //   int s;
+  //
+  //   C() : s = 0;
+  // }
+  // ```
+  static const CompileTimeErrorCode FIELD_INITIALIZER_NOT_ASSIGNABLE =
+      CompileTimeErrorCode(
+    'FIELD_INITIALIZER_NOT_ASSIGNABLE',
+    "The initializer type '{0}' can't be assigned to the field type '{1}'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * 7.6.1 Generative Constructors: It is a compile-time error if an
+   * initializing formal is used by a function other than a non-redirecting
+   * generative constructor.
+   */
+  static const CompileTimeErrorCode FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR =
+      CompileTimeErrorCode(
+    'FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR',
+    "Initializing formal parameters can only be used in constructors.",
+    correction: "Try using a normal parameter.",
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a redirecting constructor
+  // initializes a field in the object. This isn't allowed because the instance
+  // that has the field hasn't been created at the point at which it should be
+  // initialized.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the constructor
+  // `C.zero`, which redirects to the constructor `C`, has a field formal
+  // parameter that initializes the field `f`:
+  //
+  // ```dart
+  // class C {
+  //   int f;
+  //
+  //   C(this.f);
+  //
+  //   C.zero([!this.f!]) : this(f);
+  // }
+  // ```
+  //
+  // The following code produces this diagnostic because the constructor
+  // `C.zero`, which redirects to the constructor `C`, has an initializer that
+  // initializes the field `f`:
+  //
+  // ```dart
+  // class C {
+  //   int f;
+  //
+  //   C(this.f);
+  //
+  //   C.zero() : [!f = 0!], this(1);
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the initialization is done by a field formal parameter, then use a
+  // normal parameter:
+  //
+  // ```dart
+  // class C {
+  //   int f;
+  //
+  //   C(this.f);
+  //
+  //   C.zero(int f) : this(f);
+  // }
+  // ```
+  //
+  // If the initialization is done in an initializer, then remove the
+  // initializer:
+  //
+  // ```dart
+  // class C {
+  //   int f;
+  //
+  //   C(this.f);
+  //
+  //   C.zero() : this(0);
+  // }
+  // ```
+  static const CompileTimeErrorCode FIELD_INITIALIZER_REDIRECTING_CONSTRUCTOR =
+      CompileTimeErrorCode(
+    'FIELD_INITIALIZER_REDIRECTING_CONSTRUCTOR',
+    "The redirecting constructor can't have a field initializer.",
+    correction:
+        "Try initializing the field in the constructor being redirected to.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the type of the field formal parameter
+   * 1: the name of the type of the field
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the type of a field formal
+  // parameter isn't assignable to the type of the field being initialized.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the field formal
+  // parameter has the type `String`, but the type of the field is `int`. The
+  // parameter must have a type that is a subtype of the field's type.
+  //
+  // ```dart
+  // class C {
+  //   int f;
+  //
+  //   C([!String this.f!]);
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the type of the field is incorrect, then change the type of the field to
+  // match the type of the parameter, and consider removing the type from the
+  // parameter:
+  //
+  // ```dart
+  // class C {
+  //   String f;
+  //
+  //   C(this.f);
+  // }
+  // ```
+  //
+  // If the type of the parameter is incorrect, then remove the type of the
+  // parameter:
+  //
+  // ```dart
+  // class C {
+  //   int f;
+  //
+  //   C(this.f);
+  // }
+  // ```
+  //
+  // If the types of both the field and the parameter are correct, then use an
+  // initializer rather than a field formal parameter to convert the parameter
+  // value into a value of the correct type:
+  //
+  // ```dart
+  // class C {
+  //   int f;
+  //
+  //   C(String s) : f = int.parse(s);
+  // }
+  // ```
+  static const CompileTimeErrorCode FIELD_INITIALIZING_FORMAL_NOT_ASSIGNABLE =
+      CompileTimeErrorCode(
+    'FIELD_INITIALIZING_FORMAL_NOT_ASSIGNABLE',
+    "The parameter type '{0}' is incompatible with the field type '{1}'.",
+    correction:
+        "Try changing or removing the parameter's type, or changing the field's type.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the field in question
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a final field is initialized
+  // twice: once where it's declared and once by a constructor's parameter.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the field `f` is
+  // initialized twice:
+  //
+  // ```dart
+  // class C {
+  //   final int f = 0;
+  //
+  //   C(this.[!f!]);
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the field should have the same value for all instances, then remove the
+  // initialization in the parameter list:
+  //
+  // ```dart
+  // class C {
+  //   final int f = 0;
+  //
+  //   C();
+  // }
+  // ```
+  //
+  // If the field can have different values in different instances, then remove
+  // the initialization in the declaration:
+  //
+  // ```dart
+  // class C {
+  //   final int f;
+  //
+  //   C(this.f);
+  // }
+  // ```
+  static const CompileTimeErrorCode
+      FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR = CompileTimeErrorCode(
+    'FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR',
+    "'{0}' is final and was given a value when it was declared, so it can't be set to a new value.",
+    correction: "Try removing one of the initializations.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the uninitialized final variable
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a final field or variable isn't
+  // initialized.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `x` doesn't have an
+  // initializer:
+  //
+  // ```dart
+  // final [!x!];
+  // ```
+  //
+  // #### Common fixes
+  //
+  // For variables and static fields, you can add an initializer:
+  //
+  // ```dart
+  // final x = 0;
+  // ```
+  //
+  // For instance fields, you can add an initializer as shown in the previous
+  // example, or you can initialize the field in every constructor. You can
+  // initialize the field by using a field formal parameter:
+  //
+  // ```dart
+  // class C {
+  //   final int x;
+  //   C(this.x);
+  // }
+  // ```
+  //
+  // You can also initialize the field by using an initializer in the
+  // constructor:
+  //
+  // ```dart
+  // class C {
+  //   final int x;
+  //   C(int y) : x = y * 2;
+  // }
+  // ```
+  static const CompileTimeErrorCode FINAL_NOT_INITIALIZED =
+      CompileTimeErrorCode(
+    'FINAL_NOT_INITIALIZED',
+    "The final variable '{0}' must be initialized.",
+    correction: "Try initializing the variable.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the uninitialized final variable
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a class defines one or more
+  // final instance fields without initializers and has at least one constructor
+  // that doesn't initialize those fields. All final instance fields must be
+  // initialized when the instance is created, either by the field's initializer
+  // or by the constructor.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic:
+  //
+  // ```dart
+  // class C {
+  //   final String value;
+  //
+  //   [!C!]();
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the value should be passed in to the constructor directly, then use a
+  // field formal parameter to initialize the field `value`:
+  //
+  // ```dart
+  // class C {
+  //   final String value;
+  //
+  //   C(this.value);
+  // }
+  // ```
+  //
+  // If the value should be computed indirectly from a value provided by the
+  // caller, then add a parameter and include an initializer:
+  //
+  // ```dart
+  // class C {
+  //   final String value;
+  //
+  //   C(Object o) : value = o.toString();
+  // }
+  // ```
+  //
+  // If the value of the field doesn't depend on values that can be passed to
+  // the constructor, then add an initializer for the field as part of the field
+  // declaration:
+  //
+  // ```dart
+  // class C {
+  //   final String value = '';
+  //
+  //   C();
+  // }
+  // ```
+  //
+  // If the value of the field doesn't depend on values that can be passed to
+  // the constructor but different constructors need to initialize it to
+  // different values, then add an initializer for the field in the initializer
+  // list:
+  //
+  // ```dart
+  // class C {
+  //   final String value;
+  //
+  //   C() : value = '';
+  //
+  //   C.named() : value = 'c';
+  // }
+  // ```
+  //
+  // However, if the value is the same for all instances, then consider using a
+  // static field instead of an instance field:
+  //
+  // ```dart
+  // class C {
+  //   static const String value = '';
+  //
+  //   C();
+  // }
+  // ```
+  static const CompileTimeErrorCode FINAL_NOT_INITIALIZED_CONSTRUCTOR_1 =
+      CompileTimeErrorCode(
+    'FINAL_NOT_INITIALIZED_CONSTRUCTOR',
+    "All final variables must be initialized, but '{0}' isn't.",
+    correction: "Try adding an initializer for the field.",
+    hasPublishedDocs: true,
+    uniqueName: 'FINAL_NOT_INITIALIZED_CONSTRUCTOR_1',
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the uninitialized final variable
+   * 1: the name of the uninitialized final variable
+   */
+  static const CompileTimeErrorCode FINAL_NOT_INITIALIZED_CONSTRUCTOR_2 =
+      CompileTimeErrorCode(
+    'FINAL_NOT_INITIALIZED_CONSTRUCTOR',
+    "All final variables must be initialized, but '{0}' and '{1}' aren't.",
+    correction: "Try adding initializers for the fields.",
+    hasPublishedDocs: true,
+    uniqueName: 'FINAL_NOT_INITIALIZED_CONSTRUCTOR_2',
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the uninitialized final variable
+   * 1: the name of the uninitialized final variable
+   * 2: the number of additional not initialized variables that aren't listed
+   */
+  static const CompileTimeErrorCode FINAL_NOT_INITIALIZED_CONSTRUCTOR_3_PLUS =
+      CompileTimeErrorCode(
+    'FINAL_NOT_INITIALIZED_CONSTRUCTOR',
+    "All final variables must be initialized, but '{0}', '{1}', and {2} others aren't.",
+    correction: "Try adding initializers for the fields.",
+    hasPublishedDocs: true,
+    uniqueName: 'FINAL_NOT_INITIALIZED_CONSTRUCTOR_3_PLUS',
+  );
+
+  /**
+   * Parameters:
+   * 0: the type of the iterable expression.
+   * 1: the sequence type -- Iterable for `for` or Stream for `await for`.
+   * 2: the loop variable type.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the `Iterable` or `Stream` in a
+  // for-in loop has an element type that can't be assigned to the loop
+  // variable.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because `<String>[]` has an
+  // element type of `String`, and `String` can't be assigned to the type of `e`
+  // (`int`):
+  //
+  // ```dart
+  // void f() {
+  //   for (int e in [!<String>[]!]) {
+  //     print(e);
+  //   }
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the type of the loop variable is correct, then update the type of the
+  // iterable:
+  //
+  // ```dart
+  // void f() {
+  //   for (int e in <int>[]) {
+  //     print(e);
+  //   }
+  // }
+  // ```
+  //
+  // If the type of the iterable is correct, then update the type of the loop
+  // variable:
+  //
+  // ```dart
+  // void f() {
+  //   for (String e in <String>[]) {
+  //     print(e);
+  //   }
+  // }
+  // ```
+  static const CompileTimeErrorCode FOR_IN_OF_INVALID_ELEMENT_TYPE =
+      CompileTimeErrorCode(
+    'FOR_IN_OF_INVALID_ELEMENT_TYPE',
+    "The type '{0}' used in the 'for' loop must implement '{1}' with a type argument that can be assigned to '{2}'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the type of the iterable expression.
+   * 1: the sequence type -- Iterable for `for` or Stream for `await for`.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the expression following `in` in
+  // a for-in loop has a type that isn't a subclass of `Iterable`.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `m` is a `Map`, and
+  // `Map` isn't a subclass of `Iterable`:
+  //
+  // ```dart
+  // void f(Map<String, String> m) {
+  //   for (String s in [!m!]) {
+  //     print(s);
+  //   }
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Replace the expression with one that produces an iterable value:
+  //
+  // ```dart
+  // void f(Map<String, String> m) {
+  //   for (String s in m.values) {
+  //     print(s);
+  //   }
+  // }
+  // ```
+  static const CompileTimeErrorCode FOR_IN_OF_INVALID_TYPE =
+      CompileTimeErrorCode(
+    'FOR_IN_OF_INVALID_TYPE',
+    "The type '{0}' used in the 'for' loop must implement {1}.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the loop variable declared in a
+  // for-in loop is declared to be a `const`. The variable can't be a `const`
+  // because the value can't be computed at compile time.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the loop variable `x`
+  // is declared to be a `const`:
+  //
+  // ```dart
+  // void f() {
+  //   for ([!const!] x in [0, 1, 2]) {
+  //     print(x);
+  //   }
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If there's a type annotation, then remove the `const` modifier from the
+  // declaration.
+  //
+  // If there's no type, then replace the `const` modifier with `final`, `var`,
+  // or a type annotation:
+  //
+  // ```dart
+  // void f() {
+  //   for (final x in [0, 1, 2]) {
+  //     print(x);
+  //   }
+  // }
+  // ```
+  static const CompileTimeErrorCode FOR_IN_WITH_CONST_VARIABLE =
+      CompileTimeErrorCode(
+    'FOR_IN_WITH_CONST_VARIABLE',
+    "A for-in loop variable can't be a 'const'.",
+    correction:
+        "Try removing the 'const' modifier from the variable, or use a different variable.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * It is a compile-time error if a generic function type is used as a bound
+   * for a formal type parameter of a class or a function.
+   */
+  static const CompileTimeErrorCode GENERIC_FUNCTION_TYPE_CANNOT_BE_BOUND =
+      CompileTimeErrorCode(
+    'GENERIC_FUNCTION_TYPE_CANNOT_BE_BOUND',
+    "Generic function types can't be used as type parameter bounds",
+    correction:
+        "Try making the free variable in the function type part of the larger declaration signature",
+  );
+
+  /**
+   * It is a compile-time error if a generic function type is used as an actual
+   * type argument.
+   */
+  static const CompileTimeErrorCode
+      GENERIC_FUNCTION_TYPE_CANNOT_BE_TYPE_ARGUMENT = CompileTimeErrorCode(
+    'GENERIC_FUNCTION_TYPE_CANNOT_BE_TYPE_ARGUMENT',
+    "A generic function type can't be a type argument.",
+    correction:
+        "Try removing type parameters from the generic function type, or using 'dynamic' as the type argument here.",
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an instance method is being torn
+  // off from a receiver whose type is `dynamic`, and the tear-off includes type
+  // arguments. Because the analyzer can't know how many type parameters the
+  // method has, or whether it has any type parameters, there's no way it can
+  // validate that the type arguments are correct. As a result, the type
+  // arguments aren't allowed.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the type of `p` is
+  // `dynamic` and the tear-off of `m` has type arguments:
+  //
+  // ```dart
+  // void f(dynamic list) {
+  //   [!list.fold!]<int>;
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you can use a more specific type than `dynamic`, then change the type of
+  // the receiver:
+  //
+  // ```dart
+  // void f(List<Object> list) {
+  //   list.fold<int>;
+  // }
+  // ```
+  //
+  // If you can't use a more specific type, then remove the type arguments:
+  //
+  // ```dart
+  // void f(dynamic list) {
+  //   list.cast;
+  // }
+  // ```
+  static const CompileTimeErrorCode
+      GENERIC_METHOD_TYPE_INSTANTIATION_ON_DYNAMIC = CompileTimeErrorCode(
+    'GENERIC_METHOD_TYPE_INSTANTIATION_ON_DYNAMIC',
+    "A method tear-off on a receiver whose type is 'dynamic' can't have type arguments.",
+    correction:
+        "Specify the type of the receiver, or remove the type arguments from the method tear-off.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the getter
+   * 1: the type of the getter
+   * 2: the type of the setter
+   * 3: the name of the setter
+   */
+  static const CompileTimeErrorCode GETTER_NOT_ASSIGNABLE_SETTER_TYPES =
+      CompileTimeErrorCode(
+    'GETTER_NOT_ASSIGNABLE_SETTER_TYPES',
+    "The return type of getter '{0}' is '{1}' which isn't assignable to the type '{2}' of its setter '{3}'.",
+    correction: "Try changing the types so that they are compatible.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the getter
+   * 1: the type of the getter
+   * 2: the type of the setter
+   * 3: the name of the setter
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the return type of a getter
+  // isn't a subtype of the type of the parameter of a setter with the same
+  // name.
+  //
+  // The subtype relationship is a requirement whether the getter and setter are
+  // in the same class or whether one of them is in a superclass of the other.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the return type of the
+  // getter `x` is `num`, the parameter type of the setter `x` is `int`, and
+  // `num` isn't a subtype of `int`:
+  //
+  // ```dart
+  // class C {
+  //   num get [!x!] => 0;
+  //
+  //   set x(int y) {}
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the type of the getter is correct, then change the type of the setter:
+  //
+  // ```dart
+  // class C {
+  //   num get x => 0;
+  //
+  //   set x(num y) {}
+  // }
+  // ```
+  //
+  // If the type of the setter is correct, then change the type of the getter:
+  //
+  // ```dart
+  // class C {
+  //   int get x => 0;
+  //
+  //   set x(int y) {}
+  // }
+  // ```
+  static const CompileTimeErrorCode GETTER_NOT_SUBTYPE_SETTER_TYPES =
+      CompileTimeErrorCode(
+    'GETTER_NOT_SUBTYPE_SETTER_TYPES',
+    "The return type of getter '{0}' is '{1}' which isn't a subtype of the type '{2}' of its setter '{3}'.",
+    correction: "Try changing the types so that they are compatible.",
+    hasPublishedDocs: true,
+  );
+
+  static const CompileTimeErrorCode IF_ELEMENT_CONDITION_FROM_DEFERRED_LIBRARY =
+      CompileTimeErrorCode(
+    'IF_ELEMENT_CONDITION_FROM_DEFERRED_LIBRARY',
+    "Constant values from a deferred library can't be used as values in an if condition inside a const collection literal.",
+    correction: "Try making the deferred import non-deferred.",
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the body of a function has the
+  // `async*` modifier even though the return type of the function isn't either
+  // `Stream` or a supertype of `Stream`.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the body of the
+  // function `f` has the 'async*' modifier even though the return type `int`
+  // isn't a supertype of `Stream`:
+  //
+  // ```dart
+  // [!int!] f() async* {}
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the function should be asynchronous, then change the return type to be
+  // either `Stream` or a supertype of `Stream`:
+  //
+  // ```dart
+  // Stream<int> f() async* {}
+  // ```
+  //
+  // If the function should be synchronous, then remove the `async*` modifier:
+  //
+  // ```dart
+  // int f() => 0;
+  // ```
+  static const CompileTimeErrorCode ILLEGAL_ASYNC_GENERATOR_RETURN_TYPE =
+      CompileTimeErrorCode(
+    'ILLEGAL_ASYNC_GENERATOR_RETURN_TYPE',
+    "Functions marked 'async*' must have a return type that is a supertype of 'Stream<T>' for some type 'T'.",
+    correction:
+        "Try fixing the return type of the function, or removing the modifier 'async*' from the function body.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the body of a function has the
+  // `async` modifier even though the return type of the function isn't
+  // assignable to `Future`.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the body of the
+  // function `f` has the `async` modifier even though the return type isn't
+  // assignable to `Future`:
+  //
+  // ```dart
+  // [!int!] f() async {
+  //   return 0;
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the function should be asynchronous, then change the return type to be
+  // assignable to `Future`:
+  //
+  // ```dart
+  // Future<int> f() async {
+  //   return 0;
+  // }
+  // ```
+  //
+  // If the function should be synchronous, then remove the `async` modifier:
+  //
+  // ```dart
+  // int f() => 0;
+  // ```
+  static const CompileTimeErrorCode ILLEGAL_ASYNC_RETURN_TYPE =
+      CompileTimeErrorCode(
+    'ILLEGAL_ASYNC_RETURN_TYPE',
+    "Functions marked 'async' must have a return type assignable to 'Future'.",
+    correction:
+        "Try fixing the return type of the function, or removing the modifier 'async' from the function body.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the body of a function has the
+  // `sync*` modifier even though the return type of the function isn't either
+  // `Iterable` or a supertype of `Iterable`.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the body of the
+  // function `f` has the 'sync*' modifier even though the return type `int`
+  // isn't a supertype of `Iterable`:
+  //
+  // ```dart
+  // [!int!] f() sync* {}
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the function should return an iterable, then change the return type to
+  // be either `Iterable` or a supertype of `Iterable`:
+  //
+  // ```dart
+  // Iterable<int> f() sync* {}
+  // ```
+  //
+  // If the function should return a single value, then remove the `sync*`
+  // modifier:
+  //
+  // ```dart
+  // int f() => 0;
+  // ```
+  static const CompileTimeErrorCode ILLEGAL_SYNC_GENERATOR_RETURN_TYPE =
+      CompileTimeErrorCode(
+    'ILLEGAL_SYNC_GENERATOR_RETURN_TYPE',
+    "Functions marked 'sync*' must have a return type that is a supertype of 'Iterable<T>' for some type 'T'.",
+    correction:
+        "Try fixing the return type of the function, or removing the modifier 'sync*' from the function body.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  static const CompileTimeErrorCode IMPLEMENTS_DEFERRED_CLASS =
+      CompileTimeErrorCode(
+    'SUBTYPE_OF_DEFERRED_CLASS',
+    "Classes and mixins can't implement deferred classes.",
+    correction:
+        "Try specifying a different interface, removing the class from the list, or changing the import to not be deferred.",
+    hasPublishedDocs: true,
+    uniqueName: 'IMPLEMENTS_DEFERRED_CLASS',
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the disallowed type
+   */
+  static const CompileTimeErrorCode IMPLEMENTS_DISALLOWED_CLASS =
+      CompileTimeErrorCode(
+    'SUBTYPE_OF_DISALLOWED_TYPE',
+    "Classes and mixins can't implement '{0}'.",
+    correction:
+        "Try specifying a different interface, or remove the class from the list.",
+    hasPublishedDocs: true,
+    uniqueName: 'IMPLEMENTS_DISALLOWED_CLASS',
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the interface that was not found
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a name used in the `implements`
+  // clause of a class or mixin declaration is defined to be something other
+  // than a class or mixin.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `x` is a variable
+  // rather than a class or mixin:
+  //
+  // ```dart
+  // var x;
+  // class C implements [!x!] {}
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the name is the name of an existing class or mixin that's already being
+  // imported, then add a prefix to the import so that the local definition of
+  // the name doesn't shadow the imported name.
+  //
+  // If the name is the name of an existing class or mixin that isn't being
+  // imported, then add an import, with a prefix, for the library in which it’s
+  // declared.
+  //
+  // Otherwise, either replace the name in the `implements` clause with the name
+  // of an existing class or mixin, or remove the name from the `implements`
+  // clause.
+  static const CompileTimeErrorCode IMPLEMENTS_NON_CLASS = CompileTimeErrorCode(
+    'IMPLEMENTS_NON_CLASS',
+    "Classes and mixins can only implement other classes and mixins.",
+    correction:
+        "Try specifying a class or mixin, or remove the name from the list.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the interface that is implemented more than once
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a single class is specified more
+  // than once in an `implements` clause.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `A` is in the list
+  // twice:
+  //
+  // ```dart
+  // class A {}
+  // class B implements A, [!A!] {}
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Remove all except one occurrence of the class name:
+  //
+  // ```dart
+  // class A {}
+  // class B implements A {}
+  // ```
+  static const CompileTimeErrorCode IMPLEMENTS_REPEATED = CompileTimeErrorCode(
+    'IMPLEMENTS_REPEATED',
+    "'{0}' can only be implemented once.",
+    correction: "Try removing all but one occurrence of the class name.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the class that appears in both "extends" and "implements"
+   *    clauses
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when one class is listed in both the
+  // `extends` and `implements` clauses of another class.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the class `A` is used
+  // in both the `extends` and `implements` clauses for the class `B`:
+  //
+  // ```dart
+  // class A {}
+  //
+  // class B extends A implements [!A!] {}
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you want to inherit the implementation from the class, then remove the
+  // class from the `implements` clause:
+  //
+  // ```dart
+  // class A {}
+  //
+  // class B extends A {}
+  // ```
+  //
+  // If you don't want to inherit the implementation from the class, then remove
+  // the `extends` clause:
+  //
+  // ```dart
+  // class A {}
+  //
+  // class B implements A {}
+  // ```
+  static const CompileTimeErrorCode IMPLEMENTS_SUPER_CLASS =
+      CompileTimeErrorCode(
+    'IMPLEMENTS_SUPER_CLASS',
+    "'{0}' can't be used in both the 'extends' and 'implements' clauses.",
+    correction: "Try removing one of the occurrences.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  static const CompileTimeErrorCode
+      IMPLEMENTS_TYPE_ALIAS_EXPANDS_TO_TYPE_PARAMETER = CompileTimeErrorCode(
+    'SUPERTYPE_EXPANDS_TO_TYPE_PARAMETER',
+    "A type alias that expands to a type parameter can't be implemented.",
+    correction: "Try specifying a class or mixin, or removing the list.",
+    hasPublishedDocs: true,
+    uniqueName: 'IMPLEMENTS_TYPE_ALIAS_EXPANDS_TO_TYPE_PARAMETER',
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the instance member
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when it finds a reference to an
+  // instance member in a constructor's initializer list.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `defaultX` is an
+  // instance member:
+  //
+  // ```dart
+  // class C {
+  //   int x;
+  //
+  //   C() : x = [!defaultX!];
+  //
+  //   int get defaultX => 0;
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the member can be made static, then do so:
+  //
+  // ```dart
+  // class C {
+  //   int x;
+  //
+  //   C() : x = defaultX;
+  //
+  //   static int get defaultX => 0;
+  // }
+  // ```
+  //
+  // If not, then replace the reference in the initializer with a different
+  // expression that doesn't use an instance member:
+  //
+  // ```dart
+  // class C {
+  //   int x;
+  //
+  //   C() : x = 0;
+  //
+  //   int get defaultX => 0;
+  // }
+  // ```
+  static const CompileTimeErrorCode IMPLICIT_THIS_REFERENCE_IN_INITIALIZER =
+      CompileTimeErrorCode(
+    'IMPLICIT_THIS_REFERENCE_IN_INITIALIZER',
+    "The instance member '{0}' can't be accessed in an initializer.",
+    correction:
+        "Try replacing the reference to the instance member with a different expression",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the uri pointing to a library
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when it finds an import whose `dart:`
+  // URI references an internal library.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because `_interceptors` is an
+  // internal library:
+  //
+  // ```dart
+  // import [!'dart:_interceptors'!];
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Remove the import directive.
+  static const CompileTimeErrorCode IMPORT_INTERNAL_LIBRARY =
+      CompileTimeErrorCode(
+    'IMPORT_INTERNAL_LIBRARY',
+    "The library '{0}' is internal and can't be imported.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * 14.1 Imports: It is a compile-time error if the specified URI of an
+   * immediate import does not refer to a library declaration.
+   *
+   * Parameters:
+   * 0: the uri pointing to a non-library declaration
+   */
+  static const CompileTimeErrorCode IMPORT_OF_NON_LIBRARY =
+      CompileTimeErrorCode(
+    'IMPORT_OF_NON_LIBRARY',
+    "The imported library '{0}' can't have a part-of directive.",
+    correction: "Try importing the library that the part is a part of.",
+  );
+
+  /**
+   * 13.9 Switch: It is a compile-time error if values of the expressions
+   * <i>e<sub>k</sub></i> are not instances of the same class <i>C</i>, for all
+   * <i>1 &lt;= k &lt;= n</i>.
+   *
+   * Parameters:
+   * 0: the expression source code that is the unexpected type
+   * 1: the name of the expected type
+   */
+  static const CompileTimeErrorCode INCONSISTENT_CASE_EXPRESSION_TYPES =
+      CompileTimeErrorCode(
+    'INCONSISTENT_CASE_EXPRESSION_TYPES',
+    "Case expressions must have the same types, '{0}' isn't a '{1}'.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the instance member with inconsistent inheritance.
+   * 1: the list of all inherited signatures for this member.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a class inherits two or more
+  // conflicting signatures for a member and doesn't provide an implementation
+  // that satisfies all the inherited signatures.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because `C` is inheriting the
+  // declaration of `m` from `A`, and that implementation isn't consistent with
+  // the signature of `m` that's inherited from `B`:
+  //
+  // ```dart
+  // %language=2.9
+  // class A {
+  //   void m({int a}) {}
+  // }
+  //
+  // class B {
+  //   void m({int b}) {}
+  // }
+  //
+  // class [!C!] extends A implements B {
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Add an implementation of the method that satisfies all the inherited
+  // signatures:
+  //
+  // ```dart
+  // %language=2.9
+  // class A {
+  //   void m({int a}) {}
+  // }
+  //
+  // class B {
+  //   void m({int b}) {}
+  // }
+  //
+  // class C extends A implements B {
+  //   void m({int a, int b}) {}
+  // }
+  // ```
+  static const CompileTimeErrorCode INCONSISTENT_INHERITANCE =
+      CompileTimeErrorCode(
+    'INCONSISTENT_INHERITANCE',
+    "Superinterfaces don't have a valid override for '{0}': {1}.",
+    correction:
+        "Try adding an explicit override that is consistent with all of the inherited members.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * 11.1.1 Inheritance and Overriding. Let `I` be the implicit interface of a
+   * class `C` declared in library `L`. `I` inherits all members of
+   * `inherited(I, L)` and `I` overrides `m'` if `m' ∈ overrides(I, L)`. It is
+   * a compile-time error if `m` is a method and `m'` is a getter, or if `m`
+   * is a getter and `m'` is a method.
+   *
+   * Parameters:
+   * 0: the name of the the instance member with inconsistent inheritance.
+   * 1: the name of the superinterface that declares the name as a getter.
+   * 2: the name of the superinterface that declares the name as a method.
+   */
+  static const CompileTimeErrorCode INCONSISTENT_INHERITANCE_GETTER_AND_METHOD =
+      CompileTimeErrorCode(
+    'INCONSISTENT_INHERITANCE_GETTER_AND_METHOD',
+    "'{0}' is inherited as a getter (from '{1}') and also a method (from '{2}').",
+    correction:
+        "Try adjusting the supertypes of this class to remove the inconsistency.",
+  );
+
+  /**
+   * It is a compile-time error if a part file has a different language version
+   * override than its library.
+   *
+   * https://github.com/dart-lang/language/blob/master/accepted/
+   * future-releases/language-versioning/feature-specification.md
+   * #individual-library-language-version-override
+   */
+  static const CompileTimeErrorCode INCONSISTENT_LANGUAGE_VERSION_OVERRIDE =
+      CompileTimeErrorCode(
+    'INCONSISTENT_LANGUAGE_VERSION_OVERRIDE',
+    "Parts must have exactly the same language version override as the library.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the initializing formal that is not an instance variable in
+   *    the immediately enclosing class
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a constructor initializes a
+  // field that isn't declared in the class containing the constructor.
+  // Constructors can't initialize fields that aren't declared and fields that
+  // are inherited from superclasses.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because the initializer is
+  // initializing `x`, but `x` isn't a field in the class:
+  //
+  // ```dart
+  // %language=2.9
+  // class C {
+  //   int y;
+  //
+  //   C() : [!x = 0!];
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If a different field should be initialized, then change the name to the
+  // name of the field:
+  //
+  // ```dart
+  // %language=2.9
+  // class C {
+  //   int y;
+  //
+  //   C() : y = 0;
+  // }
+  // ```
+  //
+  // If the field must be declared, then add a declaration:
+  //
+  // ```dart
+  // %language=2.9
+  // class C {
+  //   int x;
+  //   int y;
+  //
+  //   C() : x = 0;
+  // }
+  // ```
+  static const CompileTimeErrorCode INITIALIZER_FOR_NON_EXISTENT_FIELD =
+      CompileTimeErrorCode(
+    'INITIALIZER_FOR_NON_EXISTENT_FIELD',
+    "'{0}' isn't a field in the enclosing class.",
+    correction:
+        "Try correcting the name to match an existing field, or defining a field named '{0}'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the initializing formal that is a static variable in the
+   *    immediately enclosing class
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a static field is initialized in
+  // a constructor using either a field formal parameter or an assignment in the
+  // initializer list.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the static field `a` is
+  // being initialized by the field formal parameter `this.a`:
+  //
+  // ```dart
+  // class C {
+  //   static int? a;
+  //   C([!this.a!]);
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the field should be an instance field, then remove the keyword `static`:
+  //
+  // ```dart
+  // class C {
+  //   int? a;
+  //   C(this.a);
+  // }
+  // ```
+  //
+  // If you intended to initialize an instance field and typed the wrong name,
+  // then correct the name of the field being initialized:
+  //
+  // ```dart
+  // class C {
+  //   static int? a;
+  //   int? b;
+  //   C(this.b);
+  // }
+  // ```
+  //
+  // If you really want to initialize the static field, then move the
+  // initialization into the constructor body:
+  //
+  // ```dart
+  // class C {
+  //   static int? a;
+  //   C(int? c) {
+  //     a = c;
+  //   }
+  // }
+  // ```
+  static const CompileTimeErrorCode INITIALIZER_FOR_STATIC_FIELD =
+      CompileTimeErrorCode(
+    'INITIALIZER_FOR_STATIC_FIELD',
+    "'{0}' is a static field in the enclosing class. Fields initialized in a constructor can't be static.",
+    correction: "Try removing the initialization.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the initializing formal that is not an instance variable in
+   *    the immediately enclosing class
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a field formal parameter is
+  // found in a constructor in a class that doesn't declare the field being
+  // initialized. Constructors can't initialize fields that aren't declared and
+  // fields that are inherited from superclasses.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because the field `x` isn't
+  // defined:
+  //
+  // ```dart
+  // %language=2.9
+  // class C {
+  //   int y;
+  //
+  //   C([!this.x!]);
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the field name was wrong, then change it to the name of an existing
+  // field:
+  //
+  // ```dart
+  // %language=2.9
+  // class C {
+  //   int y;
+  //
+  //   C(this.y);
+  // }
+  // ```
+  //
+  // If the field name is correct but hasn't yet been defined, then declare the
+  // field:
+  //
+  // ```dart
+  // %language=2.9
+  // class C {
+  //   int x;
+  //   int y;
+  //
+  //   C(this.x);
+  // }
+  // ```
+  //
+  // If the parameter is needed but shouldn't initialize a field, then convert
+  // it to a normal parameter and use it:
+  //
+  // ```dart
+  // %language=2.9
+  // class C {
+  //   int y;
+  //
+  //   C(int x) : y = x * 2;
+  // }
+  // ```
+  //
+  // If the parameter isn't needed, then remove it:
+  //
+  // ```dart
+  // %language=2.9
+  // class C {
+  //   int y;
+  //
+  //   C();
+  // }
+  // ```
+  static const CompileTimeErrorCode INITIALIZING_FORMAL_FOR_NON_EXISTENT_FIELD =
+      CompileTimeErrorCode(
+    'INITIALIZING_FORMAL_FOR_NON_EXISTENT_FIELD',
+    "'{0}' isn't a field in the enclosing class.",
+    correction:
+        "Try correcting the name to match an existing field, or defining a field named '{0}'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the static member
+   * 1: the kind of the static member (field, getter, setter, or method)
+   * 2: the name of the defining class
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an access operator is used to
+  // access a static member through an instance of the class.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `zero` is a static
+  // field, but it’s being accessed as if it were an instance field:
+  //
+  // ```dart
+  // void f(C c) {
+  //   c.[!zero!];
+  // }
+  //
+  // class C {
+  //   static int zero = 0;
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Use the class to access the static member:
+  //
+  // ```dart
+  // void f(C c) {
+  //   C.zero;
+  // }
+  //
+  // class C {
+  //   static int zero = 0;
+  // }
+  // ```
+  static const CompileTimeErrorCode INSTANCE_ACCESS_TO_STATIC_MEMBER =
+      CompileTimeErrorCode(
+    'INSTANCE_ACCESS_TO_STATIC_MEMBER',
+    "Static {1} '{0}' can't be accessed through an instance.",
+    correction: "Try using the class '{2}' to access the {1}.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a factory constructor contains
+  // an unqualified reference to an instance member. In a generative
+  // constructor, the instance of the class is created and initialized before
+  // the body of the constructor is executed, so the instance can be bound to
+  // `this` and accessed just like it would be in an instance method. But, in a
+  // factory constructor, the instance isn't created before executing the body,
+  // so `this` can't be used to reference it.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `x` isn't in scope in
+  // the factory constructor:
+  //
+  // ```dart
+  // class C {
+  //   int x;
+  //   factory C() {
+  //     return C._([!x!]);
+  //   }
+  //   C._(this.x);
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Rewrite the code so that it doesn't reference the instance member:
+  //
+  // ```dart
+  // class C {
+  //   int x;
+  //   factory C() {
+  //     return C._(0);
+  //   }
+  //   C._(this.x);
+  // }
+  // ```
+  static const CompileTimeErrorCode INSTANCE_MEMBER_ACCESS_FROM_FACTORY =
+      CompileTimeErrorCode(
+    'INSTANCE_MEMBER_ACCESS_FROM_FACTORY',
+    "Instance members can't be accessed from a factory constructor.",
+    correction: "Try removing the reference to the instance member.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a static method contains an
+  // unqualified reference to an instance member.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because the instance field `x`
+  // is being referenced in a static method:
+  //
+  // ```dart
+  // %language=2.9
+  // class C {
+  //   int x;
+  //
+  //   static int m() {
+  //     return [!x!];
+  //   }
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the method must reference the instance member, then it can't be static,
+  // so remove the keyword:
+  //
+  // ```dart
+  // %language=2.9
+  // class C {
+  //   int x;
+  //
+  //   int m() {
+  //     return x;
+  //   }
+  // }
+  // ```
+  //
+  // If the method can't be made an instance method, then add a parameter so
+  // that an instance of the class can be passed in:
+  //
+  // ```dart
+  // %language=2.9
+  // class C {
+  //   int x;
+  //
+  //   static int m(C c) {
+  //     return c.x;
+  //   }
+  // }
+  // ```
+  static const CompileTimeErrorCode INSTANCE_MEMBER_ACCESS_FROM_STATIC =
+      CompileTimeErrorCode(
+    'INSTANCE_MEMBER_ACCESS_FROM_STATIC',
+    "Instance members can't be accessed from a static method.",
+    correction:
+        "Try removing the reference to the instance member, or removing the keyword 'static' from the method.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when it finds a constructor
+  // invocation and the constructor is declared in an abstract class. Even
+  // though you can't create an instance of an abstract class, abstract classes
+  // can declare constructors that can be invoked by subclasses.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `C` is an abstract
+  // class:
+  //
+  // ```dart
+  // abstract class C {}
+  //
+  // var c = new [!C!]();
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If there's a concrete subclass of the abstract class that can be used, then
+  // create an instance of the concrete subclass.
+  static const CompileTimeErrorCode INSTANTIATE_ABSTRACT_CLASS =
+      CompileTimeErrorCode(
+    'INSTANTIATE_ABSTRACT_CLASS',
+    "Abstract classes can't be instantiated.",
+    correction: "Try creating an instance of a concrete subtype.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an enum is instantiated. It's
+  // invalid to create an instance of an enum by invoking a constructor; only
+  // the instances named in the declaration of the enum can exist.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the enum `E` is being
+  // instantiated:
+  //
+  // ```dart
+  // enum E {a}
+  //
+  // var e = [!E!]();
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you intend to use an instance of the enum, then reference one of the
+  // constants defined in the enum:
+  //
+  // ```dart
+  // enum E {a}
+  //
+  // var e = E.a;
+  // ```
+  //
+  // If you intend to use an instance of a class, then use the name of that class in place of the name of the enum.
+  static const CompileTimeErrorCode INSTANTIATE_ENUM = CompileTimeErrorCode(
+    'INSTANTIATE_ENUM',
+    "Enums can't be instantiated.",
+    correction: "Try using one of the defined constants.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a constructor invocation is
+  // found where the type being instantiated is a type alias for one of the type
+  // parameters of the type alias. This isn’t allowed because the value of the
+  // type parameter is a type rather than a class.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because it creates an instance
+  // of `A`, even though `A` is a type alias that is defined to be equivalent to
+  // a type parameter:
+  //
+  // ```dart
+  // typedef A<T> = T;
+  //
+  // void f() {
+  //   const [!A!]<int>();
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Use either a class name or a type alias defined to be a class, rather than
+  // a type alias defined to be a type parameter:
+  //
+  // ```dart
+  // typedef A<T> = C<T>;
+  //
+  // void f() {
+  //   const A<int>();
+  // }
+  //
+  // class C<T> {
+  //   const C();
+  // }
+  // ```
+  static const CompileTimeErrorCode
+      INSTANTIATE_TYPE_ALIAS_EXPANDS_TO_TYPE_PARAMETER = CompileTimeErrorCode(
+    'INSTANTIATE_TYPE_ALIAS_EXPANDS_TO_TYPE_PARAMETER',
+    "Type aliases that expand to a type parameter can't be instantiated.",
+    correction: "Try replacing it with a class.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the lexeme of the integer
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an integer literal is being
+  // implicitly converted to a double, but can't be represented as a 64-bit
+  // double without overflow or loss of precision. Integer literals are
+  // implicitly converted to a double if the context requires the type `double`.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the integer value
+  // `9223372036854775807` can't be represented exactly as a double:
+  //
+  // ```dart
+  // double x = [!9223372036854775807!];
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you need to use the exact value, then use the class `BigInt` to
+  // represent the value:
+  //
+  // ```dart
+  // var x = BigInt.parse('9223372036854775807');
+  // ```
+  //
+  // If you need to use a double, then change the value to one that can be
+  // represented exactly:
+  //
+  // ```dart
+  // double x = 9223372036854775808;
+  // ```
+  static const CompileTimeErrorCode INTEGER_LITERAL_IMPRECISE_AS_DOUBLE =
+      CompileTimeErrorCode(
+    'INTEGER_LITERAL_IMPRECISE_AS_DOUBLE',
+    "The integer literal is being used as a double, but can't be represented as a 64-bit double without overflow or loss of precision: '{0}'.",
+    correction:
+        "Try using the class 'BigInt', or switch to the closest valid double: '{1}'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an integer literal has a value
+  // that is too large (positive) or too small (negative) to be represented in a
+  // 64-bit word.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the value can't be
+  // represented in 64 bits:
+  //
+  // ```dart
+  // var x = [!9223372036854775810!];
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you need to represent the current value, then wrap it in an instance of
+  // the class `BigInt`:
+  //
+  // ```dart
+  // var x = BigInt.parse('9223372036854775810');
+  // ```
+  static const CompileTimeErrorCode INTEGER_LITERAL_OUT_OF_RANGE =
+      CompileTimeErrorCode(
+    'INTEGER_LITERAL_OUT_OF_RANGE',
+    "The integer literal {0} can't be represented in 64 bits.",
+    correction:
+        "Try using the 'BigInt' class if you need an integer larger than 9,223,372,036,854,775,807 or less than -9,223,372,036,854,775,808.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an annotation is found that is
+  // using something that is neither a variable marked as `const` or the
+  // invocation of a `const` constructor.
+  //
+  // Getters can't be used as annotations.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the variable `v` isn't
+  // a `const` variable:
+  //
+  // ```dart
+  // var v = 0;
+  //
+  // [!@v!]
+  // void f() {
+  // }
+  // ```
+  //
+  // The following code produces this diagnostic because `f` isn't a variable:
+  //
+  // ```dart
+  // [!@f!]
+  // void f() {
+  // }
+  // ```
+  //
+  // The following code produces this diagnostic because `f` isn't a
+  // constructor:
+  //
+  // ```dart
+  // [!@f()!]
+  // void f() {
+  // }
+  // ```
+  //
+  // The following code produces this diagnostic because `g` is a getter:
+  //
+  // ```dart
+  // [!@g!]
+  // int get g => 0;
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the annotation is referencing a variable that isn't a `const`
+  // constructor, add the keyword `const` to the variable's declaration:
+  //
+  // ```dart
+  // const v = 0;
+  //
+  // @v
+  // void f() {
+  // }
+  // ```
+  //
+  // If the annotation isn't referencing a variable, then remove it:
+  //
+  // ```dart
+  // int v = 0;
+  //
+  // void f() {
+  // }
+  // ```
+  static const CompileTimeErrorCode INVALID_ANNOTATION = CompileTimeErrorCode(
+    'INVALID_ANNOTATION',
+    "Annotation must be either a const variable reference or const constructor invocation.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a constant defined in a library
+  // that is imported as a deferred library is referenced in the argument list
+  // of an annotation. Annotations are evaluated at compile time, and values
+  // from deferred libraries aren't available at compile time.
+  //
+  // For more information, see the language tour's coverage of
+  // [deferred loading](https://dart.dev/guides/language/language-tour#lazily-loading-a-library).
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the constant `pi` is
+  // being referenced in the argument list of an annotation, even though the
+  // library that defines it is being imported as a deferred library:
+  //
+  // ```dart
+  // import 'dart:math' deferred as math;
+  //
+  // class C {
+  //   const C(double d);
+  // }
+  //
+  // @C([!math.pi!])
+  // void f () {}
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you need to reference the imported constant, then remove the `deferred`
+  // keyword:
+  //
+  // ```dart
+  // import 'dart:math' as math;
+  //
+  // class C {
+  //   const C(double d);
+  // }
+  //
+  // @C(math.pi)
+  // void f () {}
+  // ```
+  //
+  // If the import is required to be deferred and there's another constant that
+  // is appropriate, then use that constant in place of the constant from the
+  // deferred library.
+  static const CompileTimeErrorCode
+      INVALID_ANNOTATION_CONSTANT_VALUE_FROM_DEFERRED_LIBRARY =
+      CompileTimeErrorCode(
+    'INVALID_ANNOTATION_CONSTANT_VALUE_FROM_DEFERRED_LIBRARY',
+    "Constant values from a deferred library can't be used in annotations.",
+    correction:
+        "Try moving the constant from the deferred library, or removing 'deferred' from the import.",
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a constant from a library that
+  // is imported using a deferred import is used as an annotation. Annotations
+  // are evaluated at compile time, and constants from deferred libraries aren't
+  // available at compile time.
+  //
+  // For more information, see the language tour's coverage of
+  // [deferred loading](https://dart.dev/guides/language/language-tour#lazily-loading-a-library).
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the constant `pi` is
+  // being used as an annotation when the library `dart:math` is imported as
+  // `deferred`:
+  //
+  // ```dart
+  // import 'dart:math' deferred as math;
+  //
+  // @[!math.pi!]
+  // void f() {}
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you need to reference the constant as an annotation, then remove the
+  // keyword `deferred` from the import:
+  //
+  // ```dart
+  // import 'dart:math' as math;
+  //
+  // @math.pi
+  // void f() {}
+  // ```
+  //
+  // If you can use a different constant as an annotation, then replace the
+  // annotation with a different constant:
+  //
+  // ```dart
+  // @deprecated
+  // void f() {}
+  // ```
+  static const CompileTimeErrorCode INVALID_ANNOTATION_FROM_DEFERRED_LIBRARY =
+      CompileTimeErrorCode(
+    'INVALID_ANNOTATION_FROM_DEFERRED_LIBRARY',
+    "Constant values from a deferred library can't be used as annotations.",
+    correction:
+        "Try removing the annotation, or changing the import to not be deferred.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the right hand side type
+   * 1: the name of the left hand side type
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the static type of an expression
+  // that is assigned to a variable isn't assignable to the type of the
+  // variable.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because the type of the
+  // initializer (`int`) isn't assignable to the type of the variable
+  // (`String`):
+  //
+  // ```dart
+  // int i = 0;
+  // String s = [!i!];
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the value being assigned is always assignable at runtime, even though
+  // the static types don't reflect that, then add an explicit cast.
+  //
+  // Otherwise, change the value being assigned so that it has the expected
+  // type. In the previous example, this might look like:
+  //
+  // ```dart
+  // int i = 0;
+  // String s = i.toString();
+  // ```
+  //
+  // If you can’t change the value, then change the type of the variable to be
+  // compatible with the type of the value being assigned:
+  //
+  // ```dart
+  // int i = 0;
+  // int s = i;
+  // ```
+  static const CompileTimeErrorCode INVALID_ASSIGNMENT = CompileTimeErrorCode(
+    'INVALID_ASSIGNMENT',
+    "A value of type '{0}' can't be assigned to a variable of type '{1}'.",
+    correction:
+        "Try changing the type of the variable, or casting the right-hand type to '{1}'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the type of the function
+   * 1: the expected function type
+   */
+  static const CompileTimeErrorCode INVALID_CAST_FUNCTION =
+      CompileTimeErrorCode(
+    'INVALID_CAST_FUNCTION',
+    "The function '{0}' has type '{1}' that isn't of expected type '{2}'. This means its parameter or return type doesn't match what is expected.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the type of the torn-off function expression
+   * 1: the expected function type
+   */
+  static const CompileTimeErrorCode INVALID_CAST_FUNCTION_EXPR =
+      CompileTimeErrorCode(
+    'INVALID_CAST_FUNCTION_EXPR',
+    "The function expression type '{0}' isn't of type '{1}'. This means its parameter or return type doesn't match what is expected. Consider changing parameter type(s) or the returned type(s).",
+  );
+
+  /**
+   * Parameters:
+   * 0: the type of the literal
+   * 1: the expected type
+   */
+  static const CompileTimeErrorCode INVALID_CAST_LITERAL = CompileTimeErrorCode(
+    'INVALID_CAST_LITERAL',
+    "The literal '{0}' with type '{1}' isn't of expected type '{2}'.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the type of the list literal
+   * 1: the expected type
+   */
+  static const CompileTimeErrorCode INVALID_CAST_LITERAL_LIST =
+      CompileTimeErrorCode(
+    'INVALID_CAST_LITERAL_LIST',
+    "The list literal type '{0}' isn't of expected type '{1}'. The list's type can be changed with an explicit generic type argument or by changing the element types.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the type of the map literal
+   * 1: the expected type
+   */
+  static const CompileTimeErrorCode INVALID_CAST_LITERAL_MAP =
+      CompileTimeErrorCode(
+    'INVALID_CAST_LITERAL_MAP',
+    "The map literal type '{0}' isn't of expected type '{1}'. The maps's type can be changed with an explicit generic type arguments or by changing the key and value types.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the type of the set literal
+   * 1: the expected type
+   */
+  static const CompileTimeErrorCode INVALID_CAST_LITERAL_SET =
+      CompileTimeErrorCode(
+    'INVALID_CAST_LITERAL_SET',
+    "The set literal type '{0}' isn't of expected type '{1}'. The set's type can be changed with an explicit generic type argument or by changing the element types.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the type of the torn-off method
+   * 1: the expected function type
+   */
+  static const CompileTimeErrorCode INVALID_CAST_METHOD = CompileTimeErrorCode(
+    'INVALID_CAST_METHOD',
+    "The method tear-off '{0}' has type '{1}' that isn't of expected type '{2}'. This means its parameter or return type doesn't match what is expected.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the type of the instantiated object
+   * 1: the expected type
+   */
+  static const CompileTimeErrorCode INVALID_CAST_NEW_EXPR =
+      CompileTimeErrorCode(
+    'INVALID_CAST_NEW_EXPR',
+    "The constructor returns type '{0}' that isn't of expected type '{1}'.",
+  );
+
+  /**
+   * TODO(brianwilkerson) Remove this when we have decided on how to report
+   * errors in compile-time constants. Until then, this acts as a placeholder
+   * for more informative errors.
+   *
+   * See TODOs in ConstantVisitor
+   */
+  static const CompileTimeErrorCode INVALID_CONSTANT = CompileTimeErrorCode(
+    'INVALID_CONSTANT',
+    "Invalid constant value.",
+  );
+
+  /**
+   * 7.6 Constructors: It is a compile-time error if the name of a constructor
+   * is not a constructor name.
+   */
+  static const CompileTimeErrorCode INVALID_CONSTRUCTOR_NAME =
+      CompileTimeErrorCode(
+    'INVALID_CONSTRUCTOR_NAME',
+    "Invalid constructor name.",
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an extension override doesn't
+  // have exactly one argument. The argument is the expression used to compute
+  // the value of `this` within the extension method, so there must be one
+  // argument.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because there are no arguments:
+  //
+  // ```dart
+  // extension E on String {
+  //   String join(String other) => '$this $other';
+  // }
+  //
+  // void f() {
+  //   E[!()!].join('b');
+  // }
+  // ```
+  //
+  // And, the following code produces this diagnostic because there's more than
+  // one argument:
+  //
+  // ```dart
+  // extension E on String {
+  //   String join(String other) => '$this $other';
+  // }
+  //
+  // void f() {
+  //   E[!('a', 'b')!].join('c');
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Provide one argument for the extension override:
+  //
+  // ```dart
+  // extension E on String {
+  //   String join(String other) => '$this $other';
+  // }
+  //
+  // void f() {
+  //   E('a').join('b');
+  // }
+  // ```
+  static const CompileTimeErrorCode INVALID_EXTENSION_ARGUMENT_COUNT =
+      CompileTimeErrorCode(
+    'INVALID_EXTENSION_ARGUMENT_COUNT',
+    "Extension overrides must have exactly one argument: the value of 'this' in the extension method.",
+    correction: "Try specifying exactly one argument.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the name of a factory
+  // constructor isn't the same as the name of the surrounding class.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because the name of the factory
+  // constructor (`A`) isn't the same as the surrounding class (`C`):
+  //
+  // ```dart
+  // class A {}
+  //
+  // class C {
+  //   factory [!A!]() => throw 0;
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the factory returns an instance of the surrounding class, then rename
+  // the factory:
+  //
+  // ```dart
+  // class A {}
+  //
+  // class C {
+  //   factory C() => throw 0;
+  // }
+  // ```
+  //
+  // If the factory returns an instance of a different class, then move the
+  // factory to that class:
+  //
+  // ```dart
+  // class A {
+  //   factory A() => throw 0;
+  // }
+  //
+  // class C {}
+  // ```
+  //
+  // If the factory returns an instance of a different class, but you can't
+  // modify that class or don't want to move the factory, then convert it to be
+  // a static method:
+  //
+  // ```dart
+  // class A {}
+  //
+  // class C {
+  //   static A a() => throw 0;
+  // }
+  // ```
+  static const CompileTimeErrorCode INVALID_FACTORY_NAME_NOT_A_CLASS =
+      CompileTimeErrorCode(
+    'INVALID_FACTORY_NAME_NOT_A_CLASS',
+    "The name of a factory constructor must be the same as the name of the immediately enclosing class.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the declared member that is not a valid override.
+   * 1: the name of the interface that declares the member.
+   * 2: the type of the declared member in the interface.
+   * 3. the name of the interface with the overridden member.
+   * 4. the type of the overridden member.
+   *
+   * These parameters must be kept in sync with those of
+   * [CompileTimeErrorCode.INVALID_OVERRIDE].
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when all of the following are true:
+  //
+  // - A class defines an abstract member.
+  // - There is a concrete implementation of that member in a superclass.
+  // - The concrete implementation isn't a valid implementation of the abstract
+  //   method.
+  //
+  // The concrete implementation can be invalid because of incompatibilities in
+  // either the return type, the types of parameters, or the type variables.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the method `A.add` has
+  // a parameter of type `int`, and the overriding method `B.add` has a
+  // corresponding parameter of type `num`:
+  //
+  // ```dart
+  // class A {
+  //   int add(int a) => a;
+  // }
+  // class [!B!] extends A {
+  //   int add(num a);
+  // }
+  // ```
+  //
+  // This is a problem because in an invocation of `B.add` like the following:
+  //
+  // ```dart
+  // void f(B b) {
+  //   b.add(3.4);
+  // }
+  // ```
+  //
+  // `B.add` is expecting to be able to take, for example, a `double`, but when
+  // the method `A.add` is executed (because it's the only concrete
+  // implementation of `add`), a runtime exception will be thrown because a
+  // `double` can't be assigned to a parameter of type `int`.
+  //
+  // #### Common fixes
+  //
+  // If the method in the subclass can conform to the implementation in the
+  // superclass, then change the declaration in the subclass (or remove it if
+  // it's the same):
+  //
+  // ```dart
+  // class A {
+  //   int add(int a) => a;
+  // }
+  // class B	extends A {
+  //   int add(int a);
+  // }
+  // ```
+  //
+  // If the method in the superclass can be generalized to be a valid
+  // implementation of the method in the subclass, then change the superclass
+  // method:
+  //
+  // ```dart
+  // class A {
+  //   int add(num a) => a.floor();
+  // }
+  // class B	extends A {
+  //   int add(num a);
+  // }
+  // ```
+  //
+  // If neither the method in the superclass nor the method in the subclass can
+  // be changed, then provide a concrete implementation of the method in the
+  // subclass:
+  //
+  // ```dart
+  // class A {
+  //   int add(int a) => a;
+  // }
+  // class B	extends A {
+  //   int add(num a) => a.floor();
+  // }
+  // ```
+  static const CompileTimeErrorCode INVALID_IMPLEMENTATION_OVERRIDE =
+      CompileTimeErrorCode(
+    'INVALID_IMPLEMENTATION_OVERRIDE',
+    "'{1}.{0}' ('{2}') isn't a valid concrete implementation of '{3}.{0}' ('{4}').",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a generic function type has a
+  // function-valued parameter that is written using the older inline function
+  // type syntax.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the parameter `f`, in
+  // the generic function type used to define `F`, uses the inline function
+  // type syntax:
+  //
+  // ```dart
+  // typedef F = int Function(int f[!(!]String s));
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Use the generic function syntax for the parameter's type:
+  //
+  // ```dart
+  // typedef F = int Function(int Function(String));
+  // ```
+  static const CompileTimeErrorCode INVALID_INLINE_FUNCTION_TYPE =
+      CompileTimeErrorCode(
+    'INVALID_INLINE_FUNCTION_TYPE',
+    "Inline function types can't be used for parameters in a generic function type.",
+    correction:
+        "Try using a generic function type (returnType 'Function(' parameters ')').",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the invalid modifier
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the body of a constructor is
+  // prefixed by one of the following modifiers: `async`, `async*`, or `sync*`.
+  // Constructor bodies must be synchronous.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the body of the
+  // constructor for `C` is marked as being `async`:
+  //
+  // ```dart
+  // class C {
+  //   C() [!async!] {}
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the constructor can be synchronous, then remove the modifier:
+  //
+  // ```dart
+  // class C {
+  //   C();
+  // }
+  // ```
+  //
+  // If the constructor can't be synchronous, then use a static method to create
+  // the instance instead:
+  //
+  // ```dart
+  // class C {
+  //   C();
+  //   static Future<C> c() async {
+  //     return C();
+  //   }
+  // }
+  // ```
+  static const CompileTimeErrorCode INVALID_MODIFIER_ON_CONSTRUCTOR =
+      CompileTimeErrorCode(
+    'INVALID_MODIFIER_ON_CONSTRUCTOR',
+    "The modifier '{0}' can't be applied to the body of a constructor.",
+    correction: "Try removing the modifier.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the invalid modifier
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the body of a setter is prefixed
+  // by one of the following modifiers: `async`, `async*`, or `sync*`. Setter
+  // bodies must be synchronous.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the body of the setter
+  // `x` is marked as being `async`:
+  //
+  // ```dart
+  // class C {
+  //   set x(int i) [!async!] {}
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the setter can be synchronous, then remove the modifier:
+  //
+  // ```dart
+  // class C {
+  //   set x(int i) {}
+  // }
+  // ```
+  //
+  // If the setter can't be synchronous, then use a method to set the value
+  // instead:
+  //
+  // ```dart
+  // class C {
+  //   void x(int i) async {}
+  // }
+  // ```
+  static const CompileTimeErrorCode INVALID_MODIFIER_ON_SETTER =
+      CompileTimeErrorCode(
+    'INVALID_MODIFIER_ON_SETTER',
+    "Setters can't use 'async', 'async*', or 'sync*'.",
+    correction: "Try removing the modifier.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the declared member that is not a valid override.
+   * 1: the name of the interface that declares the member.
+   * 2: the type of the declared member in the interface.
+   * 3. the name of the interface with the overridden member.
+   * 4. the type of the overridden member.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a member of a class is found
+  // that overrides a member from a supertype and the override isn't valid. An
+  // override is valid if all of these are true:
+  // * It allows all of the arguments allowed by the overridden member.
+  // * It doesn't require any arguments that aren't required by the overridden
+  //   member.
+  // * The type of every parameter of the overridden member is assignable to the
+  //   corresponding parameter of the override.
+  // * The return type of the override is assignable to the return type of the
+  //   overridden member.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because the type of the
+  // parameter `s` (`String`) isn't assignable to the type of the parameter `i`
+  // (`int`):
+  //
+  // ```dart
+  // class A {
+  //   void m(int i) {}
+  // }
+  //
+  // class B extends A {
+  //   void [!m!](String s) {}
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the invalid method is intended to override the method from the
+  // superclass, then change it to conform:
+  //
+  // ```dart
+  // class A {
+  //   void m(int i) {}
+  // }
+  //
+  // class B extends A {
+  //   void m(int i) {}
+  // }
+  // ```
+  //
+  // If it isn't intended to override the method from the superclass, then
+  // rename it:
+  //
+  // ```dart
+  // class A {
+  //   void m(int i) {}
+  // }
+  //
+  // class B extends A {
+  //   void m2(String s) {}
+  // }
+  // ```
+  static const CompileTimeErrorCode INVALID_OVERRIDE = CompileTimeErrorCode(
+    'INVALID_OVERRIDE',
+    "'{1}.{0}' ('{2}') isn't a valid override of '{3}.{0}' ('{4}').",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when `this` is used outside of an
+  // instance method or a generative constructor. The reserved word `this` is
+  // only defined in the context of an instance method or a generative
+  // constructor.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `v` is a top-level
+  // variable:
+  //
+  // ```dart
+  // C f() => [!this!];
+  //
+  // class C {}
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Use a variable of the appropriate type in place of `this`, declaring it if
+  // necessary:
+  //
+  // ```dart
+  // C f(C c) => c;
+  //
+  // class C {}
+  // ```
+  static const CompileTimeErrorCode INVALID_REFERENCE_TO_THIS =
+      CompileTimeErrorCode(
+    'INVALID_REFERENCE_TO_THIS',
+    "Invalid reference to 'this' expression.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the initializer list of a
+  // constructor contains an invocation of a constructor in the superclass, but
+  // the invocation isn't the last item in the initializer list.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the invocation of the
+  // superclass' constructor isn't the last item in the initializer list:
+  //
+  // ```dart
+  // class A {
+  //   A(int x);
+  // }
+  //
+  // class B extends A {
+  //   B(int x) : [!super!](x), assert(x >= 0);
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Move the invocation of the superclass' constructor to the end of the
+  // initializer list:
+  //
+  // ```dart
+  // class A {
+  //   A(int x);
+  // }
+  //
+  // class B extends A {
+  //   B(int x) : assert(x >= 0), super(x);
+  // }
+  // ```
+  static const CompileTimeErrorCode INVALID_SUPER_INVOCATION =
+      CompileTimeErrorCode(
+    'INVALID_SUPER_INVOCATION',
+    "The superclass call must be last in an initializer list: '{0}'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the type parameter
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a type parameter is used as a
+  // type argument in a list, map, or set literal that is prefixed by `const`.
+  // This isn't allowed because the value of the type parameter (the actual type
+  // that will be used at runtime) can't be known at compile time.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the type parameter `T`
+  // is being used as a type argument when creating a constant list:
+  //
+  // ```dart
+  // List<T> newList<T>() => const <[!T!]>[];
+  // ```
+  //
+  // The following code produces this diagnostic because the type parameter `T`
+  // is being used as a type argument when creating a constant map:
+  //
+  // ```dart
+  // Map<String, T> newSet<T>() => const <String, [!T!]>{};
+  // ```
+  //
+  // The following code produces this diagnostic because the type parameter `T`
+  // is being used as a type argument when creating a constant set:
+  //
+  // ```dart
+  // Set<T> newSet<T>() => const <[!T!]>{};
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the type that will be used for the type parameter can be known at
+  // compile time, then remove the type parameter:
+  //
+  // ```dart
+  // List<int> newList() => const <int>[];
+  // ```
+  //
+  // If the type that will be used for the type parameter can't be known until
+  // runtime, then remove the keyword `const`:
+  //
+  // ```dart
+  // List<T> newList<T>() => <T>[];
+  // ```
+  static const CompileTimeErrorCode INVALID_TYPE_ARGUMENT_IN_CONST_LIST =
+      CompileTimeErrorCode(
+    'INVALID_TYPE_ARGUMENT_IN_CONST_LITERAL',
+    "Constant list literals can't include a type parameter as a type argument, such as '{0}'.",
+    correction: "Try replacing the type parameter with a different type.",
+    hasPublishedDocs: true,
+    uniqueName: 'INVALID_TYPE_ARGUMENT_IN_CONST_LIST',
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the type parameter
+   */
+  static const CompileTimeErrorCode INVALID_TYPE_ARGUMENT_IN_CONST_MAP =
+      CompileTimeErrorCode(
+    'INVALID_TYPE_ARGUMENT_IN_CONST_LITERAL',
+    "Constant map literals can't include a type parameter as a type argument, such as '{0}'.",
+    correction: "Try replacing the type parameter with a different type.",
+    hasPublishedDocs: true,
+    uniqueName: 'INVALID_TYPE_ARGUMENT_IN_CONST_MAP',
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the type parameter
+   */
+  static const CompileTimeErrorCode INVALID_TYPE_ARGUMENT_IN_CONST_SET =
+      CompileTimeErrorCode(
+    'INVALID_TYPE_ARGUMENT_IN_CONST_LITERAL',
+    "Constant set literals can't include a type parameter as a type argument, such as '{0}'.",
+    correction: "Try replacing the type parameter with a different type.",
+    hasPublishedDocs: true,
+    uniqueName: 'INVALID_TYPE_ARGUMENT_IN_CONST_SET',
+  );
+
+  /**
+   * Parameters:
+   * 0: the URI that is invalid
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a URI in a directive doesn't
+  // conform to the syntax of a valid URI.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `'#'` isn't a valid
+  // URI:
+  //
+  // ```dart
+  // import [!'#'!];
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Replace the invalid URI with a valid URI.
+  static const CompileTimeErrorCode INVALID_URI = CompileTimeErrorCode(
+    'INVALID_URI',
+    "Invalid URI syntax: '{0}'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * The 'covariant' keyword was found in an inappropriate location.
+   */
+  static const CompileTimeErrorCode INVALID_USE_OF_COVARIANT =
+      CompileTimeErrorCode(
+    'INVALID_USE_OF_COVARIANT',
+    "The 'covariant' keyword can only be used for parameters in instance methods or before non-final instance fields.",
+    correction: "Try removing the 'covariant' keyword.",
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an expression whose value will
+  // always be `null` is dereferenced.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because `x` will always be
+  // `null`:
+  //
+  // ```dart
+  // int f(Null x) {
+  //   return [!x!].length;
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the value is allowed to be something other than `null`, then change the
+  // type of the expression:
+  //
+  // ```dart
+  // int f(String? x) {
+  //   return x!.length;
+  // }
+  // ```
+  static const CompileTimeErrorCode INVALID_USE_OF_NULL_VALUE =
+      CompileTimeErrorCode(
+    'INVALID_USE_OF_NULL_VALUE',
+    "An expression whose value is always 'null' can't be dereferenced.",
+    correction: "Try changing the type of the expression.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the extension
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an extension override is used to
+  // invoke a function but the extension doesn't declare a `call` method.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because the extension `E`
+  // doesn't define a `call` method:
+  //
+  // ```dart
+  // extension E on String {}
+  //
+  // void f() {
+  //   [!E('')!]();
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the extension is intended to define a `call` method, then declare it:
+  //
+  // ```dart
+  // extension E on String {
+  //   int call() => 0;
+  // }
+  //
+  // void f() {
+  //   E('')();
+  // }
+  // ```
+  //
+  // If the extended type defines a `call` method, then remove the extension
+  // override.
+  //
+  // If the `call` method isn't defined, then rewrite the code so that it
+  // doesn't invoke the `call` method.
+  static const CompileTimeErrorCode INVOCATION_OF_EXTENSION_WITHOUT_CALL =
+      CompileTimeErrorCode(
+    'INVOCATION_OF_EXTENSION_WITHOUT_CALL',
+    "The extension '{0}' doesn't define a 'call' method so the override can't be used in an invocation.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the identifier that is not a function type
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when it finds a function invocation,
+  // but the name of the function being invoked is defined to be something other
+  // than a function.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `Binary` is the name of
+  // a function type, not a function:
+  //
+  // ```dart
+  // typedef Binary = int Function(int, int);
+  //
+  // int f() {
+  //   return [!Binary!](1, 2);
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Replace the name with the name of a function.
+  static const CompileTimeErrorCode INVOCATION_OF_NON_FUNCTION =
+      CompileTimeErrorCode(
+    'INVOCATION_OF_NON_FUNCTION',
+    "'{0}' isn't a function.",
+    correction:
+        "Try correcting the name to match an existing function, or define a method or function named '{0}'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a function invocation is found,
+  // but the name being referenced isn't the name of a function, or when the
+  // expression computing the function doesn't compute a function.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `x` isn't a function:
+  //
+  // ```dart
+  // int x = 0;
+  //
+  // int f() => x;
+  //
+  // var y = [!x!]();
+  // ```
+  //
+  // The following code produces this diagnostic because `f()` doesn't return a
+  // function:
+  //
+  // ```dart
+  // int x = 0;
+  //
+  // int f() => x;
+  //
+  // var y = [!f()!]();
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you need to invoke a function, then replace the code before the argument
+  // list with the name of a function or with an expression that computes a
+  // function:
+  //
+  // ```dart
+  // int x = 0;
+  //
+  // int f() => x;
+  //
+  // var y = f();
+  // ```
+  static const CompileTimeErrorCode INVOCATION_OF_NON_FUNCTION_EXPRESSION =
+      CompileTimeErrorCode(
+    'INVOCATION_OF_NON_FUNCTION_EXPRESSION',
+    "The expression doesn't evaluate to a function, so it can't be invoked.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the unresolvable label
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a `break` or `continue`
+  // statement references a label that is declared in a method or function
+  // containing the function in which the `break` or `continue` statement
+  // appears. The `break` and `continue` statements can't be used to transfer
+  // control outside the function that contains them.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the label `loop` is
+  // declared outside the local function `g`:
+  //
+  // ```dart
+  // void f() {
+  //   loop:
+  //   while (true) {
+  //     void g() {
+  //       break [!loop!];
+  //     }
+  //
+  //     g();
+  //   }
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Try rewriting the code so that it isn't necessary to transfer control
+  // outside the local function, possibly by inlining the local function:
+  //
+  // ```dart
+  // void f() {
+  //   loop:
+  //   while (true) {
+  //     break loop;
+  //   }
+  // }
+  // ```
+  //
+  // If that isn't possible, then try rewriting the local function so that a
+  // value returned by the function can be used to determine whether control is
+  // transferred:
+  //
+  // ```dart
+  // void f() {
+  //   loop:
+  //   while (true) {
+  //     bool g() {
+  //       return true;
+  //     }
+  //
+  //     if (g()) {
+  //       break loop;
+  //     }
+  //   }
+  // }
+  // ```
+  static const CompileTimeErrorCode LABEL_IN_OUTER_SCOPE = CompileTimeErrorCode(
+    'LABEL_IN_OUTER_SCOPE',
+    "Can't reference label '{0}' declared in an outer method.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the unresolvable label
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when it finds a reference to a label
+  // that isn't defined in the scope of the `break` or `continue` statement that
+  // is referencing it.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the label `loop` isn't
+  // defined anywhere:
+  //
+  // ```dart
+  // void f() {
+  //   for (int i = 0; i < 10; i++) {
+  //     for (int j = 0; j < 10; j++) {
+  //       break [!loop!];
+  //     }
+  //   }
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the label should be on the innermost enclosing `do`, `for`, `switch`, or
+  // `while` statement, then remove the label:
+  //
+  // ```dart
+  // void f() {
+  //   for (int i = 0; i < 10; i++) {
+  //     for (int j = 0; j < 10; j++) {
+  //       break;
+  //     }
+  //   }
+  // }
+  // ```
+  //
+  // If the label should be on some other statement, then add the label:
+  //
+  // ```dart
+  // void f() {
+  //   loop: for (int i = 0; i < 10; i++) {
+  //     for (int j = 0; j < 10; j++) {
+  //       break loop;
+  //     }
+  //   }
+  // }
+  // ```
+  static const CompileTimeErrorCode LABEL_UNDEFINED = CompileTimeErrorCode(
+    'LABEL_UNDEFINED',
+    "Can't reference an undefined label '{0}'.",
+    correction:
+        "Try defining the label, or correcting the name to match an existing label.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a class that has at least one
+  // `const` constructor also has a field marked both `late` and `final`.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the class `A` has a
+  // `const` constructor and the `final` field `f` is marked as `late`:
+  //
+  // ```dart
+  // class A {
+  //   [!late!] final int f;
+  //
+  //   const A();
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the field doesn't need to be marked `late`, then remove the `late`
+  // modifier from the field:
+  //
+  // ```dart
+  // class A {
+  //   final int f = 0;
+  //
+  //   const A();
+  // }
+  // ```
+  //
+  // If the field must be marked `late`, then remove the `const` modifier from
+  // the constructors:
+  //
+  // ```dart
+  // class A {
+  //   late final int f;
+  //
+  //   A();
+  // }
+  // ```
+  static const CompileTimeErrorCode LATE_FINAL_FIELD_WITH_CONST_CONSTRUCTOR =
+      CompileTimeErrorCode(
+    'LATE_FINAL_FIELD_WITH_CONST_CONSTRUCTOR',
+    "Can't have a late final field in a class with a generative const constructor.",
+    correction:
+        "Try removing the 'late' modifier, or don't declare 'const' constructors.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the analyzer can prove that a
+  // local variable marked as both `late` and `final` was already assigned a
+  // value at the point where another assignment occurs.
+  //
+  // Because `final` variables can only be assigned once, subsequent assignments
+  // are guaranteed to fail, so they're flagged.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the `final` variable
+  // `v` is assigned a value in two places:
+  //
+  // ```dart
+  // int f() {
+  //   late final int v;
+  //   v = 0;
+  //   [!v!] += 1;
+  //   return v;
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you need to be able to reassign the variable, then remove the `final`
+  // keyword:
+  //
+  // ```dart
+  // int f() {
+  //   late int v;
+  //   v = 0;
+  //   v += 1;
+  //   return v;
+  // }
+  // ```
+  //
+  // If you don't need to reassign the variable, then remove all except the
+  // first of the assignments:
+  //
+  // ```dart
+  // int f() {
+  //   late final int v;
+  //   v = 0;
+  //   return v;
+  // }
+  // ```
+  static const CompileTimeErrorCode LATE_FINAL_LOCAL_ALREADY_ASSIGNED =
+      CompileTimeErrorCode(
+    'LATE_FINAL_LOCAL_ALREADY_ASSIGNED',
+    "The late final local variable is already assigned.",
+    correction:
+        "Try removing the 'final' modifier, or don't reassign the value.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the actual type of the list element
+   * 1: the expected type of the list element
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the type of an element in a list
+  // literal isn't assignable to the element type of the list.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `2.5` is a double, and
+  // the list can hold only integers:
+  //
+  // ```dart
+  // List<int> x = [1, [!2.5!], 3];
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you intended to add a different object to the list, then replace the
+  // element with an expression that computes the intended object:
+  //
+  // ```dart
+  // List<int> x = [1, 2, 3];
+  // ```
+  //
+  // If the object shouldn't be in the list, then remove the element:
+  //
+  // ```dart
+  // List<int> x = [1, 3];
+  // ```
+  //
+  // If the object being computed is correct, then widen the element type of the
+  // list to allow all of the different types of objects it needs to contain:
+  //
+  // ```dart
+  // List<num> x = [1, 2.5, 3];
+  // ```
+  static const CompileTimeErrorCode LIST_ELEMENT_TYPE_NOT_ASSIGNABLE =
+      CompileTimeErrorCode(
+    'LIST_ELEMENT_TYPE_NOT_ASSIGNABLE',
+    "The element type '{0}' can't be assigned to the list type '{1}'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the first positional parameter
+  // of a function named `main` isn't a supertype of `List<String>`.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because `List<int>` isn't a
+  // supertype of `List<String>`:
+  //
+  // ```dart
+  // void main([!List<int>!] args) {}
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the function is an entry point, then change the type of the first
+  // positional parameter to be a supertype of `List<String>`:
+  //
+  // ```dart
+  // void main(List<String> args) {}
+  // ```
+  //
+  // If the function isn't an entry point, then change the name of the function:
+  //
+  // ```dart
+  // void f(List<int> args) {}
+  // ```
+  static const CompileTimeErrorCode MAIN_FIRST_POSITIONAL_PARAMETER_TYPE =
+      CompileTimeErrorCode(
+    'MAIN_FIRST_POSITIONAL_PARAMETER_TYPE',
+    "The type of the first positional parameter of the 'main' function must be a supertype of 'List<String>'.",
+    correction: "Try changing the type of the parameter.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a function named `main` has one
+  // or more required named parameters.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the function named
+  // `main` has a required named parameter (`x`):
+  //
+  // ```dart
+  // void [!main!]({required int x}) {}
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the function is an entry point, then remove the `required` keyword:
+  //
+  // ```dart
+  // void main({int? x}) {}
+  // ```
+  //
+  // If the function isn't an entry point, then change the name of the function:
+  //
+  // ```dart
+  // void f({required int x}) {}
+  // ```
+  static const CompileTimeErrorCode MAIN_HAS_REQUIRED_NAMED_PARAMETERS =
+      CompileTimeErrorCode(
+    'MAIN_HAS_REQUIRED_NAMED_PARAMETERS',
+    "The function 'main' can't have any required named parameters.",
+    correction:
+        "Try using a different name for the function, or removing the 'required' modifier.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a function named `main` has more
+  // than two required positional parameters.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the function `main` has
+  // three required positional parameters:
+  //
+  // ```dart
+  // void [!main!](List<String> args, int x, int y) {}
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the function is an entry point and the extra parameters aren't used,
+  // then remove them:
+  //
+  // ```dart
+  // void main(List<String> args, int x) {}
+  // ```
+  //
+  // If the function is an entry point, but the extra parameters used are for
+  // when the function isn't being used as an entry point, then make the extra
+  // parameters optional:
+  //
+  // ```dart
+  // void main(List<String> args, int x, [int y = 0]) {}
+  // ```
+  //
+  // If the function isn't an entry point, then change the name of the function:
+  //
+  // ```dart
+  // void f(List<String> args, int x, int y) {}
+  // ```
+  static const CompileTimeErrorCode
+      MAIN_HAS_TOO_MANY_REQUIRED_POSITIONAL_PARAMETERS = CompileTimeErrorCode(
+    'MAIN_HAS_TOO_MANY_REQUIRED_POSITIONAL_PARAMETERS',
+    "The function 'main' can't have more than two required positional parameters.",
+    correction:
+        "Try using a different name for the function, or removing extra parameters.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a library contains a declaration
+  // of the name `main` that isn't the declaration of a top-level function.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the name `main` is
+  // being used to declare a top-level variable:
+  //
+  // ```dart
+  // var [!main!] = 3;
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Use a different name for the declaration:
+  //
+  // ```dart
+  // var mainIndex = 3;
+  // ```
+  static const CompileTimeErrorCode MAIN_IS_NOT_FUNCTION = CompileTimeErrorCode(
+    'MAIN_IS_NOT_FUNCTION',
+    "The declaration named 'main' must be a function.",
+    correction: "Try using a different name for this declaration.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a map entry (a key/value pair)
+  // is found in a set literal.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because the literal has a map
+  // entry even though it's a set literal:
+  //
+  // ```dart
+  // const collection = <String>{[!'a' : 'b'!]};
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you intended for the collection to be a map, then change the code so
+  // that it is a map. In the previous example, you could do this by adding
+  // another type argument:
+  //
+  // ```dart
+  // const collection = <String, String>{'a' : 'b'};
+  // ```
+  //
+  // In other cases, you might need to change the explicit type from `Set` to
+  // `Map`.
+  //
+  // If you intended for the collection to be a set, then remove the map entry,
+  // possibly by replacing the colon with a comma if both values should be
+  // included in the set:
+  //
+  // ```dart
+  // const collection = <String>{'a', 'b'};
+  // ```
+  static const CompileTimeErrorCode MAP_ENTRY_NOT_IN_MAP = CompileTimeErrorCode(
+    'MAP_ENTRY_NOT_IN_MAP',
+    "Map entries can only be used in a map literal.",
+    correction:
+        "Try converting the collection to a map or removing the map entry.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the type of the expression being used as a key
+   * 1: the type of keys declared for the map
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a key of a key-value pair in a
+  // map literal has a type that isn't assignable to the key type of the map.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `2` is an `int`, but
+  // the keys of the map are required to be `String`s:
+  //
+  // ```dart
+  // var m = <String, String>{[!2!] : 'a'};
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the type of the map is correct, then change the key to have the correct
+  // type:
+  //
+  // ```dart
+  // var m = <String, String>{'2' : 'a'};
+  // ```
+  //
+  // If the type of the key is correct, then change the key type of the map:
+  //
+  // ```dart
+  // var m = <int, String>{2 : 'a'};
+  // ```
+  static const CompileTimeErrorCode MAP_KEY_TYPE_NOT_ASSIGNABLE =
+      CompileTimeErrorCode(
+    'MAP_KEY_TYPE_NOT_ASSIGNABLE',
+    "The element type '{0}' can't be assigned to the map key type '{1}'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the type of the expression being used as a value
+   * 1: the type of values declared for the map
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a value of a key-value pair in a
+  // map literal has a type that isn't assignable to the the value type of the
+  // map.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `2` is an `int`, but/
+  // the values of the map are required to be `String`s:
+  //
+  // ```dart
+  // var m = <String, String>{'a' : [!2!]};
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the type of the map is correct, then change the value to have the
+  // correct type:
+  //
+  // ```dart
+  // var m = <String, String>{'a' : '2'};
+  // ```
+  //
+  // If the type of the value is correct, then change the value type of the map:
+  //
+  // ```dart
+  // var m = <String, int>{'a' : 2};
+  // ```
+  static const CompileTimeErrorCode MAP_VALUE_TYPE_NOT_ASSIGNABLE =
+      CompileTimeErrorCode(
+    'MAP_VALUE_TYPE_NOT_ASSIGNABLE',
+    "The element type '{0}' can't be assigned to the map value type '{1}'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * 12.1 Constants: A constant expression is ... a constant list literal.
+   */
+  static const CompileTimeErrorCode MISSING_CONST_IN_LIST_LITERAL =
+      CompileTimeErrorCode(
+    'MISSING_CONST_IN_LIST_LITERAL',
+    "List literals must be prefixed with 'const' when used as a constant expression.",
+    correction: "Try adding the keyword 'const' before the literal.",
+  );
+
+  /**
+   * 12.1 Constants: A constant expression is ... a constant map literal.
+   */
+  static const CompileTimeErrorCode MISSING_CONST_IN_MAP_LITERAL =
+      CompileTimeErrorCode(
+    'MISSING_CONST_IN_MAP_LITERAL',
+    "Map literals must be prefixed with 'const' when used as a constant expression.",
+    correction: "Try adding the keyword 'const' before the literal.",
+  );
+
+  /**
+   * 12.1 Constants: A constant expression is ... a constant set literal.
+   */
+  static const CompileTimeErrorCode MISSING_CONST_IN_SET_LITERAL =
+      CompileTimeErrorCode(
+    'MISSING_CONST_IN_SET_LITERAL',
+    "Set literals must be prefixed with 'const' when used as a constant expression.",
+    correction: "Try adding the keyword 'const' before the literal.",
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when either the Dart or Flutter SDK
+  // isn’t installed correctly, and, as a result, one of the `dart:` libraries
+  // can't be found.
+  //
+  // #### Common fixes
+  //
+  // Reinstall the Dart or Flutter SDK.
+  static const CompileTimeErrorCode MISSING_DART_LIBRARY = CompileTimeErrorCode(
+    'MISSING_DART_LIBRARY',
+    "Required library '{0}' is missing.",
+    correction: "Re-install the Dart or Flutter SDK.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an optional parameter, whether
+  // positional or named, has a [potentially non-nullable][] type and doesn't
+  // specify a default value. Optional parameters that have no explicit default
+  // value have an implicit default value of `null`. If the type of the
+  // parameter doesn't allow the parameter to have a value of `null`, then the
+  // implicit default value isn't valid.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because `x` can't be `null`,
+  // and no non-`null` default value is specified:
+  //
+  // ```dart
+  // void f([int [!x!]]) {}
+  // ```
+  //
+  // As does this:
+  //
+  // ```dart
+  // void g({int [!x!]}) {}
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you want to use `null` to indicate that no value was provided, then you
+  // need to make the type nullable:
+  //
+  // ```dart
+  // void f([int? x]) {}
+  // void g({int? x}) {}
+  // ```
+  //
+  // If the parameter can't be null, then either provide a default value:
+  //
+  // ```dart
+  // void f([int x = 1]) {}
+  // void g({int x = 2}) {}
+  // ```
+  //
+  // or make the parameter a required parameter:
+  //
+  // ```dart
+  // void f(int x) {}
+  // void g({required int x}) {}
+  // ```
+  static const CompileTimeErrorCode MISSING_DEFAULT_VALUE_FOR_PARAMETER =
+      CompileTimeErrorCode(
+    'MISSING_DEFAULT_VALUE_FOR_PARAMETER',
+    "The parameter '{0}' can't have a value of 'null' because of its type, but the implicit default value is 'null'.",
+    correction:
+        "Try adding either an explicit non-'null' default value or the 'required' modifier.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the parameter
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an invocation of a function is
+  // missing a required named parameter.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the invocation of `f`
+  // doesn't include a value for the required named parameter `end`:
+  //
+  // ```dart
+  // void f(int start, {required int end}) {}
+  // void g() {
+  //   [!f!](3);
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Add a named argument corresponding to the missing required parameter:
+  //
+  // ```dart
+  // void f(int start, {required int end}) {}
+  // void g() {
+  //   f(3, end: 5);
+  // }
+  // ```
+  static const CompileTimeErrorCode MISSING_REQUIRED_ARGUMENT =
+      CompileTimeErrorCode(
+    'MISSING_REQUIRED_ARGUMENT',
+    "The named parameter '{0}' is required, but there's no corresponding argument.",
+    correction: "Try adding the required argument.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Technically this is [IMPLEMENTS_SUPER_CLASS].
+   * See https://github.com/dart-lang/sdk/issues/25765#issuecomment-307422593
+   *
+   * Parameters:
+   * 0: the name of the class that appears in both "extends" and "with" clauses
+   */
+  static const CompileTimeErrorCode MIXINS_SUPER_CLASS = CompileTimeErrorCode(
+    'MIXINS_SUPER_CLASS',
+    "'{0}' can't be used in both 'extends' and 'with' clauses.",
+    correction: "Try removing one of the occurrences.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the super-invoked member
+   * 1: the display name of the type of the super-invoked member in the mixin
+   * 2: the display name of the type of the concrete member in the class
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a mixin that invokes a method
+  // using `super` is used in a class where the concrete implementation of that
+  // method has a different signature than the signature defined for that method
+  // by the mixin's `on` type. The reason this is an error is because the
+  // invocation in the mixin might invoke the method in a way that's
+  // incompatible with the method that will actually be executed.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the class `C` uses the
+  // mixin `M`, the mixin `M` invokes `foo` using `super`, and the abstract
+  // version of `foo` declared in `I` (the mixin's `on` type) doesn't have the
+  // same signature as the concrete version of `foo` declared in `A`:
+  //
+  // ```dart
+  // class I {
+  //   void foo([int? p]) {}
+  // }
+  //
+  // class A {
+  //   void foo(int p) {}
+  // }
+  //
+  // abstract class B extends A implements I {
+  //   @override
+  //   void foo([int? p]);
+  // }
+  //
+  // mixin M on I {
+  //   void bar() {
+  //     super.foo(42);
+  //   }
+  // }
+  //
+  // abstract class C extends B with [!M!] {}
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the class doesn't need to use the mixin, then remove it from the `with`
+  // clause:
+  //
+  // ```dart
+  // class I {
+  //   void foo([int? p]) {}
+  // }
+  //
+  // class A {
+  //   void foo(int? p) {}
+  // }
+  //
+  // abstract class B extends A implements I {
+  //   @override
+  //   void foo([int? p]);
+  // }
+  //
+  // mixin M on I {
+  //   void bar() {
+  //     super.foo(42);
+  //   }
+  // }
+  //
+  // abstract class C extends B {}
+  // ```
+  //
+  // If the class needs to use the mixin, then ensure that there's a concrete
+  // implementation of the method that conforms to the signature expected by the
+  // mixin:
+  //
+  // ```dart
+  // class I {
+  //   void foo([int? p]) {}
+  // }
+  //
+  // class A {
+  //   void foo(int? p) {}
+  // }
+  //
+  // abstract class B extends A implements I {
+  //   @override
+  //   void foo([int? p]) {
+  //     super.foo(p);
+  //   }
+  // }
+  //
+  // mixin M on I {
+  //   void bar() {
+  //     super.foo(42);
+  //   }
+  // }
+  //
+  // abstract class C extends B with M {}
+  // ```
+  static const CompileTimeErrorCode
+      MIXIN_APPLICATION_CONCRETE_SUPER_INVOKED_MEMBER_TYPE =
+      CompileTimeErrorCode(
+    'MIXIN_APPLICATION_CONCRETE_SUPER_INVOKED_MEMBER_TYPE',
+    "The super-invoked member '{0}' has the type '{1}', and the concrete member in the class has the type '{2}'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the display name of the mixin
+   * 1: the display name of the superclass
+   * 2: the display name of the type that is not implemented
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a mixin that has a superclass
+  // constraint is used in a [mixin application][] with a superclass that
+  // doesn't implement the required constraint.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the mixin `M` requires
+  // that the class to which it's applied be a subclass of `A`, but `Object`
+  // isn't a subclass of `A`:
+  //
+  // ```dart
+  // class A {}
+  //
+  // mixin M on A {}
+  //
+  // class X = Object with [!M!];
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you need to use the mixin, then change the superclass to be either the
+  // same as or a subclass of the superclass constraint:
+  //
+  // ```dart
+  // class A {}
+  //
+  // mixin M on A {}
+  //
+  // class X = A with M;
+  // ```
+  static const CompileTimeErrorCode
+      MIXIN_APPLICATION_NOT_IMPLEMENTED_INTERFACE = CompileTimeErrorCode(
+    'MIXIN_APPLICATION_NOT_IMPLEMENTED_INTERFACE',
+    "'{0}' can't be mixed onto '{1}' because '{1}' doesn't implement '{2}'.",
+    correction: "Try extending the class '{0}'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the display name of the member without a concrete implementation
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a [mixin application][] contains
+  // an invocation of a member from its superclass, and there's no concrete
+  // member of that name in the mixin application's superclass.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the mixin `M` contains
+  // the invocation `super.m()`, and the class `A`, which is the superclass of
+  // the [mixin application][] `A+M`, doesn't define a concrete implementation
+  // of `m`:
+  //
+  // ```dart
+  // abstract class A {
+  //   void m();
+  // }
+  //
+  // mixin M on A {
+  //   void bar() {
+  //     super.m();
+  //   }
+  // }
+  //
+  // abstract class B extends A with [!M!] {}
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you intended to apply the mixin `M` to a different class, one that has a
+  // concrete implementation of `m`, then change the superclass of `B` to that
+  // class:
+  //
+  // ```dart
+  // abstract class A {
+  //   void m();
+  // }
+  //
+  // mixin M on A {
+  //   void bar() {
+  //     super.m();
+  //   }
+  // }
+  //
+  // class C implements A {
+  //   void m() {}
+  // }
+  //
+  // abstract class B extends C with M {}
+  // ```
+  //
+  // If you need to make `B` a subclass of `A`, then add a concrete
+  // implementation of `m` in `A`:
+  //
+  // ```dart
+  // abstract class A {
+  //   void m() {}
+  // }
+  //
+  // mixin M on A {
+  //   void bar() {
+  //     super.m();
+  //   }
+  // }
+  //
+  // abstract class B extends A with M {}
+  // ```
+  static const CompileTimeErrorCode
+      MIXIN_APPLICATION_NO_CONCRETE_SUPER_INVOKED_MEMBER = CompileTimeErrorCode(
+    'MIXIN_APPLICATION_NO_CONCRETE_SUPER_INVOKED_MEMBER',
+    "The class doesn't have a concrete implementation of the super-invoked member '{0}'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the mixin that is invalid
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a class is used as a mixin and
+  // the mixed-in class defines a constructor.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the class `A`, which
+  // defines a constructor, is being used as a mixin:
+  //
+  // ```dart
+  // class A {
+  //   A();
+  // }
+  //
+  // class B with [!A!] {}
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If it's possible to convert the class to a mixin, then do so:
+  //
+  // ```dart
+  // mixin A {
+  // }
+  //
+  // class B with A {}
+  // ```
+  //
+  // If the class can't be a mixin and it's possible to remove the constructor,
+  // then do so:
+  //
+  // ```dart
+  // class A {
+  // }
+  //
+  // class B with A {}
+  // ```
+  //
+  // If the class can't be a mixin and you can't remove the constructor, then
+  // try extending or implementing the class rather than mixing it in:
+  //
+  // ```dart
+  // class A {
+  //   A();
+  // }
+  //
+  // class B extends A {}
+  // ```
+  static const CompileTimeErrorCode MIXIN_CLASS_DECLARES_CONSTRUCTOR =
+      CompileTimeErrorCode(
+    'MIXIN_CLASS_DECLARES_CONSTRUCTOR',
+    "The class '{0}' can't be used as a mixin because it declares a constructor.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * The <i>mixinMember</i> production allows the same instance or static
+   * members that a class would allow, but no constructors (for now).
+   */
+  static const CompileTimeErrorCode MIXIN_DECLARES_CONSTRUCTOR =
+      CompileTimeErrorCode(
+    'MIXIN_DECLARES_CONSTRUCTOR',
+    "Mixins can't declare constructors.",
+  );
+
+  /**
+   * No parameters.
+   */
+  static const CompileTimeErrorCode MIXIN_DEFERRED_CLASS = CompileTimeErrorCode(
+    'SUBTYPE_OF_DEFERRED_CLASS',
+    "Classes can't mixin deferred classes.",
+    correction: "Try changing the import to not be deferred.",
+    hasPublishedDocs: true,
+    uniqueName: 'MIXIN_DEFERRED_CLASS',
+  );
+
+  static const CompileTimeErrorCode
+      MIXIN_INFERENCE_INCONSISTENT_MATCHING_CLASSES = CompileTimeErrorCode(
+    'MIXIN_INFERENCE_INCONSISTENT_MATCHING_CLASSES',
+    "Type parameters couldn't be inferred for the mixin '{0}' because the base class implements the mixin's supertype constraint '{1}' in multiple conflicting ways",
+  );
+
+  static const CompileTimeErrorCode MIXIN_INFERENCE_NO_MATCHING_CLASS =
+      CompileTimeErrorCode(
+    'MIXIN_INFERENCE_NO_MATCHING_CLASS',
+    "Type parameters couldn't be inferred for the mixin '{0}' because the base class doesn't implement the mixin's supertype constraint '{1}'",
+  );
+
+  static const CompileTimeErrorCode MIXIN_INFERENCE_NO_POSSIBLE_SUBSTITUTION =
+      CompileTimeErrorCode(
+    'MIXIN_INFERENCE_NO_POSSIBLE_SUBSTITUTION',
+    "Type parameters couldn't be inferred for the mixin '{0}' because no type parameter substitution could be found matching the mixin's supertype constraints",
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the mixin that is invalid
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a class that extends a class
+  // other than `Object` is used as a mixin.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the class `B`, which
+  // extends `A`, is being used as a mixin by `C`:
+  //
+  // ```dart
+  // class A {}
+  //
+  // class B extends A {}
+  //
+  // class C with [!B!] {}
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the class being used as a mixin can be changed to extend `Object`, then
+  // change it:
+  //
+  // ```dart
+  // class A {}
+  //
+  // class B {}
+  //
+  // class C with B {}
+  // ```
+  //
+  // If the class being used as a mixin can't be changed and the class that's
+  // using it extends `Object`, then extend the class being used as a mixin:
+  //
+  // ```dart
+  // class A {}
+  //
+  // class B extends A {}
+  //
+  // class C extends B {}
+  // ```
+  //
+  // If the class doesn't extend `Object` or if you want to be able to mix in
+  // the behavior from `B` in other places, then create a real mixin:
+  //
+  // ```dart
+  // class A {}
+  //
+  // mixin M on A {}
+  //
+  // class B extends A with M {}
+  //
+  // class C extends A with M {}
+  // ```
+  static const CompileTimeErrorCode MIXIN_INHERITS_FROM_NOT_OBJECT =
+      CompileTimeErrorCode(
+    'MIXIN_INHERITS_FROM_NOT_OBJECT',
+    "The class '{0}' can't be used as a mixin because it extends a class other than 'Object'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a mixin is instantiated.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the mixin `M` is being
+  // instantiated:
+  //
+  // ```dart
+  // mixin M {}
+  //
+  // var m = [!M!]();
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you intend to use an instance of a class, then use the name of that
+  // class in place of the name of the mixin.
+  static const CompileTimeErrorCode MIXIN_INSTANTIATE = CompileTimeErrorCode(
+    'MIXIN_INSTANTIATE',
+    "Mixins can't be instantiated.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the disallowed type
+   */
+  static const CompileTimeErrorCode MIXIN_OF_DISALLOWED_CLASS =
+      CompileTimeErrorCode(
+    'SUBTYPE_OF_DISALLOWED_TYPE',
+    "Classes can't mixin '{0}'.",
+    correction:
+        "Try specifying a different class or mixin, or remove the class or mixin from the list.",
+    hasPublishedDocs: true,
+    uniqueName: 'MIXIN_OF_DISALLOWED_CLASS',
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a name in a `with` clause is
+  // defined to be something other than a mixin or a class.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `F` is defined to be a
+  // function type:
+  //
+  // ```dart
+  // typedef F = int Function(String);
+  //
+  // class C with [!F!] {}
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Remove the invalid name from the list, possibly replacing it with the name
+  // of the intended mixin or class:
+  //
+  // ```dart
+  // typedef F = int Function(String);
+  //
+  // class C {}
+  // ```
+  static const CompileTimeErrorCode MIXIN_OF_NON_CLASS = CompileTimeErrorCode(
+    'MIXIN_OF_NON_CLASS',
+    "Classes can only mix in mixins and classes.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  static const CompileTimeErrorCode
+      MIXIN_OF_TYPE_ALIAS_EXPANDS_TO_TYPE_PARAMETER = CompileTimeErrorCode(
+    'SUPERTYPE_EXPANDS_TO_TYPE_PARAMETER',
+    "A type alias that expands to a type parameter can't be mixed in.",
+    hasPublishedDocs: true,
+    uniqueName: 'MIXIN_OF_TYPE_ALIAS_EXPANDS_TO_TYPE_PARAMETER',
+  );
+
+  /**
+   * No parameters.
+   */
+  static const CompileTimeErrorCode
+      MIXIN_ON_TYPE_ALIAS_EXPANDS_TO_TYPE_PARAMETER = CompileTimeErrorCode(
+    'SUPERTYPE_EXPANDS_TO_TYPE_PARAMETER',
+    "A type alias that expands to a type parameter can't be used as a superclass constraint.",
+    hasPublishedDocs: true,
+    uniqueName: 'MIXIN_ON_TYPE_ALIAS_EXPANDS_TO_TYPE_PARAMETER',
+  );
+
+  /**
+   * No parameters.
+   */
+  static const CompileTimeErrorCode
+      MIXIN_SUPER_CLASS_CONSTRAINT_DEFERRED_CLASS = CompileTimeErrorCode(
+    'MIXIN_SUPER_CLASS_CONSTRAINT_DEFERRED_CLASS',
+    "Deferred classes can't be used as super-class constraints.",
+    correction: "Try changing the import to not be deferred.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the disallowed type
+   */
+  static const CompileTimeErrorCode
+      MIXIN_SUPER_CLASS_CONSTRAINT_DISALLOWED_CLASS = CompileTimeErrorCode(
+    'SUBTYPE_OF_DISALLOWED_TYPE',
+    "''{0}' can't be used as a superclass constraint.",
+    correction:
+        "Try specifying a different super-class constraint, or remove the 'on' clause.",
+    hasPublishedDocs: true,
+    uniqueName: 'MIXIN_SUPER_CLASS_CONSTRAINT_DISALLOWED_CLASS',
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a type following the `on`
+  // keyword in a mixin declaration is neither a class nor a mixin.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `F` is neither a class
+  // nor a mixin:
+  //
+  // ```dart
+  // typedef F = void Function();
+  //
+  // mixin M on [!F!] {}
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the type was intended to be a class but was mistyped, then replace the
+  // name.
+  //
+  // Otherwise, remove the type from the `on` clause.
+  static const CompileTimeErrorCode MIXIN_SUPER_CLASS_CONSTRAINT_NON_INTERFACE =
+      CompileTimeErrorCode(
+    'MIXIN_SUPER_CLASS_CONSTRAINT_NON_INTERFACE',
+    "Only classes and mixins can be used as superclass constraints.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * 9.1 Mixin Application: It is a compile-time error if <i>S</i> does not
+   * denote a class available in the immediately enclosing scope.
+   */
+  static const CompileTimeErrorCode MIXIN_WITH_NON_CLASS_SUPERCLASS =
+      CompileTimeErrorCode(
+    'MIXIN_WITH_NON_CLASS_SUPERCLASS',
+    "Mixin can only be applied to class.",
+  );
+
+  /**
+   * 7.6.1 Generative Constructors: A generative constructor may be redirecting,
+   * in which case its only action is to invoke another generative constructor.
+   */
+  static const CompileTimeErrorCode
+      MULTIPLE_REDIRECTING_CONSTRUCTOR_INVOCATIONS = CompileTimeErrorCode(
+    'MULTIPLE_REDIRECTING_CONSTRUCTOR_INVOCATIONS',
+    "Constructors can have at most one 'this' redirection.",
+    correction: "Try removing all but one of the redirections.",
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the initializer list of a
+  // constructor contains more than one invocation of a constructor from the
+  // superclass. The initializer list is required to have exactly one such call,
+  // which can either be explicit or implicit.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the initializer list
+  // for `B`’s constructor invokes both the constructor `one` and the
+  // constructor `two` from the superclass `A`:
+  //
+  // ```dart
+  // class A {
+  //   int? x;
+  //   String? s;
+  //   A.one(this.x);
+  //   A.two(this.s);
+  // }
+  //
+  // class B extends A {
+  //   B() : super.one(0), [!super.two('')!];
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If one of the super constructors will initialize the instance fully, then
+  // remove the other:
+  //
+  // ```dart
+  // class A {
+  //   int? x;
+  //   String? s;
+  //   A.one(this.x);
+  //   A.two(this.s);
+  // }
+  //
+  // class B extends A {
+  //   B() : super.one(0);
+  // }
+  // ```
+  //
+  // If the initialization achieved by one of the super constructors can be
+  // performed in the body of the constructor, then remove its super invocation
+  // and perform the initialization in the body:
+  //
+  // ```dart
+  // class A {
+  //   int? x;
+  //   String? s;
+  //   A.one(this.x);
+  //   A.two(this.s);
+  // }
+  //
+  // class B extends A {
+  //   B() : super.one(0) {
+  //     s = '';
+  //   }
+  // }
+  // ```
+  //
+  // If the initialization can only be performed in a constructor in the
+  // superclass, then either add a new constructor or modify one of the existing
+  // constructors so there's a constructor that allows all the required
+  // initialization to occur in a single call:
+  //
+  // ```dart
+  // class A {
+  //   int? x;
+  //   String? s;
+  //   A.one(this.x);
+  //   A.two(this.s);
+  //   A.three(this.x, this.s);
+  // }
+  //
+  // class B extends A {
+  //   B() : super.three(0, '');
+  // }
+  // ```
+  static const CompileTimeErrorCode MULTIPLE_SUPER_INITIALIZERS =
+      CompileTimeErrorCode(
+    'MULTIPLE_SUPER_INITIALIZERS',
+    "A constructor can have at most one 'super' initializer.",
+    correction: "Try removing all but one of the 'super' initializers.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the non-type element
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an instance creation using
+  // either `new` or `const` specifies a name that isn't defined as a class.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because `f` is a function
+  // rather than a class:
+  //
+  // ```dart
+  // int f() => 0;
+  //
+  // void g() {
+  //   new [!f!]();
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If a class should be created, then replace the invalid name with the name
+  // of a valid class:
+  //
+  // ```dart
+  // int f() => 0;
+  //
+  // void g() {
+  //   new Object();
+  // }
+  // ```
+  //
+  // If the name is the name of a function and you want that function to be
+  // invoked, then remove the `new` or `const` keyword:
+  //
+  // ```dart
+  // int f() => 0;
+  //
+  // void g() {
+  //   f();
+  // }
+  // ```
+  static const CompileTimeErrorCode NEW_WITH_NON_TYPE = CompileTimeErrorCode(
+    'CREATION_WITH_NON_TYPE',
+    "The name '{0}' isn't a class.",
+    correction: "Try correcting the name to match an existing class.",
+    hasPublishedDocs: true,
+    isUnresolvedIdentifier: true,
+    uniqueName: 'NEW_WITH_NON_TYPE',
+  );
+
+  /**
+   * 12.11.1 New: If <i>T</i> is a class or parameterized type accessible in the
+   * current scope then:
+   * 1. If <i>e</i> is of the form <i>new T.id(a<sub>1</sub>, &hellip;,
+   *    a<sub>n</sub>, x<sub>n+1</sub>: a<sub>n+1</sub>, &hellip;,
+   *    x<sub>n+k</sub>: a<sub>n+k</sub>)</i> it is a static warning if
+   *    <i>T.id</i> is not the name of a constructor declared by the type
+   *    <i>T</i>.
+   * If <i>e</i> of the form <i>new T(a<sub>1</sub>, &hellip;, a<sub>n</sub>,
+   * x<sub>n+1</sub>: a<sub>n+1</sub>, &hellip;, x<sub>n+k</sub>:
+   * a<sub>n+kM/sub>)</i> it is a static warning if the type <i>T</i> does not
+   * declare a constructor with the same name as the declaration of <i>T</i>.
+   */
+  static const CompileTimeErrorCode NEW_WITH_UNDEFINED_CONSTRUCTOR =
+      CompileTimeErrorCode(
+    'NEW_WITH_UNDEFINED_CONSTRUCTOR',
+    "The class '{0}' doesn't have a constructor named '{1}'.",
+    correction:
+        "Try invoking a different constructor, or define a constructor named '{1}'.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the class being instantiated
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an unnamed constructor is
+  // invoked on a class that defines named constructors but the class doesn’t
+  // have an unnamed constructor.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `A` doesn't define an
+  // unnamed constructor:
+  //
+  // ```dart
+  // class A {
+  //   A.a();
+  // }
+  //
+  // A f() => [!A!]();
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If one of the named constructors does what you need, then use it:
+  //
+  // ```dart
+  // class A {
+  //   A.a();
+  // }
+  //
+  // A f() => A.a();
+  // ```
+  //
+  // If none of the named constructors does what you need, and you're able to
+  // add an unnamed constructor, then add the constructor:
+  //
+  // ```dart
+  // class A {
+  //   A();
+  //   A.a();
+  // }
+  //
+  // A f() => A();
+  // ```
+  static const CompileTimeErrorCode NEW_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT =
+      CompileTimeErrorCode(
+    'NEW_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT',
+    "The class '{0}' doesn't have an unnamed constructor.",
+    correction: "Try using one of the named constructors defined in '{0}'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the first member
+   * 1: the name of the second member
+   * 2: the name of the third member
+   * 3: the name of the fourth member
+   * 4: the number of additional missing members that aren't listed
+   */
+  static const CompileTimeErrorCode
+      NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FIVE_PLUS =
+      CompileTimeErrorCode(
+    'NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER',
+    "Missing concrete implementations of '{0}', '{1}', '{2}', '{3}', and {4} more.",
+    correction:
+        "Try implementing the missing methods, or make the class abstract.",
+    hasPublishedDocs: true,
+    uniqueName: 'NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FIVE_PLUS',
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the first member
+   * 1: the name of the second member
+   * 2: the name of the third member
+   * 3: the name of the fourth member
+   */
+  static const CompileTimeErrorCode
+      NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FOUR = CompileTimeErrorCode(
+    'NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER',
+    "Missing concrete implementations of '{0}', '{1}', '{2}', and '{3}'.",
+    correction:
+        "Try implementing the missing methods, or make the class abstract.",
+    hasPublishedDocs: true,
+    uniqueName: 'NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FOUR',
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the member
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a concrete class inherits one or
+  // more abstract members, and doesn't provide or inherit an implementation for
+  // at least one of those abstract members.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because the class `B` doesn't
+  // have a concrete implementation of `m`:
+  //
+  // ```dart
+  // abstract class A {
+  //   void m();
+  // }
+  //
+  // class [!B!] extends A {}
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the subclass can provide a concrete implementation for some or all of
+  // the abstract inherited members, then add the concrete implementations:
+  //
+  // ```dart
+  // abstract class A {
+  //   void m();
+  // }
+  //
+  // class B extends A {
+  //   void m() {}
+  // }
+  // ```
+  //
+  // If there is a mixin that provides an implementation of the inherited
+  // methods, then apply the mixin to the subclass:
+  //
+  // ```dart
+  // abstract class A {
+  //   void m();
+  // }
+  //
+  // class B extends A with M {}
+  //
+  // mixin M {
+  //   void m() {}
+  // }
+  // ```
+  //
+  // If the subclass can't provide a concrete implementation for all of the
+  // abstract inherited members, then mark the subclass as being abstract:
+  //
+  // ```dart
+  // abstract class A {
+  //   void m();
+  // }
+  //
+  // abstract class B extends A {}
+  // ```
+  static const CompileTimeErrorCode
+      NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE = CompileTimeErrorCode(
+    'NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER',
+    "Missing concrete implementation of '{0}'.",
+    correction:
+        "Try implementing the missing method, or make the class abstract.",
+    hasPublishedDocs: true,
+    uniqueName: 'NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE',
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the first member
+   * 1: the name of the second member
+   * 2: the name of the third member
+   */
+  static const CompileTimeErrorCode
+      NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_THREE = CompileTimeErrorCode(
+    'NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER',
+    "Missing concrete implementations of '{0}', '{1}', and '{2}'.",
+    correction:
+        "Try implementing the missing methods, or make the class abstract.",
+    hasPublishedDocs: true,
+    uniqueName: 'NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_THREE',
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the first member
+   * 1: the name of the second member
+   */
+  static const CompileTimeErrorCode
+      NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_TWO = CompileTimeErrorCode(
+    'NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER',
+    "Missing concrete implementations of '{0}' and '{1}'.",
+    correction:
+        "Try implementing the missing methods, or make the class abstract.",
+    hasPublishedDocs: true,
+    uniqueName: 'NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_TWO',
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a condition, such as an `if` or
+  // `while` loop, doesn't have the static type `bool`.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `x` has the static type
+  // `int`:
+  //
+  // ```dart
+  // void f(int x) {
+  //   if ([!x!]) {
+  //     // ...
+  //   }
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Change the condition so that it produces a Boolean value:
+  //
+  // ```dart
+  // void f(int x) {
+  //   if (x == 0) {
+  //     // ...
+  //   }
+  // }
+  // ```
+  static const CompileTimeErrorCode NON_BOOL_CONDITION = CompileTimeErrorCode(
+    'NON_BOOL_CONDITION',
+    "Conditions must have a static type of 'bool'.",
+    correction: "Try changing the condition.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the first expression in an
+  // assert has a type other than `bool`.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because the type of `p` is
+  // `int`, but a `bool` is required:
+  //
+  // ```dart
+  // void f(int p) {
+  //   assert([!p!]);
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Change the expression so that it has the type `bool`:
+  //
+  // ```dart
+  // void f(int p) {
+  //   assert(p > 0);
+  // }
+  // ```
+  static const CompileTimeErrorCode NON_BOOL_EXPRESSION = CompileTimeErrorCode(
+    'NON_BOOL_EXPRESSION',
+    "The expression in an assert must be of type 'bool'.",
+    correction: "Try changing the expression.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the operand of the unary
+  // negation operator (`!`) doesn't have the type `bool`.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `x` is an `int` when it
+  // must be a `bool`:
+  //
+  // ```dart
+  // int x = 0;
+  // bool y = ![!x!];
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Replace the operand with an expression that has the type `bool`:
+  //
+  // ```dart
+  // int x = 0;
+  // bool y = !(x > 0);
+  // ```
+  static const CompileTimeErrorCode NON_BOOL_NEGATION_EXPRESSION =
+      CompileTimeErrorCode(
+    'NON_BOOL_NEGATION_EXPRESSION',
+    "A negation operand must have a static type of 'bool'.",
+    correction: "Try changing the operand to the '!' operator.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the lexeme of the logical operator
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when one of the operands of either
+  // the `&&` or `||` operator doesn't have the type `bool`.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `a` isn't a Boolean
+  // value:
+  //
+  // ```dart
+  // int a = 3;
+  // bool b = [!a!] || a > 1;
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Change the operand to a Boolean value:
+  //
+  // ```dart
+  // int a = 3;
+  // bool b = a == 0 || a > 1;
+  // ```
+  static const CompileTimeErrorCode NON_BOOL_OPERAND = CompileTimeErrorCode(
+    'NON_BOOL_OPERAND',
+    "The operands of the operator '{0}' must be assignable to 'bool'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an annotation is the invocation
+  // of an existing constructor even though the invoked constructor isn't a
+  // const constructor.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the constructor for `C`
+  // isn't a const constructor:
+  //
+  // ```dart
+  // [!@C()!]
+  // void f() {
+  // }
+  //
+  // class C {
+  //   C();
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If it's valid for the class to have a const constructor, then create a
+  // const constructor that can be used for the annotation:
+  //
+  // ```dart
+  // @C()
+  // void f() {
+  // }
+  //
+  // class C {
+  //   const C();
+  // }
+  // ```
+  //
+  // If it isn't valid for the class to have a const constructor, then either
+  // remove the annotation or use a different class for the annotation.
+  static const CompileTimeErrorCode NON_CONSTANT_ANNOTATION_CONSTRUCTOR =
+      CompileTimeErrorCode(
+    'NON_CONSTANT_ANNOTATION_CONSTRUCTOR',
+    "Annotation creation can only call a const constructor.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the expression in a `case`
+  // clause isn't a constant expression.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `j` isn't a constant:
+  //
+  // ```dart
+  // void f(int i, int j) {
+  //   switch (i) {
+  //     case [!j!]:
+  //       // ...
+  //       break;
+  //   }
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Either make the expression a constant expression, or rewrite the `switch`
+  // statement as a sequence of `if` statements:
+  //
+  // ```dart
+  // void f(int i, int j) {
+  //   if (i == j) {
+  //     // ...
+  //   }
+  // }
+  // ```
+  static const CompileTimeErrorCode NON_CONSTANT_CASE_EXPRESSION =
+      CompileTimeErrorCode(
+    'NON_CONSTANT_CASE_EXPRESSION',
+    "Case expressions must be constant.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the expression in a case clause
+  // references a constant from a library that is imported using a deferred
+  // import. In order for switch statements to be compiled efficiently, the
+  // constants referenced in case clauses need to be available at compile time,
+  // and constants from deferred libraries aren't available at compile time.
+  //
+  // For more information, see the language tour's coverage of
+  // [deferred loading](https://dart.dev/guides/language/language-tour#lazily-loading-a-library).
+  //
+  // #### Example
+  //
+  // Given a file (`a.dart`) that defines the constant `zero`:
+  //
+  // ```dart
+  // %uri="lib/a.dart"
+  // const zero = 0;
+  // ```
+  //
+  // The following code produces this diagnostic because the library `a.dart` is
+  // imported using a `deferred` import, and the constant `a.zero`, declared in
+  // the imported library, is used in a case clause:
+  //
+  // ```dart
+  // import 'a.dart' deferred as a;
+  //
+  // void f(int x) {
+  //   switch (x) {
+  //     case [!a.zero!]:
+  //       // ...
+  //       break;
+  //   }
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you need to reference the constant from the imported library, then
+  // remove the `deferred` keyword:
+  //
+  // ```dart
+  // import 'a.dart' as a;
+  //
+  // void f(int x) {
+  //   switch (x) {
+  //     case a.zero:
+  //       // ...
+  //       break;
+  //   }
+  // }
+  // ```
+  //
+  // If you need to reference the constant from the imported library and also
+  // need the imported library to be deferred, then rewrite the switch statement
+  // as a sequence of `if` statements:
+  //
+  // ```dart
+  // import 'a.dart' deferred as a;
+  //
+  // void f(int x) {
+  //   if (x == a.zero) {
+  //     // ...
+  //   }
+  // }
+  // ```
+  //
+  // If you don't need to reference the constant, then replace the case
+  // expression:
+  //
+  // ```dart
+  // void f(int x) {
+  //   switch (x) {
+  //     case 0:
+  //       // ...
+  //       break;
+  //   }
+  // }
+  // ```
+  static const CompileTimeErrorCode
+      NON_CONSTANT_CASE_EXPRESSION_FROM_DEFERRED_LIBRARY = CompileTimeErrorCode(
+    'NON_CONSTANT_CASE_EXPRESSION_FROM_DEFERRED_LIBRARY',
+    "Constant values from a deferred library can't be used as a case expression.",
+    correction:
+        "Try re-writing the switch as a series of if statements, or changing the import to not be deferred.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an optional parameter, either
+  // named or positional, has a default value that isn't a compile-time
+  // constant.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic:
+  //
+  // ```dart
+  // %language=2.9
+  // var defaultValue = 3;
+  //
+  // void f([int value = [!defaultValue!]]) {}
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the default value can be converted to be a constant, then convert it:
+  //
+  // ```dart
+  // %language=2.9
+  // const defaultValue = 3;
+  //
+  // void f([int value = defaultValue]) {}
+  // ```
+  //
+  // If the default value needs to change over time, then apply the default
+  // value inside the function:
+  //
+  // ```dart
+  // %language=2.9
+  // var defaultValue = 3;
+  //
+  // void f([int value]) {
+  //   value ??= defaultValue;
+  // }
+  // ```
+  static const CompileTimeErrorCode NON_CONSTANT_DEFAULT_VALUE =
+      CompileTimeErrorCode(
+    'NON_CONSTANT_DEFAULT_VALUE',
+    "The default value of an optional parameter must be constant.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the default value of an optional
+  // parameter uses a constant from a library imported using a deferred import.
+  // Default values need to be available at compile time, and constants from
+  // deferred libraries aren't available at compile time.
+  //
+  // For more information, see the language tour's coverage of
+  // [deferred loading](https://dart.dev/guides/language/language-tour#lazily-loading-a-library).
+  //
+  // #### Example
+  //
+  // Given a file (`a.dart`) that defines the constant `zero`:
+  //
+  // ```dart
+  // %uri="lib/a.dart"
+  // const zero = 0;
+  // ```
+  //
+  // The following code produces this diagnostic because `zero` is declared in a
+  // library imported using a deferred import:
+  //
+  // ```dart
+  // import 'a.dart' deferred as a;
+  //
+  // void f({int x = [!a.zero!]}) {}
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you need to reference the constant from the imported library, then
+  // remove the `deferred` keyword:
+  //
+  // ```dart
+  // import 'a.dart' as a;
+  //
+  // void f({int x = a.zero}) {}
+  // ```
+  //
+  // If you don't need to reference the constant, then replace the default
+  // value:
+  //
+  // ```dart
+  // void f({int x = 0}) {}
+  // ```
+  static const CompileTimeErrorCode
+      NON_CONSTANT_DEFAULT_VALUE_FROM_DEFERRED_LIBRARY = CompileTimeErrorCode(
+    'NON_CONSTANT_DEFAULT_VALUE_FROM_DEFERRED_LIBRARY',
+    "Constant values from a deferred library can't be used as a default parameter value.",
+    correction:
+        "Try leaving the default as null and initializing the parameter inside the function body.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an element in a constant list
+  // literal isn't a constant value. The list literal can be constant either
+  // explicitly (because it's prefixed by the `const` keyword) or implicitly
+  // (because it appears in a [constant context][]).
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `x` isn't a constant,
+  // even though it appears in an implicitly constant list literal:
+  //
+  // ```dart
+  // var x = 2;
+  // var y = const <int>[0, 1, [!x!]];
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the list needs to be a constant list, then convert the element to be a
+  // constant. In the example above, you might add the `const` keyword to the
+  // declaration of `x`:
+  //
+  // ```dart
+  // const x = 2;
+  // var y = const <int>[0, 1, x];
+  // ```
+  //
+  // If the expression can't be made a constant, then the list can't be a
+  // constant either, so you must change the code so that the list isn't a
+  // constant. In the example above this means removing the `const` keyword
+  // before the list literal:
+  //
+  // ```dart
+  // var x = 2;
+  // var y = <int>[0, 1, x];
+  // ```
+  static const CompileTimeErrorCode NON_CONSTANT_LIST_ELEMENT =
+      CompileTimeErrorCode(
+    'NON_CONSTANT_LIST_ELEMENT',
+    "The values in a const list literal must be constants.",
+    correction: "Try removing the keyword 'const' from the list literal.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a collection literal that is
+  // either explicitly (because it's prefixed by the `const` keyword) or
+  // implicitly (because it appears in a [constant context][]) a constant
+  // contains a value that is declared in a library that is imported using a
+  // deferred import. Constants are evaluated at compile time, and values from
+  // deferred libraries aren't available at compile time.
+  //
+  // For more information, see the language tour's coverage of
+  // [deferred loading](https://dart.dev/guides/language/language-tour#lazily-loading-a-library).
+  //
+  // #### Example
+  //
+  // Given a file (`a.dart`) that defines the constant `zero`:
+  //
+  // ```dart
+  // %uri="lib/a.dart"
+  // const zero = 0;
+  // ```
+  //
+  // The following code produces this diagnostic because the constant list
+  // literal contains `a.zero`, which is imported using a `deferred` import:
+  //
+  // ```dart
+  // import 'a.dart' deferred as a;
+  //
+  // var l = const [[!a.zero!]];
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the collection literal isn't required to be constant, then remove the
+  // `const` keyword:
+  //
+  // ```dart
+  // import 'a.dart' deferred as a;
+  //
+  // var l = [a.zero];
+  // ```
+  //
+  // If the collection is required to be constant and the imported constant must
+  // be referenced, then remove the keyword `deferred` from the import:
+  //
+  // ```dart
+  // import 'a.dart' as a;
+  //
+  // var l = const [a.zero];
+  // ```
+  //
+  // If you don't need to reference the constant, then replace it with a
+  // suitable value:
+  //
+  // ```dart
+  // var l = const [0];
+  // ```
+  static const CompileTimeErrorCode
+      NON_CONSTANT_LIST_ELEMENT_FROM_DEFERRED_LIBRARY = CompileTimeErrorCode(
+    'COLLECTION_ELEMENT_FROM_DEFERRED_LIBRARY',
+    "Constant values from a deferred library can't be used as values in a 'const' list literal.",
+    correction:
+        "Try removing the keyword 'const' from the list literal or removing the keyword 'deferred' from the import.",
+    hasPublishedDocs: true,
+    uniqueName: 'NON_CONSTANT_LIST_ELEMENT_FROM_DEFERRED_LIBRARY',
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an `if` element or a spread
+  // element in a constant map isn't a constant element.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because it's attempting to
+  // spread a non-constant map:
+  //
+  // ```dart
+  // var notConst = <int, int>{};
+  // var map = const <int, int>{...[!notConst!]};
+  // ```
+  //
+  // Similarly, the following code produces this diagnostic because the
+  // condition in the `if` element isn't a constant expression:
+  //
+  // ```dart
+  // bool notConst = true;
+  // var map = const <int, int>{if ([!notConst!]) 1 : 2};
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the map needs to be a constant map, then make the elements constants.
+  // In the spread example, you might do that by making the collection being
+  // spread a constant:
+  //
+  // ```dart
+  // const notConst = <int, int>{};
+  // var map = const <int, int>{...notConst};
+  // ```
+  //
+  // If the map doesn't need to be a constant map, then remove the `const`
+  // keyword:
+  //
+  // ```dart
+  // bool notConst = true;
+  // var map = <int, int>{if (notConst) 1 : 2};
+  // ```
+  static const CompileTimeErrorCode NON_CONSTANT_MAP_ELEMENT =
+      CompileTimeErrorCode(
+    'NON_CONSTANT_MAP_ELEMENT',
+    "The elements in a const map literal must be constant.",
+    correction: "Try removing the keyword 'const' from the map literal.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a key in a constant map literal
+  // isn't a constant value.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic beause `a` isn't a constant:
+  //
+  // ```dart
+  // var a = 'a';
+  // var m = const {[!a!]: 0};
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the map needs to be a constant map, then make the key a constant:
+  //
+  // ```dart
+  // const a = 'a';
+  // var m = const {a: 0};
+  // ```
+  //
+  // If the map doesn't need to be a constant map, then remove the `const`
+  // keyword:
+  //
+  // ```dart
+  // var a = 'a';
+  // var m = {a: 0};
+  // ```
+  static const CompileTimeErrorCode NON_CONSTANT_MAP_KEY = CompileTimeErrorCode(
+    'NON_CONSTANT_MAP_KEY',
+    "The keys in a const map literal must be constant.",
+    correction: "Try removing the keyword 'const' from the map literal.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  static const CompileTimeErrorCode NON_CONSTANT_MAP_KEY_FROM_DEFERRED_LIBRARY =
+      CompileTimeErrorCode(
+    'COLLECTION_ELEMENT_FROM_DEFERRED_LIBRARY',
+    "Constant values from a deferred library can't be used as keys in a 'const' map literal.",
+    correction:
+        "Try removing the keyword 'const' from the map literal or removing the keyword 'deferred' from the import.",
+    hasPublishedDocs: true,
+    uniqueName: 'NON_CONSTANT_MAP_KEY_FROM_DEFERRED_LIBRARY',
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a value in a constant map
+  // literal isn't a constant value.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `a` isn't a constant:
+  //
+  // ```dart
+  // var a = 'a';
+  // var m = const {0: [!a!]};
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the map needs to be a constant map, then make the key a constant:
+  //
+  // ```dart
+  // const a = 'a';
+  // var m = const {0: a};
+  // ```
+  //
+  // If the map doesn't need to be a constant map, then remove the `const`
+  // keyword:
+  //
+  // ```dart
+  // var a = 'a';
+  // var m = {0: a};
+  // ```
+  static const CompileTimeErrorCode NON_CONSTANT_MAP_VALUE =
+      CompileTimeErrorCode(
+    'NON_CONSTANT_MAP_VALUE',
+    "The values in a const map literal must be constant.",
+    correction: "Try removing the keyword 'const' from the map literal.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  static const CompileTimeErrorCode
+      NON_CONSTANT_MAP_VALUE_FROM_DEFERRED_LIBRARY = CompileTimeErrorCode(
+    'COLLECTION_ELEMENT_FROM_DEFERRED_LIBRARY',
+    "Constant values from a deferred library can't be used as values in a 'const' map literal.",
+    correction:
+        "Try removing the keyword 'const' from the map literal or removing the keyword 'deferred' from the import.",
+    hasPublishedDocs: true,
+    uniqueName: 'NON_CONSTANT_MAP_VALUE_FROM_DEFERRED_LIBRARY',
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a constant set literal contains
+  // an element that isn't a compile-time constant.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `i` isn't a constant:
+  //
+  // ```dart
+  // var i = 0;
+  //
+  // var s = const {[!i!]};
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the element can be changed to be a constant, then change it:
+  //
+  // ```dart
+  // const i = 0;
+  //
+  // var s = const {i};
+  // ```
+  //
+  // If the element can't be a constant, then remove the keyword `const`:
+  //
+  // ```dart
+  // var i = 0;
+  //
+  // var s = {i};
+  // ```
+  static const CompileTimeErrorCode NON_CONSTANT_SET_ELEMENT =
+      CompileTimeErrorCode(
+    'NON_CONSTANT_SET_ELEMENT',
+    "The values in a const set literal must be constants.",
+    correction: "Try removing the keyword 'const' from the set literal.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * 13.2 Expression Statements: It is a compile-time error if a non-constant
+   * map literal that has no explicit type arguments appears in a place where a
+   * statement is expected.
+   */
+  static const CompileTimeErrorCode NON_CONST_MAP_AS_EXPRESSION_STATEMENT =
+      CompileTimeErrorCode(
+    'NON_CONST_MAP_AS_EXPRESSION_STATEMENT',
+    "A non-constant map or set literal without type arguments can't be used as an expression statement.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the non-generative constructor
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the initializer list of a
+  // constructor invokes a constructor from the superclass, and the invoked
+  // constructor is a factory constructor. Only a generative constructor can be
+  // invoked in the initializer list.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the invocation of the
+  // constructor `super.one()` is invoking a factory constructor:
+  //
+  // ```dart
+  // class A {
+  //   factory A.one() = B;
+  //   A.two();
+  // }
+  //
+  // class B extends A {
+  //   B() : [!super.one()!];
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Change the super invocation to invoke a generative constructor:
+  //
+  // ```dart
+  // class A {
+  //   factory A.one() = B;
+  //   A.two();
+  // }
+  //
+  // class B extends A {
+  //   B() : super.two();
+  // }
+  // ```
+  //
+  // If the generative constructor is the unnamed constructor, and if there are
+  // no arguments being passed to it, then you can remove the super invocation.
+  static const CompileTimeErrorCode NON_GENERATIVE_CONSTRUCTOR =
+      CompileTimeErrorCode(
+    'NON_GENERATIVE_CONSTRUCTOR',
+    "The generative constructor '{0}' is expected, but a factory was found.",
+    correction:
+        "Try calling a different constructor of the superclass, or making the called constructor not be a factory constructor.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * An error code for when a class has no explicit constructor, and therefore
+   * a constructor is implicitly defined which uses a factory as a
+   * superinitializer. See [NON_GENERATIVE_CONSTRUCTOR].
+   *
+   * Parameters:
+   * 0: the name of the superclass
+   * 1: the name of the current class
+   * 2: the implicitly called factory constructor of the superclass
+   */
+  static const CompileTimeErrorCode NON_GENERATIVE_IMPLICIT_CONSTRUCTOR =
+      CompileTimeErrorCode(
+    'NON_GENERATIVE_IMPLICIT_CONSTRUCTOR',
+    "The unnamed constructor of superclass '{0}' (called by the default constructor of '{1}') must be a generative constructor, but factory found.",
+    correction:
+        "Try adding an explicit constructor that has a different superinitializer or changing the superclass constructor '{2}' to not be a factory constructor.",
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the body of a factory
+  // constructor is marked with `async`, `async*`, or `sync*`. All constructors,
+  // including factory constructors, are required to return an instance of the
+  // class in which they're declared, not a `Future`, `Stream`, or `Iterator`.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the body of the factory
+  // constructor is marked with `async`:
+  //
+  // ```dart
+  // class C {
+  //   factory C() [!async!] {
+  //     return C._();
+  //   }
+  //   C._();
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the member must be declared as a factory constructor, then remove the
+  // keyword appearing before the body:
+  //
+  // ```dart
+  // class C {
+  //   factory C() {
+  //     return C._();
+  //   }
+  //   C._();
+  // }
+  // ```
+  //
+  // If the member must return something other than an instance of the enclosing
+  // class, then make the member a static method:
+  //
+  // ```dart
+  // class C {
+  //   static Future<C> m() async {
+  //     return C._();
+  //   }
+  //   C._();
+  // }
+  // ```
+  static const CompileTimeErrorCode NON_SYNC_FACTORY = CompileTimeErrorCode(
+    'NON_SYNC_FACTORY',
+    "Factory bodies can't use 'async', 'async*', or 'sync*'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name appearing where a type is expected
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an identifier that isn't a type
+  // is used as a type argument.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `x` is a variable, not
+  // a type:
+  //
+  // ```dart
+  // var x = 0;
+  // List<[!x!]> xList = [];
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Change the type argument to be a type:
+  //
+  // ```dart
+  // var x = 0;
+  // List<int> xList = [];
+  // ```
+  static const CompileTimeErrorCode NON_TYPE_AS_TYPE_ARGUMENT =
+      CompileTimeErrorCode(
+    'NON_TYPE_AS_TYPE_ARGUMENT',
+    "The name '{0}' isn't a type so it can't be used as a type argument.",
+    correction:
+        "Try correcting the name to an existing type, or defining a type named '{0}'.",
+    hasPublishedDocs: true,
+    isUnresolvedIdentifier: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the non-type element
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the identifier following the
+  // `on` in a `catch` clause is defined to be something other than a type.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `f` is a function, not
+  // a type:
+  //
+  // ```dart
+  // %language=2.9
+  // void f() {
+  //   try {
+  //     // ...
+  //   } on [!f!] {
+  //     // ...
+  //   }
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Change the name to the type of object that should be caught:
+  //
+  // ```dart
+  // %language=2.9
+  // void f() {
+  //   try {
+  //     // ...
+  //   } on FormatException {
+  //     // ...
+  //   }
+  // }
+  // ```
+  static const CompileTimeErrorCode NON_TYPE_IN_CATCH_CLAUSE =
+      CompileTimeErrorCode(
+    'NON_TYPE_IN_CATCH_CLAUSE',
+    "The name '{0}' isn't a type and can't be used in an on-catch clause.",
+    correction: "Try correcting the name to match an existing class.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a declaration of the operator
+  // `[]=` has a return type other than `void`.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the declaration of the
+  // operator `[]=` has a return type of `int`:
+  //
+  // ```dart
+  // class C {
+  //   [!int!] operator []=(int index, int value) => 0;
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Change the return type to `void`:
+  //
+  // ```dart
+  // class C {
+  //   void operator []=(int index, int value) => 0;
+  // }
+  // ```
+  static const CompileTimeErrorCode NON_VOID_RETURN_FOR_OPERATOR =
+      CompileTimeErrorCode(
+    'NON_VOID_RETURN_FOR_OPERATOR',
+    "The return type of the operator []= must be 'void'.",
+    correction: "Try changing the return type to 'void'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a setter is defined with a
+  // return type other than `void`.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the setter `p` has a
+  // return type of `int`:
+  //
+  // ```dart
+  // class C {
+  //   [!int!] set p(int i) => 0;
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Change the return type to `void` or omit the return type:
+  //
+  // ```dart
+  // class C {
+  //   set p(int i) => 0;
+  // }
+  // ```
+  static const CompileTimeErrorCode NON_VOID_RETURN_FOR_SETTER =
+      CompileTimeErrorCode(
+    'NON_VOID_RETURN_FOR_SETTER',
+    "The return type of the setter must be 'void' or absent.",
+    correction:
+        "Try removing the return type, or define a method rather than a setter.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the variable that is invalid
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a local variable is referenced
+  // and has all these characteristics:
+  // - Has a type that's [potentially non-nullable][].
+  // - Doesn't have an initializer.
+  // - Isn't marked as `late`.
+  // - The analyzer can't prove that the local variable will be assigned before
+  //   the reference based on the specification of [definite assignment][].
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because `x` can't have a value
+  // of `null`, but is referenced before a value was assigned to it:
+  //
+  // ```dart
+  // String f() {
+  //   int x;
+  //   return [!x!].toString();
+  // }
+  // ```
+  //
+  // The following code produces this diagnostic because the assignment to `x`
+  // might not be executed, so it might have a value of `null`:
+  //
+  // ```dart
+  // int g(bool b) {
+  //   int x;
+  //   if (b) {
+  //     x = 1;
+  //   }
+  //   return [!x!] * 2;
+  // }
+  // ```
+  //
+  // The following code produces this diagnostic because the analyzer can't
+  // prove, based on definite assignment analysis, that `x` won't be referenced
+  // without having a value assigned to it:
+  //
+  // ```dart
+  // int h(bool b) {
+  //   int x;
+  //   if (b) {
+  //     x = 1;
+  //   }
+  //   if (b) {
+  //     return [!x!] * 2;
+  //   }
+  //   return 0;
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If `null` is a valid value, then make the variable nullable:
+  //
+  // ```dart
+  // String f() {
+  //   int? x;
+  //   return x!.toString();
+  // }
+  // ```
+  //
+  // If `null` isn’t a valid value, and there's a reasonable default value, then
+  // add an initializer:
+  //
+  // ```dart
+  // int g(bool b) {
+  //   int x = 2;
+  //   if (b) {
+  //     x = 1;
+  //   }
+  //   return x * 2;
+  // }
+  // ```
+  //
+  // Otherwise, ensure that a value was assigned on every possible code path
+  // before the value is accessed:
+  //
+  // ```dart
+  // int g(bool b) {
+  //   int x;
+  //   if (b) {
+  //     x = 1;
+  //   } else {
+  //     x = 2;
+  //   }
+  //   return x * 2;
+  // }
+  // ```
+  //
+  // You can also mark the variable as `late`, which removes the diagnostic, but
+  // if the variable isn't assigned a value before it's accessed, then it
+  // results in an exception being thrown at runtime. This approach should only
+  // be used if you're sure that the variable will always be assigned, even
+  // though the analyzer can't prove it based on definite assignment analysis.
+  //
+  // ```dart
+  // int h(bool b) {
+  //   late int x;
+  //   if (b) {
+  //     x = 1;
+  //   }
+  //   if (b) {
+  //     return x * 2;
+  //   }
+  //   return 0;
+  // }
+  // ```
+  static const CompileTimeErrorCode
+      NOT_ASSIGNED_POTENTIALLY_NON_NULLABLE_LOCAL_VARIABLE =
+      CompileTimeErrorCode(
+    'NOT_ASSIGNED_POTENTIALLY_NON_NULLABLE_LOCAL_VARIABLE',
+    "The non-nullable local variable '{0}' must be assigned before it can be used.",
+    correction:
+        "Try giving it an initializer expression, or ensure that it's assigned on every execution path.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name that is not a type
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a name is used as a type but
+  // declared to be something other than a type.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `f` is a function:
+  //
+  // ```dart
+  // f() {}
+  // g([!f!] v) {}
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Replace the name with the name of a type.
+  static const CompileTimeErrorCode NOT_A_TYPE = CompileTimeErrorCode(
+    'NOT_A_TYPE',
+    "{0} isn't a type.",
+    correction: "Try correcting the name to match an existing type.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the operator that is not a binary operator.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an operator that can only be
+  // used as a unary operator is used as a binary operator.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the operator `~` can
+  // only be used as a unary operator:
+  //
+  // ```dart
+  // var a = 5 [!~!] 3;
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Replace the operator with the correct binary operator:
+  //
+  // ```dart
+  // var a = 5 - 3;
+  // ```
+  static const CompileTimeErrorCode NOT_BINARY_OPERATOR = CompileTimeErrorCode(
+    'NOT_BINARY_OPERATOR',
+    "'{0}' isn't a binary operator.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the expected number of required arguments
+   * 1: the actual number of positional arguments given
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a method or function invocation
+  // has fewer positional arguments than the number of required positional
+  // parameters.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `f` declares two
+  // required parameters, but only one argument is provided:
+  //
+  // ```dart
+  // void f(int a, int b) {}
+  // void g() {
+  //   f[!(0)!];
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Add arguments corresponding to the remaining parameters:
+  //
+  // ```dart
+  // void f(int a, int b) {}
+  // void g() {
+  //   f(0, 1);
+  // }
+  // ```
+  static const CompileTimeErrorCode NOT_ENOUGH_POSITIONAL_ARGUMENTS =
+      CompileTimeErrorCode(
+    'NOT_ENOUGH_POSITIONAL_ARGUMENTS',
+    "{0} positional argument(s) expected, but {1} found.",
+    correction: "Try adding the missing arguments.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the field that is not initialized
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a field is declared and has all
+  // these characteristics:
+  // - Has a type that's [potentially non-nullable][]
+  // - Doesn't have an initializer
+  // - Isn't marked as `late`
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because `x` is implicitly
+  // initialized to `null` when it isn't allowed to be `null`:
+  //
+  // ```dart
+  // class C {
+  //   int [!x!];
+  // }
+  // ```
+  //
+  // Similarly, the following code produces this diagnostic because `x` is
+  // implicitly initialized to `null`, when it isn't allowed to be `null`, by
+  // one of the constructors, even though it's initialized by other
+  // constructors:
+  //
+  // ```dart
+  // class C {
+  //   int x;
+  //
+  //   C(this.x);
+  //
+  //   [!C!].n();
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If there's a reasonable default value for the field that’s the same for all
+  // instances, then add an initializer expression:
+  //
+  // ```dart
+  // class C {
+  //   int x = 0;
+  // }
+  // ```
+  //
+  // If the value of the field should be provided when an instance is created,
+  // then add a constructor that sets the value of the field or update an
+  // existing constructor:
+  //
+  // ```dart
+  // class C {
+  //   int x;
+  //
+  //   C(this.x);
+  // }
+  // ```
+  //
+  // You can also mark the field as `late`, which removes the diagnostic, but if
+  // the field isn't assigned a value before it's accessed, then it results in
+  // an exception being thrown at runtime. This approach should only be used if
+  // you're sure that the field will always be assigned before it's referenced.
+  //
+  // ```dart
+  // class C {
+  //   late int x;
+  // }
+  // ```
+  static const CompileTimeErrorCode
+      NOT_INITIALIZED_NON_NULLABLE_INSTANCE_FIELD = CompileTimeErrorCode(
+    'NOT_INITIALIZED_NON_NULLABLE_INSTANCE_FIELD',
+    "Non-nullable instance field '{0}' must be initialized.",
+    correction:
+        "Try adding an initializer expression, or a generative constructor that initializes it, or mark it 'late'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the field that is not initialized
+   */
+  static const CompileTimeErrorCode
+      NOT_INITIALIZED_NON_NULLABLE_INSTANCE_FIELD_CONSTRUCTOR =
+      CompileTimeErrorCode(
+    'NOT_INITIALIZED_NON_NULLABLE_INSTANCE_FIELD',
+    "Non-nullable instance field '{0}' must be initialized.",
+    correction:
+        "Try adding an initializer expression, or add a field initializer in this constructor, or mark it 'late'.",
+    hasPublishedDocs: true,
+    uniqueName: 'NOT_INITIALIZED_NON_NULLABLE_INSTANCE_FIELD_CONSTRUCTOR',
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the variable that is invalid
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a static field or top-level
+  // variable has a type that's non-nullable and doesn't have an initializer.
+  // Fields and variables that don't have an initializer are normally
+  // initialized to `null`, but the type of the field or variable doesn't allow
+  // it to be set to `null`, so an explicit initializer must be provided.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the field `f` can't be
+  // initialized to `null`:
+  //
+  // ```dart
+  // class C {
+  //   static int [!f!];
+  // }
+  // ```
+  //
+  // Similarly, the following code produces this diagnostic because the
+  // top-level variable `v` can't be initialized to `null`:
+  //
+  // ```dart
+  // int [!v!];
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the field or variable can't be initialized to `null`, then add an
+  // initializer that sets it to a non-null value:
+  //
+  // ```dart
+  // class C {
+  //   static int f = 0;
+  // }
+  // ```
+  //
+  // If the field or variable should be initialized to `null`, then change the
+  // type to be nullable:
+  //
+  // ```dart
+  // int? v;
+  // ```
+  //
+  // If the field or variable can't be initialized in the declaration but will
+  // always be initialized before it's referenced, then mark it as being `late`:
+  //
+  // ```dart
+  // class C {
+  //   static late int f;
+  // }
+  // ```
+  static const CompileTimeErrorCode NOT_INITIALIZED_NON_NULLABLE_VARIABLE =
+      CompileTimeErrorCode(
+    'NOT_INITIALIZED_NON_NULLABLE_VARIABLE',
+    "The non-nullable variable '{0}' must be initialized.",
+    correction: "Try adding an initializer expression.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  static const CompileTimeErrorCode NOT_INSTANTIATED_BOUND =
+      CompileTimeErrorCode(
+    'NOT_INSTANTIATED_BOUND',
+    "Type parameter bound types must be instantiated.",
+    correction: "Try adding type arguments to the type parameter bound.",
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the static type of the
+  // expression of a spread element that appears in either a list literal or a
+  // set literal doesn't implement the type `Iterable`.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic:
+  //
+  // ```dart
+  // var m = <String, int>{'a': 0, 'b': 1};
+  // var s = <String>{...[!m!]};
+  // ```
+  //
+  // #### Common fixes
+  //
+  // The most common fix is to replace the expression with one that produces an
+  // iterable object:
+  //
+  // ```dart
+  // var m = <String, int>{'a': 0, 'b': 1};
+  // var s = <String>{...m.keys};
+  // ```
+  static const CompileTimeErrorCode NOT_ITERABLE_SPREAD = CompileTimeErrorCode(
+    'NOT_ITERABLE_SPREAD',
+    "Spread elements in list or set literals must implement 'Iterable'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the static type of the
+  // expression of a spread element that appears in a map literal doesn't
+  // implement the type `Map`.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `l` isn't a `Map`:
+  //
+  // ```dart
+  // var l =  <String>['a', 'b'];
+  // var m = <int, String>{...[!l!]};
+  // ```
+  //
+  // #### Common fixes
+  //
+  // The most common fix is to replace the expression with one that produces a
+  // map:
+  //
+  // ```dart
+  // var l =  <String>['a', 'b'];
+  // var m = <int, String>{...l.asMap()};
+  // ```
+  static const CompileTimeErrorCode NOT_MAP_SPREAD = CompileTimeErrorCode(
+    'NOT_MAP_SPREAD',
+    "Spread elements in map literals must implement 'Map'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  static const CompileTimeErrorCode NOT_NULL_AWARE_NULL_SPREAD =
+      CompileTimeErrorCode(
+    'NOT_NULL_AWARE_NULL_SPREAD',
+    "The Null typed expression can't be used with a non-null-aware spread.",
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an annotation consists of a
+  // single identifier, but that identifier is the name of a class rather than a
+  // variable. To create an instance of the class, the identifier must be
+  // followed by an argument list.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `C` is a class, and a
+  // class can't be used as an annotation without invoking a `const` constructor
+  // from the class:
+  //
+  // ```dart
+  // class C {
+  //   const C();
+  // }
+  //
+  // [!@C!]
+  // var x;
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Add the missing argument list:
+  //
+  // ```dart
+  // class C {
+  //   const C();
+  // }
+  //
+  // @C()
+  // var x;
+  // ```
+  static const CompileTimeErrorCode NO_ANNOTATION_CONSTRUCTOR_ARGUMENTS =
+      CompileTimeErrorCode(
+    'NO_ANNOTATION_CONSTRUCTOR_ARGUMENTS',
+    "Annotation creation must have arguments.",
+    correction: "Try adding an empty argument list.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the class where override error was detected
+   * 1: the list of candidate signatures which cannot be combined
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when there is a method declaration
+  // for which one or more types needs to be inferred, and those types can't be
+  // inferred because none of the overridden methods has a function type that is
+  // a supertype of all the other overridden methods, as specified by
+  // [override inference][].
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the method `m` declared
+  // in the class `C` is missing both the return type and the type of the
+  // parameter `a`, and neither of the missing types can be inferred for it:
+  //
+  // ```dart
+  // abstract class A {
+  //   A m(String a);
+  // }
+  //
+  // abstract class B {
+  //   B m(int a);
+  // }
+  //
+  // abstract class C implements A, B {
+  //   [!m!](a);
+  // }
+  // ```
+  //
+  // In this example, override inference can't be performed because the
+  // overridden methods are incompatible in these ways:
+  // - Neither parameter type (`String` and `int`) is a supertype of the other.
+  // - Neither return type is a subtype of the other.
+  //
+  // #### Common fixes
+  //
+  // If possible, add types to the method in the subclass that are consistent
+  // with the types from all the overridden methods:
+  //
+  // ```dart
+  // abstract class A {
+  //   A m(String a);
+  // }
+  //
+  // abstract class B {
+  //   B m(int a);
+  // }
+  //
+  // abstract class C implements A, B {
+  //   C m(Object a);
+  // }
+  // ```
+  static const CompileTimeErrorCode NO_COMBINED_SUPER_SIGNATURE =
+      CompileTimeErrorCode(
+    'NO_COMBINED_SUPER_SIGNATURE',
+    "Can't infer missing types in '{0}' from overridden methods: {1}.",
+    correction:
+        "Try providing explicit types for this method's parameters and return type.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the superclass that does not define an implicitly invoked
+   *    constructor
+   */
+  static const CompileTimeErrorCode NO_DEFAULT_SUPER_CONSTRUCTOR_EXPLICIT =
+      CompileTimeErrorCode(
+    'NO_DEFAULT_SUPER_CONSTRUCTOR',
+    "The superclass '{0}' doesn't have a zero argument constructor.",
+    correction:
+        "Try declaring a zero argument constructor in '{0}', or explicitly invoking a different constructor in '{0}'.",
+    uniqueName: 'NO_DEFAULT_SUPER_CONSTRUCTOR_EXPLICIT',
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the superclass that does not define an implicitly invoked
+   *    constructor
+   * 1: the name of the subclass that does not contain any explicit constructors
+   */
+  static const CompileTimeErrorCode NO_DEFAULT_SUPER_CONSTRUCTOR_IMPLICIT =
+      CompileTimeErrorCode(
+    'NO_DEFAULT_SUPER_CONSTRUCTOR',
+    "The superclass '{0}' doesn't have a zero argument constructor.",
+    correction:
+        "Try declaring a zero argument constructor in '{0}', or declaring a constructor in {1} that explicitly invokes a constructor in '{0}'.",
+    uniqueName: 'NO_DEFAULT_SUPER_CONSTRUCTOR_IMPLICIT',
+  );
+
+  /**
+   * User friendly specialized error for [NON_GENERATIVE_CONSTRUCTOR]. This
+   * handles the case of `class E extends Exception` which will never work
+   * because [Exception] has no generative constructors.
+   *
+   * Parameters:
+   * 0: the name of the subclass
+   * 1: the name of the superclass
+   */
+  static const CompileTimeErrorCode NO_GENERATIVE_CONSTRUCTORS_IN_SUPERCLASS =
+      CompileTimeErrorCode(
+    'NO_GENERATIVE_CONSTRUCTORS_IN_SUPERCLASS',
+    "The class '{0}' cannot extend '{1}' because '{1}' only has factory constructors (no generative constructors), and '{0}' has at least one generative constructor.",
+    correction:
+        "Try implementing the class instead, adding a generative (not factory) constructor to the superclass {0}, or a factory constructor to the subclass.",
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a class declaration uses an
+  // `extends` clause to specify a superclass, and the superclass is followed by
+  // a `?`.
+  //
+  // It isn't valid to specify a nullable superclass because doing so would have
+  // no meaning; it wouldn't change either the interface or implementation being
+  // inherited by the class containing the `extends` clause.
+  //
+  // Note, however, that it _is_ valid to use a nullable type as a type argument
+  // to the superclass, such as `class A extends B<C?> {}`.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because `A?` is a nullable
+  // type, and nullable types can't be used in an `extends` clause:
+  //
+  // ```dart
+  // class A {}
+  // class B extends [!A?!] {}
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Remove the question mark from the type:
+  //
+  // ```dart
+  // class A {}
+  // class B extends A {}
+  // ```
+  static const CompileTimeErrorCode NULLABLE_TYPE_IN_EXTENDS_CLAUSE =
+      CompileTimeErrorCode(
+    'NULLABLE_TYPE_IN_EXTENDS_CLAUSE',
+    "A class can't extend a nullable type.",
+    correction: "Try removing the question mark.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a class or mixin declaration has
+  // an `implements` clause, and an interface is followed by a `?`.
+  //
+  // It isn't valid to specify a nullable interface because doing so would have
+  // no meaning; it wouldn't change the interface being inherited by the class
+  // containing the `implements` clause.
+  //
+  // Note, however, that it _is_ valid to use a nullable type as a type argument
+  // to the interface, such as `class A implements B<C?> {}`.
+  //
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because `A?` is a nullable
+  // type, and nullable types can't be used in an `implements` clause:
+  //
+  // ```dart
+  // class A {}
+  // class B implements [!A?!] {}
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Remove the question mark from the type:
+  //
+  // ```dart
+  // class A {}
+  // class B implements A {}
+  // ```
+  static const CompileTimeErrorCode NULLABLE_TYPE_IN_IMPLEMENTS_CLAUSE =
+      CompileTimeErrorCode(
+    'NULLABLE_TYPE_IN_IMPLEMENTS_CLAUSE',
+    "A class or mixin can't implement a nullable type.",
+    correction: "Try removing the question mark.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a mixin declaration uses an `on`
+  // clause to specify a superclass constraint, and the class that's specified
+  // is followed by a `?`.
+  //
+  // It isn't valid to specify a nullable superclass constraint because doing so
+  // would have no meaning; it wouldn't change the interface being depended on
+  // by the mixin containing the `on` clause.
+  //
+  // Note, however, that it _is_ valid to use a nullable type as a type argument
+  // to the superclass constraint, such as `mixin A on B<C?> {}`.
+  //
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because `A?` is a nullable type
+  // and nullable types can't be used in an `on` clause:
+  //
+  // ```dart
+  // class C {}
+  // mixin M on [!C?!] {}
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Remove the question mark from the type:
+  //
+  // ```dart
+  // class C {}
+  // mixin M on C {}
+  // ```
+  static const CompileTimeErrorCode NULLABLE_TYPE_IN_ON_CLAUSE =
+      CompileTimeErrorCode(
+    'NULLABLE_TYPE_IN_ON_CLAUSE',
+    "A mixin can't have a nullable type as a superclass constraint.",
+    correction: "Try removing the question mark.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a class or mixin declaration has
+  // a `with` clause, and a mixin is followed by a `?`.
+  //
+  // It isn't valid to specify a nullable mixin because doing so would have no
+  // meaning; it wouldn't change either the interface or implementation being
+  // inherited by the class containing the `with` clause.
+  //
+  // Note, however, that it _is_ valid to use a nullable type as a type argument
+  // to the mixin, such as `class A with B<C?> {}`.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because `A?` is a nullable
+  // type, and nullable types can't be used in a `with` clause:
+  //
+  // ```dart
+  // mixin M {}
+  // class C with [!M?!] {}
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Remove the question mark from the type:
+  //
+  // ```dart
+  // mixin M {}
+  // class C with M {}
+  // ```
+  static const CompileTimeErrorCode NULLABLE_TYPE_IN_WITH_CLAUSE =
+      CompileTimeErrorCode(
+    'NULLABLE_TYPE_IN_WITH_CLAUSE',
+    "A class or mixin can't mix in a nullable type.",
+    correction: "Try removing the question mark.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * 7.9 Superclasses: It is a compile-time error to specify an extends clause
+   * for class Object.
+   */
+  static const CompileTimeErrorCode OBJECT_CANNOT_EXTEND_ANOTHER_CLASS =
+      CompileTimeErrorCode(
+    'OBJECT_CANNOT_EXTEND_ANOTHER_CLASS',
+    "The class 'Object' can't extend any other class.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the interface that is implemented more than once
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the same type is listed in the
+  // superclass constraints of a mixin multiple times.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because `A` is included twice
+  // in the superclass constraints for `M`:
+  //
+  // ```dart
+  // mixin M on A, [!A!] {
+  // }
+  //
+  // class A {}
+  // class B {}
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If a different type should be included in the superclass constraints, then
+  // replace one of the occurrences with the other type:
+  //
+  // ```dart
+  // mixin M on A, B {
+  // }
+  //
+  // class A {}
+  // class B {}
+  // ```
+  //
+  // If no other type was intended, then remove the repeated type name:
+  //
+  // ```dart
+  // mixin M on A {
+  // }
+  //
+  // class A {}
+  // class B {}
+  // ```
+  static const CompileTimeErrorCode ON_REPEATED = CompileTimeErrorCode(
+    'ON_REPEATED',
+    "The type '{0}' can be included in the superclass constraints only once.",
+    correction: "Try removing all except one occurrence of the type name.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when one or more of the parameters in
+  // an operator declaration are optional.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the parameter `other`
+  // is an optional parameter:
+  //
+  // ```dart
+  // class C {
+  //   C operator +([[!C? other!]]) => this;
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Make all of the parameters be required parameters:
+  //
+  // ```dart
+  // class C {
+  //   C operator +(C other) => this;
+  // }
+  // ```
+  static const CompileTimeErrorCode OPTIONAL_PARAMETER_IN_OPERATOR =
+      CompileTimeErrorCode(
+    'OPTIONAL_PARAMETER_IN_OPERATOR',
+    "Optional parameters aren't allowed when defining an operator.",
+    correction: "Try removing the optional parameters.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of expected library name
+   * 1: the non-matching actual library name from the "part of" declaration
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a library attempts to include a
+  // file as a part of itself when the other file is a part of a different
+  // library.
+  //
+  // #### Example
+  //
+  // Given a file named `part.dart` containing
+  //
+  // ```dart
+  // %uri="package:a/part.dart"
+  // part of 'library.dart';
+  // ```
+  //
+  // The following code, in any file other than `library.dart`, produces this
+  // diagnostic because it attempts to include `part.dart` as a part of itself
+  // when `part.dart` is a part of a different library:
+  //
+  // ```dart
+  // part [!'package:a/part.dart'!];
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the library should be using a different file as a part, then change the
+  // URI in the part directive to be the URI of the other file.
+  //
+  // If the part file should be a part of this library, then update the URI (or
+  // library name) in the part-of directive to be the URI (or name) of the
+  // correct library.
+  static const CompileTimeErrorCode PART_OF_DIFFERENT_LIBRARY =
+      CompileTimeErrorCode(
+    'PART_OF_DIFFERENT_LIBRARY',
+    "Expected this library to be part of '{0}', not '{1}'.",
+    correction:
+        "Try including a different part, or changing the name of the library in the part's part-of directive.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the uri pointing to a non-library declaration
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a part directive is found and
+  // the referenced file doesn't have a part-of directive.
+  //
+  // #### Examples
+  //
+  // Given a file (`a.dart`) containing:
+  //
+  // ```dart
+  // %uri="lib/a.dart"
+  // class A {}
+  // ```
+  //
+  // The following code produces this diagnostic because `a.dart` doesn't
+  // contain a part-of directive:
+  //
+  // ```dart
+  // part [!'a.dart'!];
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the referenced file is intended to be a part of another library, then
+  // add a part-of directive to the file:
+  //
+  // ```dart
+  // part of 'test.dart';
+  //
+  // class A {}
+  // ```
+  //
+  // If the referenced file is intended to be a library, then replace the part
+  // directive with an import directive:
+  //
+  // ```dart
+  // import 'a.dart';
+  // ```
+  static const CompileTimeErrorCode PART_OF_NON_PART = CompileTimeErrorCode(
+    'PART_OF_NON_PART',
+    "The included part '{0}' must have a part-of directive.",
+    correction: "Try adding a part-of directive to '{0}'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the URI of the expected library
+   * 1: the non-matching actual library name from the "part of" declaration
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a library that doesn't have a
+  // `library` directive (and hence has no name) contains a `part` directive and
+  // the `part of` directive in the part file uses a name to specify the library
+  // that it's a part of.
+  //
+  // #### Example
+  //
+  // Given a part file named `part_file.dart` containing the following code:
+  //
+  // ```dart
+  // %uri="lib/part_file.dart"
+  // part of lib;
+  // ```
+  //
+  // The following code produces this diagnostic because the library including
+  // the part file doesn't have a name even though the part file uses a name to
+  // specify which library it's a part of:
+  //
+  // ```dart
+  // part [!'part_file.dart'!];
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Change the `part of` directive in the part file to specify its library by
+  // URI:
+  //
+  // ```dart
+  // part of 'test.dart';
+  // ```
+  static const CompileTimeErrorCode PART_OF_UNNAMED_LIBRARY =
+      CompileTimeErrorCode(
+    'PART_OF_UNNAMED_LIBRARY',
+    "The library is unnamed. A URI is expected, not a library name '{0}', in the part-of directive.",
+    correction:
+        "Try changing the part-of directive to a URI, or try including a different part.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the prefix
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a name is used as both an import
+  // prefix and the name of a top-level declaration in the same library.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because `f` is used as both an
+  // import prefix and the name of a function:
+  //
+  // ```dart
+  // import 'dart:math' as f;
+  //
+  // int [!f!]() => f.min(0, 1);
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you want to use the name for the import prefix, then rename the
+  // top-level declaration:
+  //
+  // ```dart
+  // import 'dart:math' as f;
+  //
+  // int g() => f.min(0, 1);
+  // ```
+  //
+  // If you want to use the name for the top-level declaration, then rename the
+  // import prefix:
+  //
+  // ```dart
+  // import 'dart:math' as math;
+  //
+  // int f() => math.min(0, 1);
+  // ```
+  static const CompileTimeErrorCode PREFIX_COLLIDES_WITH_TOP_LEVEL_MEMBER =
+      CompileTimeErrorCode(
+    'PREFIX_COLLIDES_WITH_TOP_LEVEL_MEMBER',
+    "The name '{0}' is already used as an import prefix and can't be used to name a top-level element.",
+    correction: "Try renaming either the top-level element or the prefix.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the prefix
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an import prefix is used by
+  // itself, without accessing any of the names declared in the libraries
+  // associated with the prefix. Prefixes aren't variables, and therefore can't
+  // be used as a value.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the prefix `math` is
+  // being used as if it were a variable:
+  //
+  // ```dart
+  // import 'dart:math' as math;
+  //
+  // void f() {
+  //   print([!math!]);
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the code is incomplete, then reference something in one of the libraries
+  // associated with the prefix:
+  //
+  // ```dart
+  // import 'dart:math' as math;
+  //
+  // void f() {
+  //   print(math.pi);
+  // }
+  // ```
+  //
+  // If the name is wrong, then correct the name.
+  static const CompileTimeErrorCode PREFIX_IDENTIFIER_NOT_FOLLOWED_BY_DOT =
+      CompileTimeErrorCode(
+    'PREFIX_IDENTIFIER_NOT_FOLLOWED_BY_DOT',
+    "The name '{0}' refers to an import prefix, so it must be followed by '.'.",
+    correction:
+        "Try correcting the name to refer to something other than a prefix, or renaming the prefix.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * From the `Static Types` section of the spec:
+   *
+   *     A type T is malformed if:
+   *     - T has the form id or the form prefix.id, and in the enclosing lexical
+   *       scope, the name id (respectively prefix.id) does not denote a type.
+   *
+   * In particular, this means that if an import prefix is shadowed by a local
+   * declaration, it is an error to try to use it as a prefix for a type name.
+   */
+  static const CompileTimeErrorCode PREFIX_SHADOWED_BY_LOCAL_DECLARATION =
+      CompileTimeErrorCode(
+    'PREFIX_SHADOWED_BY_LOCAL_DECLARATION',
+    "The prefix '{0}' can't be used here because it is shadowed by a local declaration.",
+    correction: "Try renaming either the prefix or the local declaration.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the private name that collides
+   * 1: the name of the first mixin
+   * 2: the name of the second mixin
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when two mixins that define the same
+  // private member are used together in a single class in a library other than
+  // the one that defines the mixins.
+  //
+  // #### Example
+  //
+  // Given a file named `a.dart` containing the following code:
+  //
+  // ```dart
+  // %uri="lib/a.dart"
+  // class A {
+  //   void _foo() {}
+  // }
+  //
+  // class B {
+  //   void _foo() {}
+  // }
+  // ```
+  //
+  // The following code produces this diagnostic because the classes `A` and `B`
+  // both define the method `_foo`:
+  //
+  // ```dart
+  // import 'a.dart';
+  //
+  // class C extends Object with A, [!B!] {}
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you don't need both of the mixins, then remove one of them from the
+  // `with` clause:
+  //
+  // ```dart
+  // import 'a.dart';
+  //
+  // class C extends Object with A, [!B!] {}
+  // ```
+  //
+  // If you need both of the mixins, then rename the conflicting member in one
+  // of the two mixins.
+  static const CompileTimeErrorCode PRIVATE_COLLISION_IN_MIXIN_APPLICATION =
+      CompileTimeErrorCode(
+    'PRIVATE_COLLISION_IN_MIXIN_APPLICATION',
+    "The private name '{0}', defined by '{1}', conflicts with the same name defined by '{2}'.",
+    correction: "Try removing '{1}' from the 'with' clause.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the name of a named parameter
+  // starts with an underscore.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the named parameter
+  // `_x` starts with an underscore:
+  //
+  // ```dart
+  // class C {
+  //   void m({int [!_x!] = 0}) {}
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Rename the parameter so that it doesn't start with an underscore:
+  //
+  // ```dart
+  // class C {
+  //   void m({int x = 0}) {}
+  // }
+  // ```
+  static const CompileTimeErrorCode PRIVATE_OPTIONAL_PARAMETER =
+      CompileTimeErrorCode(
+    'PRIVATE_OPTIONAL_PARAMETER',
+    "Named parameters can't start with an underscore.",
+    hasPublishedDocs: true,
+  );
+
+  static const CompileTimeErrorCode PRIVATE_SETTER = CompileTimeErrorCode(
+    'PRIVATE_SETTER',
+    "The setter '{0}' is private and can't be accessed outside of the library that declares it.",
+    correction: "Try making it public.",
+  );
+
+  static const CompileTimeErrorCode READ_POTENTIALLY_UNASSIGNED_FINAL =
+      CompileTimeErrorCode(
+    'READ_POTENTIALLY_UNASSIGNED_FINAL',
+    "The final variable '{0}' can't be read because it is potentially unassigned at this point.",
+    correction: "Ensure that it is assigned on necessary execution paths.",
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the value of a compile-time
+  // constant is defined in terms of itself, either directly or indirectly,
+  // creating an infinite loop.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic twice because both of the
+  // constants are defined in terms of the other:
+  //
+  // ```dart
+  // const [!secondsPerHour!] = minutesPerHour * 60;
+  // const [!minutesPerHour!] = secondsPerHour / 60;
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Break the cycle by finding an alternative way of defining at least one of
+  // the constants:
+  //
+  // ```dart
+  // const secondsPerHour = minutesPerHour * 60;
+  // const minutesPerHour = 60;
+  // ```
+  static const CompileTimeErrorCode RECURSIVE_COMPILE_TIME_CONSTANT =
+      CompileTimeErrorCode(
+    'RECURSIVE_COMPILE_TIME_CONSTANT',
+    "The compile-time constant expression depends on itself.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   *
+   * TODO(scheglov) review this later, there are no explicit "it is a
+   * compile-time error" in specification. But it was added to the co19 and
+   * there is same error for factories.
+   *
+   * https://code.google.com/p/dart/issues/detail?id=954
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a constructor redirects to
+  // itself, either directly or indirectly, creating an infinite loop.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the generative
+  // constructors `C.a` and `C.b` each redirect to the other:
+  //
+  // ```dart
+  // class C {
+  //   C.a() : [!this.b()!];
+  //   C.b() : [!this.a()!];
+  // }
+  // ```
+  //
+  // The following code produces this diagnostic because the factory
+  // constructors `A` and `B` each redirect to the other:
+  //
+  // ```dart
+  // abstract class A {
+  //   factory A() = [!B!];
+  // }
+  // class B implements A {
+  //   factory B() = [!A!];
+  //   B.named();
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // In the case of generative constructors, break the cycle by finding defining
+  // at least one of the constructors to not redirect to another constructor:
+  //
+  // ```dart
+  // class C {
+  //   C.a() : this.b();
+  //   C.b();
+  // }
+  // ```
+  //
+  // In the case of factory constructors, break the cycle by defining at least
+  // one of the factory constructors to do one of the following:
+  //
+  // - Redirect to a generative constructor:
+  //
+  // ```dart
+  // abstract class A {
+  //   factory A() = B;
+  // }
+  // class B implements A {
+  //   factory B() = B.named;
+  //   B.named();
+  // }
+  // ```
+  //
+  // - Not redirect to another constructor:
+  //
+  // ```dart
+  // abstract class A {
+  //   factory A() = B;
+  // }
+  // class B implements A {
+  //   factory B() {
+  //     return B.named();
+  //   }
+  //
+  //   B.named();
+  // }
+  // ```
+  //
+  // - Not be a factory constructor:
+  //
+  // ```dart
+  // abstract class A {
+  //   factory A() = B;
+  // }
+  // class B implements A {
+  //   B();
+  //   B.named();
+  // }
+  // ```
+  static const CompileTimeErrorCode RECURSIVE_CONSTRUCTOR_REDIRECT =
+      CompileTimeErrorCode(
+    'RECURSIVE_CONSTRUCTOR_REDIRECT',
+    "Constructors can't redirect to themselves either directly or indirectly.",
+    correction:
+        "Try changing one of the constructors in the loop to not redirect.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  static const CompileTimeErrorCode RECURSIVE_FACTORY_REDIRECT =
+      CompileTimeErrorCode(
+    'RECURSIVE_CONSTRUCTOR_REDIRECT',
+    "Constructors can't redirect to themselves either directly or indirectly.",
+    correction:
+        "Try changing one of the constructors in the loop to not redirect.",
+    hasPublishedDocs: true,
+    uniqueName: 'RECURSIVE_FACTORY_REDIRECT',
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the class that implements itself recursively
+   * 1: a string representation of the implements loop
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when there's a circularity in the
+  // type hierarchy. This happens when a type, either directly or indirectly,
+  // is declared to be a subtype of itself.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the class `A` is
+  // declared to be a subtype of `B`, and `B` is a subtype of `A`:
+  //
+  // ```dart
+  // class [!A!] extends B {}
+  // class B implements A {}
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Change the type hierarchy so that there's no circularity.
+  static const CompileTimeErrorCode RECURSIVE_INTERFACE_INHERITANCE =
+      CompileTimeErrorCode(
+    'RECURSIVE_INTERFACE_INHERITANCE',
+    "'{0}' can't be a superinterface of itself: {1}.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * 7.10 Superinterfaces: It is a compile-time error if the interface of a
+   * class <i>C</i> is a superinterface of itself.
+   *
+   * 8.1 Superinterfaces: It is a compile-time error if an interface is a
+   * superinterface of itself.
+   *
+   * 7.9 Superclasses: It is a compile-time error if a class <i>C</i> is a
+   * superclass of itself.
+   *
+   * Parameters:
+   * 0: the name of the class that implements itself recursively
+   */
+  static const CompileTimeErrorCode RECURSIVE_INTERFACE_INHERITANCE_EXTENDS =
+      CompileTimeErrorCode(
+    'RECURSIVE_INTERFACE_INHERITANCE',
+    "'{0}' can't extend itself.",
+    hasPublishedDocs: true,
+    uniqueName: 'RECURSIVE_INTERFACE_INHERITANCE_EXTENDS',
+  );
+
+  /**
+   * 7.10 Superinterfaces: It is a compile-time error if the interface of a
+   * class <i>C</i> is a superinterface of itself.
+   *
+   * 8.1 Superinterfaces: It is a compile-time error if an interface is a
+   * superinterface of itself.
+   *
+   * 7.9 Superclasses: It is a compile-time error if a class <i>C</i> is a
+   * superclass of itself.
+   *
+   * Parameters:
+   * 0: the name of the class that implements itself recursively
+   */
+  static const CompileTimeErrorCode RECURSIVE_INTERFACE_INHERITANCE_IMPLEMENTS =
+      CompileTimeErrorCode(
+    'RECURSIVE_INTERFACE_INHERITANCE',
+    "'{0}' can't implement itself.",
+    hasPublishedDocs: true,
+    uniqueName: 'RECURSIVE_INTERFACE_INHERITANCE_IMPLEMENTS',
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the mixin that constraints itself recursively
+   */
+  static const CompileTimeErrorCode RECURSIVE_INTERFACE_INHERITANCE_ON =
+      CompileTimeErrorCode(
+    'RECURSIVE_INTERFACE_INHERITANCE',
+    "'{0}' can't use itself as a superclass constraint.",
+    hasPublishedDocs: true,
+    uniqueName: 'RECURSIVE_INTERFACE_INHERITANCE_ON',
+  );
+
+  /**
+   * 7.10 Superinterfaces: It is a compile-time error if the interface of a
+   * class <i>C</i> is a superinterface of itself.
+   *
+   * 8.1 Superinterfaces: It is a compile-time error if an interface is a
+   * superinterface of itself.
+   *
+   * 7.9 Superclasses: It is a compile-time error if a class <i>C</i> is a
+   * superclass of itself.
+   *
+   * Parameters:
+   * 0: the name of the class that implements itself recursively
+   */
+  static const CompileTimeErrorCode RECURSIVE_INTERFACE_INHERITANCE_WITH =
+      CompileTimeErrorCode(
+    'RECURSIVE_INTERFACE_INHERITANCE',
+    "'{0}' can't use itself as a mixin.",
+    hasPublishedDocs: true,
+    uniqueName: 'RECURSIVE_INTERFACE_INHERITANCE_WITH',
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a generative constructor
+  // redirects to a constructor that isn't defined.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the constructor `C.a`
+  // redirects to the constructor `C.b`, but `C.b` isn't defined:
+  //
+  // ```dart
+  // class C {
+  //   C.a() : [!this.b()!];
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the missing constructor must be called, then define it:
+  //
+  // ```dart
+  // class C {
+  //   C.a() : this.b();
+  //   C.b();
+  // }
+  // ```
+  //
+  // If the missing constructor doesn't need to be called, then remove the
+  // redirect:
+  //
+  // ```dart
+  // class C {
+  //   C.a();
+  // }
+  // ```
+  static const CompileTimeErrorCode REDIRECT_GENERATIVE_TO_MISSING_CONSTRUCTOR =
+      CompileTimeErrorCode(
+    'REDIRECT_GENERATIVE_TO_MISSING_CONSTRUCTOR',
+    "The constructor '{0}' couldn't be found in '{1}'.",
+    correction:
+        "Try redirecting to a different constructor, or defining the constructor named '{0}'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a generative constructor
+  // redirects to a factory constructor.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the generative
+  // constructor `C.a` redirects to the factory constructor `C.b`:
+  //
+  // ```dart
+  // class C {
+  //   C.a() : [!this.b()!];
+  //   factory C.b() => C.a();
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the generative constructor doesn't need to redirect to another
+  // constructor, then remove the redirect.
+  //
+  // ```dart
+  // class C {
+  //   C.a();
+  //   factory C.b() => C.a();
+  // }
+  // ```
+  //
+  // If the generative constructor must redirect to another constructor, then
+  // make the other constructor be a generative (non-factory) constructor:
+  //
+  // ```dart
+  // class C {
+  //   C.a() : this.b();
+  //   C.b();
+  // }
+  // ```
+  static const CompileTimeErrorCode
+      REDIRECT_GENERATIVE_TO_NON_GENERATIVE_CONSTRUCTOR = CompileTimeErrorCode(
+    'REDIRECT_GENERATIVE_TO_NON_GENERATIVE_CONSTRUCTOR',
+    "Generative constructors can't redirect to a factory constructor.",
+    correction: "Try redirecting to a different constructor.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * A factory constructor can't redirect to a non-generative constructor of an
+   * abstract class.
+   */
+  static const CompileTimeErrorCode REDIRECT_TO_ABSTRACT_CLASS_CONSTRUCTOR =
+      CompileTimeErrorCode(
+    'REDIRECT_TO_ABSTRACT_CLASS_CONSTRUCTOR',
+    "The redirecting constructor '{0}' can't redirect to a constructor of the abstract class '{1}'.",
+    correction: "Try redirecting to a constructor of a different class.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the redirected constructor
+   * 1: the name of the redirecting constructor
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a factory constructor attempts
+  // to redirect to another constructor, but the two have incompatible
+  // parameters. The parameters are compatible if all of the parameters of the
+  // redirecting constructor can be passed to the other constructor and if the
+  // other constructor doesn't require any parameters that aren't declared by
+  // the redirecting constructor.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because the constructor for `A`
+  // doesn't declare a parameter that the constructor for `B` requires:
+  //
+  // ```dart
+  // abstract class A {
+  //   factory A() = [!B!];
+  // }
+  //
+  // class B implements A {
+  //   B(int x);
+  //   B.zero();
+  // }
+  // ```
+  //
+  // The following code produces this diagnostic because the constructor for `A`
+  // declares a named parameter (`y`) that the constructor for `B` doesn't
+  // allow:
+  //
+  // ```dart
+  // abstract class A {
+  //   factory A(int x, {int y}) = [!B!];
+  // }
+  //
+  // class B implements A {
+  //   B(int x);
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If there's a different constructor that is compatible with the redirecting
+  // constructor, then redirect to that constructor:
+  //
+  // ```dart
+  // abstract class A {
+  //   factory A() = B.zero;
+  // }
+  //
+  // class B implements A {
+  //   B(int x);
+  //   B.zero();
+  // }
+  // ```
+  //
+  // Otherwise, update the redirecting constructor to be compatible:
+  //
+  // ```dart
+  // abstract class A {
+  //   factory A(int x) = B;
+  // }
+  //
+  // class B implements A {
+  //   B(int x);
+  // }
+  // ```
+  static const CompileTimeErrorCode REDIRECT_TO_INVALID_FUNCTION_TYPE =
+      CompileTimeErrorCode(
+    'REDIRECT_TO_INVALID_FUNCTION_TYPE',
+    "The redirected constructor '{0}' has incompatible parameters with '{1}'.",
+    correction: "Try redirecting to a different constructor.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the redirected constructor's return type
+   * 1: the name of the redirecting constructor's return type
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a factory constructor redirects
+  // to a constructor whose return type isn't a subtype of the type that the
+  // factory constructor is declared to produce.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `A` isn't a subclass
+  // of `C`, which means that the value returned by the constructor `A()`
+  // couldn't be returned from the constructor `C()`:
+  //
+  // ```dart
+  // class A {}
+  //
+  // class B implements C {}
+  //
+  // class C {
+  //   factory C() = [!A!];
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the factory constructor is redirecting to a constructor in the wrong
+  // class, then update the factory constructor to redirect to the correct
+  // constructor:
+  //
+  // ```dart
+  // class A {}
+  //
+  // class B implements C {}
+  //
+  // class C {
+  //   factory C() = B;
+  // }
+  // ```
+  //
+  // If the class defining the constructor being redirected to is the class that
+  // should be returned, then make it a subtype of the factory's return type:
+  //
+  // ```dart
+  // class A implements C {}
+  //
+  // class B implements C {}
+  //
+  // class C {
+  //   factory C() = A;
+  // }
+  // ```
+  static const CompileTimeErrorCode REDIRECT_TO_INVALID_RETURN_TYPE =
+      CompileTimeErrorCode(
+    'REDIRECT_TO_INVALID_RETURN_TYPE',
+    "The return type '{0}' of the redirected constructor isn't a subtype of '{1}'.",
+    correction: "Try redirecting to a different constructor.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * 7.6.2 Factories: It is a compile-time error if <i>k</i> is prefixed with
+   * the const modifier but <i>k'</i> is not a constant constructor.
+   */
+  static const CompileTimeErrorCode REDIRECT_TO_MISSING_CONSTRUCTOR =
+      CompileTimeErrorCode(
+    'REDIRECT_TO_MISSING_CONSTRUCTOR',
+    "The constructor '{0}' couldn't be found in '{1}'.",
+    correction:
+        "Try redirecting to a different constructor, or define the constructor named '{0}'.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the non-type referenced in the redirect
+   */
+  // #### Description
+  //
+  // One way to implement a factory constructor is to redirect to another
+  // constructor by referencing the name of the constructor. The analyzer
+  // produces this diagnostic when the redirect is to something other than a
+  // constructor.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `f` is a function:
+  //
+  // ```dart
+  // C f() => throw 0;
+  //
+  // class C {
+  //   factory C() = [!f!];
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the constructor isn't defined, then either define it or replace it with
+  // a constructor that is defined.
+  //
+  // If the constructor is defined but the class that defines it isn't visible,
+  // then you probably need to add an import.
+  //
+  // If you're trying to return the value returned by a function, then rewrite
+  // the constructor to return the value from the constructor's body:
+  //
+  // ```dart
+  // C f() => throw 0;
+  //
+  // class C {
+  //   factory C() => f();
+  // }
+  // ```
+  static const CompileTimeErrorCode REDIRECT_TO_NON_CLASS =
+      CompileTimeErrorCode(
+    'REDIRECT_TO_NON_CLASS',
+    "The name '{0}' isn't a type and can't be used in a redirected constructor.",
+    correction: "Try redirecting to a different constructor.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a constructor marked as `const`
+  // redirects to a constructor that isn't marked as `const`.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the constructor `C.a`
+  // is marked as `const` but redirects to the constructor `C.b`, which isn't:
+  //
+  // ```dart
+  // class C {
+  //   const C.a() : this.[!b!]();
+  //   C.b();
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the non-constant constructor can be marked as `const`, then mark it as
+  // `const`:
+  //
+  // ```dart
+  // class C {
+  //   const C.a() : this.b();
+  //   const C.b();
+  // }
+  // ```
+  //
+  // If the non-constant constructor can't be marked as `const`, then either
+  // remove the redirect or remove `const` from the redirecting constructor:
+  //
+  // ```dart
+  // class C {
+  //   C.a() : this.b();
+  //   C.b();
+  // }
+  // ```
+  static const CompileTimeErrorCode REDIRECT_TO_NON_CONST_CONSTRUCTOR =
+      CompileTimeErrorCode(
+    'REDIRECT_TO_NON_CONST_CONSTRUCTOR',
+    "A constant redirecting constructor can't redirect to a non-constant constructor.",
+    correction: "Try redirecting to a different constructor.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a redirecting factory
+  // constructor redirects to a type alias, and the type alias expands to one of
+  // the type parameters of the type alias. This isn’t allowed because the value
+  // of the type parameter is a type rather than a class.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the redirect to `B<A>`
+  // is to a type alias whose value is `T`, even though it looks like the value
+  // should be `A`:
+  //
+  // ```dart
+  // class A implements C {}
+  //
+  // typedef B<T> = T;
+  //
+  // abstract class C {
+  //   factory C() = [!B!]<A>;
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Use either a class name or a type alias that is defined to be a class
+  // rather than a type alias defined to be a type parameter:
+  //
+  // ```dart
+  // class A implements C {}
+  //
+  // abstract class C {
+  //   factory C() = A;
+  // }
+  // ```
+  static const CompileTimeErrorCode
+      REDIRECT_TO_TYPE_ALIAS_EXPANDS_TO_TYPE_PARAMETER = CompileTimeErrorCode(
+    'REDIRECT_TO_TYPE_ALIAS_EXPANDS_TO_TYPE_PARAMETER',
+    "A redirecting constructor can't redirect to a type alias that expands to a type parameter.",
+    correction: "Try replacing it with a class.",
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a variable is referenced before
+  // it’s declared. In Dart, variables are visible everywhere in the block in
+  // which they are declared, but can only be referenced after they are
+  // declared.
+  //
+  // The analyzer also produces a context message that indicates where the
+  // declaration is located.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `i` is used before it
+  // is declared:
+  //
+  // ```dart
+  // %language=2.9
+  // void f() {
+  //   print([!i!]);
+  //   int i = 5;
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you intended to reference the local variable, move the declaration
+  // before the first reference:
+  //
+  // ```dart
+  // %language=2.9
+  // void f() {
+  //   int i = 5;
+  //   print(i);
+  // }
+  // ```
+  //
+  // If you intended to reference a name from an outer scope, such as a
+  // parameter, instance field or top-level variable, then rename the local
+  // declaration so that it doesn't hide the outer variable.
+  //
+  // ```dart
+  // %language=2.9
+  // void f(int i) {
+  //   print(i);
+  //   int x = 5;
+  //   print(x);
+  // }
+  // ```
+  static const CompileTimeErrorCode REFERENCED_BEFORE_DECLARATION =
+      CompileTimeErrorCode(
+    'REFERENCED_BEFORE_DECLARATION',
+    "Local variable '{0}' can't be referenced before it is declared.",
+    correction:
+        "Try moving the declaration to before the first use, or renaming the local variable so that it doesn't hide a name from an enclosing scope.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a `rethrow` statement is outside
+  // a `catch` clause. The `rethrow` statement is used to throw a caught
+  // exception again, but there's no caught exception outside of a `catch`
+  // clause.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the`rethrow` statement
+  // is outside of a `catch` clause:
+  //
+  // ```dart
+  // void f() {
+  //   [!rethrow!];
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you're trying to rethrow an exception, then wrap the `rethrow` statement
+  // in a `catch` clause:
+  //
+  // ```dart
+  // void f() {
+  //   try {
+  //     // ...
+  //   } catch (exception) {
+  //     rethrow;
+  //   }
+  // }
+  // ```
+  //
+  // If you're trying to throw a new exception, then replace the `rethrow`
+  // statement with a `throw` expression:
+  //
+  // ```dart
+  // void f() {
+  //   throw UnsupportedError('Not yet implemented');
+  // }
+  // ```
+  static const CompileTimeErrorCode RETHROW_OUTSIDE_CATCH =
+      CompileTimeErrorCode(
+    'RETHROW_OUTSIDE_CATCH',
+    "A rethrow must be inside of a catch clause.",
+    correction:
+        "Try moving the expression into a catch clause, or using a 'throw' expression.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a generative constructor
+  // contains a `return` statement that specifies a value to be returned.
+  // Generative constructors always return the object that was created, and
+  // therefore can't return a different object.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the `return` statement
+  // has an expression:
+  //
+  // ```dart
+  // class C {
+  //   C() {
+  //     return [!this!];
+  //   }
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the constructor should create a new instance, then remove either the
+  // `return` statement or the expression:
+  //
+  // ```dart
+  // class C {
+  //   C();
+  // }
+  // ```
+  //
+  // If the constructor shouldn't create a new instance, then convert it to be a
+  // factory constructor:
+  //
+  // ```dart
+  // class C {
+  //   factory C() {
+  //     return _instance;
+  //   }
+  //
+  //   static C _instance = C._();
+  //
+  //   C._();
+  // }
+  // ```
+  static const CompileTimeErrorCode RETURN_IN_GENERATIVE_CONSTRUCTOR =
+      CompileTimeErrorCode(
+    'RETURN_IN_GENERATIVE_CONSTRUCTOR',
+    "Constructors can't return values.",
+    correction:
+        "Try removing the return statement or using a factory constructor.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a generator function (one whose
+  // body is marked with either `async*` or `sync*`) uses either a `return`
+  // statement to return a value or implicitly returns a value because of using
+  // `=>`. In any of these cases, they should use `yield` instead of `return`.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the method `f` is a
+  // generator and is using `return` to return a value:
+  //
+  // ```dart
+  // Iterable<int> f() sync* {
+  //   [!return 3!];
+  // }
+  // ```
+  //
+  // The following code produces this diagnostic because the function `f` is a
+  // generator and is implicitly returning a value:
+  //
+  // ```dart
+  // Stream<int> f() async* [!=>!] 3;
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the function is using `=>` for the body of the function, then convert it
+  // to a block function body, and use `yield` to return a value:
+  //
+  // ```dart
+  // Stream<int> f() async* {
+  //   yield 3;
+  // }
+  // ```
+  //
+  // If the method is intended to be a generator, then use `yield` to return a
+  // value:
+  //
+  // ```dart
+  // Iterable<int> f() sync* {
+  //   yield 3;
+  // }
+  // ```
+  //
+  // If the method isn't intended to be a generator, then remove the modifier
+  // from the body (or use `async` if you're returning a future):
+  //
+  // ```dart
+  // int f() {
+  //   return 3;
+  // }
+  // ```
+  static const CompileTimeErrorCode RETURN_IN_GENERATOR = CompileTimeErrorCode(
+    'RETURN_IN_GENERATOR',
+    "Can't return a value from a generator function that uses the 'async*' or 'sync*' modifier.",
+    correction:
+        "Try replacing 'return' with 'yield', using a block function body, or changing the method body modifier.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the return type as declared in the return statement
+   * 1: the expected return type as defined by the method
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the static type of a returned
+  // expression isn't assignable to the return type that the closure is required
+  // to have.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `f` is defined to be a
+  // function that returns a `String`, but the closure assigned to it returns an
+  // `int`:
+  //
+  // ```dart
+  // String Function(String) f = (s) => [!3!];
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the return type is correct, then replace the returned value with a value
+  // of the correct type, possibly by converting the existing value:
+  //
+  // ```dart
+  // String Function(String) f = (s) => 3.toString();
+  // ```
+  static const CompileTimeErrorCode RETURN_OF_INVALID_TYPE_FROM_CLOSURE =
+      CompileTimeErrorCode(
+    'RETURN_OF_INVALID_TYPE_FROM_CLOSURE',
+    "The return type '{0}' isn't a '{1}', as required by the closure's context.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the return type as declared in the return statement
+   * 1: the expected return type as defined by the enclosing class
+   * 2: the name of the constructor
+   */
+  static const CompileTimeErrorCode RETURN_OF_INVALID_TYPE_FROM_CONSTRUCTOR =
+      CompileTimeErrorCode(
+    'RETURN_OF_INVALID_TYPE',
+    "A value of type '{0}' can't be returned from the constructor '{2}' because it has a return type of '{1}'.",
+    hasPublishedDocs: true,
+    uniqueName: 'RETURN_OF_INVALID_TYPE_FROM_CONSTRUCTOR',
+  );
+
+  /**
+   * Parameters:
+   * 0: the return type as declared in the return statement
+   * 1: the expected return type as defined by the method
+   * 2: the name of the method
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a method or function returns a
+  // value whose type isn't assignable to the declared return type.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `f` has a return type
+  // of `String` but is returning an `int`:
+  //
+  // ```dart
+  // String f() => [!3!];
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the return type is correct, then replace the value being returned with a
+  // value of the correct type, possibly by converting the existing value:
+  //
+  // ```dart
+  // String f() => 3.toString();
+  // ```
+  //
+  // If the value is correct, then change the return type to match:
+  //
+  // ```dart
+  // int f() => 3;
+  // ```
+  static const CompileTimeErrorCode RETURN_OF_INVALID_TYPE_FROM_FUNCTION =
+      CompileTimeErrorCode(
+    'RETURN_OF_INVALID_TYPE',
+    "A value of type '{0}' can't be returned from the function '{2}' because it has a return type of '{1}'.",
+    hasPublishedDocs: true,
+    uniqueName: 'RETURN_OF_INVALID_TYPE_FROM_FUNCTION',
+  );
+
+  /**
+   * Parameters:
+   * 0: the return type as declared in the return statement
+   * 1: the expected return type as defined by the method
+   * 2: the name of the method
+   */
+  static const CompileTimeErrorCode RETURN_OF_INVALID_TYPE_FROM_METHOD =
+      CompileTimeErrorCode(
+    'RETURN_OF_INVALID_TYPE',
+    "A value of type '{0}' can't be returned from the method '{2}' because it has a return type of '{1}'.",
+    hasPublishedDocs: true,
+    uniqueName: 'RETURN_OF_INVALID_TYPE_FROM_METHOD',
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when it finds a `return` statement
+  // without an expression in a function that declares a return type.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because the function `f` is
+  // expected to return an `int`, but no value is being returned:
+  //
+  // ```dart
+  // int f() {
+  //   [!return!];
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Add an expression that computes the value to be returned:
+  //
+  // ```dart
+  // int f() {
+  //   return 0;
+  // }
+  // ```
+  static const CompileTimeErrorCode RETURN_WITHOUT_VALUE = CompileTimeErrorCode(
+    'RETURN_WITHOUT_VALUE',
+    "The return value is missing after 'return'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  static const CompileTimeErrorCode SET_ELEMENT_FROM_DEFERRED_LIBRARY =
+      CompileTimeErrorCode(
+    'COLLECTION_ELEMENT_FROM_DEFERRED_LIBRARY',
+    "Constant values from a deferred library can't be used as values in a 'const' set literal.",
+    correction:
+        "Try removing the keyword 'const' from the set literal or removing the keyword 'deferred' from the import.",
+    hasPublishedDocs: true,
+    uniqueName: 'SET_ELEMENT_FROM_DEFERRED_LIBRARY',
+  );
+
+  /**
+   * Parameters:
+   * 0: the actual type of the set element
+   * 1: the expected type of the set element
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an element in a set literal has
+  // a type that isn't assignable to the element type of the set.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the type of the string
+  // literal `'0'` is `String`, which isn't assignable to `int`, the element
+  // type of the set:
+  //
+  // ```dart
+  // var s = <int>{[!'0'!]};
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the element type of the set literal is wrong, then change the element
+  // type of the set:
+  //
+  // ```dart
+  // var s = <String>{'0'};
+  // ```
+  //
+  // If the type of the element is wrong, then change the element:
+  //
+  // ```dart
+  // var s = <int>{'0'.length};
+  // ```
+  static const CompileTimeErrorCode SET_ELEMENT_TYPE_NOT_ASSIGNABLE =
+      CompileTimeErrorCode(
+    'SET_ELEMENT_TYPE_NOT_ASSIGNABLE',
+    "The element type '{0}' can't be assigned to the set type '{1}'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a prefix in a deferred import is
+  // also used as a prefix in other imports (whether deferred or not). The
+  // prefix in a deferred import can't be shared with other imports because the
+  // prefix is used to load the imported library.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the prefix `x` is used
+  // as the prefix for a deferred import and is also used for one other import:
+  //
+  // ```dart
+  // import 'dart:math' [!deferred!] as x;
+  // import 'dart:convert' as x;
+  //
+  // var y = x.json.encode(x.min(0, 1));
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you can use a different name for the deferred import, then do so:
+  //
+  // ```dart
+  // import 'dart:math' deferred as math;
+  // import 'dart:convert' as x;
+  //
+  // var y = x.json.encode(math.min(0, 1));
+  // ```
+  //
+  // If you can use a different name for the other imports, then do so:
+  //
+  // ```dart
+  // import 'dart:math' deferred as x;
+  // import 'dart:convert' as convert;
+  //
+  // var y = convert.json.encode(x.min(0, 1));
+  // ```
+  static const CompileTimeErrorCode SHARED_DEFERRED_PREFIX =
+      CompileTimeErrorCode(
+    'SHARED_DEFERRED_PREFIX',
+    "The prefix of a deferred import can't be used in other import directives.",
+    correction: "Try renaming one of the prefixes.",
+    hasPublishedDocs: true,
+  );
+
+  static const CompileTimeErrorCode SPREAD_EXPRESSION_FROM_DEFERRED_LIBRARY =
+      CompileTimeErrorCode(
+    'SPREAD_EXPRESSION_FROM_DEFERRED_LIBRARY',
+    "Constant values from a deferred library can't be spread into a const literal.",
+    correction: "Try making the deferred import non-deferred.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the instance member
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a class name is used to access
+  // an instance field. Instance fields don't exist on a class; they exist only
+  // on an instance of the class.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `x` is an instance
+  // field:
+  //
+  // ```dart
+  // %language=2.9
+  // class C {
+  //   static int a;
+  //
+  //   int b;
+  // }
+  //
+  // int f() => C.[!b!];
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you intend to access a static field, then change the name of the field
+  // to an existing static field:
+  //
+  // ```dart
+  // %language=2.9
+  // class C {
+  //   static int a;
+  //
+  //   int b;
+  // }
+  //
+  // int f() => C.a;
+  // ```
+  //
+  // If you intend to access the instance field, then use an instance of the
+  // class to access the field:
+  //
+  // ```dart
+  // %language=2.9
+  // class C {
+  //   static int a;
+  //
+  //   int b;
+  // }
+  //
+  // int f(C c) => c.b;
+  // ```
+  static const CompileTimeErrorCode STATIC_ACCESS_TO_INSTANCE_MEMBER =
+      CompileTimeErrorCode(
+    'STATIC_ACCESS_TO_INSTANCE_MEMBER',
+    "Instance member '{0}' can't be accessed using static access.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * 7.6.1 Generative Constructors: Let <i>k</i> be a generative constructor. It
+   * is a compile-time error if a generative constructor of class Object
+   * includes a superinitializer.
+   */
+  static const CompileTimeErrorCode SUPER_INITIALIZER_IN_OBJECT =
+      CompileTimeErrorCode(
+    'SUPER_INITIALIZER_IN_OBJECT',
+    "The class 'Object' can't invoke a constructor from a superclass.",
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a member declared inside an
+  // extension uses the `super` keyword . Extensions aren't classes and don't
+  // have superclasses, so the `super` keyword serves no purpose.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `super` can't be used
+  // in an extension:
+  //
+  // ```dart
+  // extension E on Object {
+  //   String get displayString => [!super!].toString();
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Remove the `super` keyword :
+  //
+  // ```dart
+  // extension E on Object {
+  //   String get displayString => toString();
+  // }
+  // ```
+  static const CompileTimeErrorCode SUPER_IN_EXTENSION = CompileTimeErrorCode(
+    'SUPER_IN_EXTENSION',
+    "The 'super' keyword can't be used in an extension because an extension doesn't have a superclass.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the keyword `super` is used
+  // outside of a instance method.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `super` is used in a
+  // top-level function:
+  //
+  // ```dart
+  // void f() {
+  //   [!super!].f();
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Rewrite the code to not use `super`.
+  static const CompileTimeErrorCode SUPER_IN_INVALID_CONTEXT =
+      CompileTimeErrorCode(
+    'SUPER_IN_INVALID_CONTEXT',
+    "Invalid context for 'super' invocation.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a constructor that redirects to
+  // another constructor also attempts to invoke a constructor from the
+  // superclass. The superclass constructor will be invoked when the constructor
+  // that the redirecting constructor is redirected to is invoked.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the constructor `C.a`
+  // both redirects to `C.b` and invokes a constructor from the superclass:
+  //
+  // ```dart
+  // class C {
+  //   C.a() : this.b(), [!super()!];
+  //   C.b();
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Remove the invocation of the `super` constructor:
+  //
+  // ```dart
+  // class C {
+  //   C.a() : this.b();
+  //   C.b();
+  // }
+  // ```
+  static const CompileTimeErrorCode SUPER_IN_REDIRECTING_CONSTRUCTOR =
+      CompileTimeErrorCode(
+    'SUPER_IN_REDIRECTING_CONSTRUCTOR',
+    "The redirecting constructor can't have a 'super' initializer.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * It is an error if any case of a switch statement except the last case (the
+   * default case if present) may complete normally. The previous syntactic
+   * restriction requiring the last statement of each case to be one of an
+   * enumerated list of statements (break, continue, return, throw, or rethrow)
+   * is removed.
+   */
+  static const CompileTimeErrorCode SWITCH_CASE_COMPLETES_NORMALLY =
+      CompileTimeErrorCode(
+    'SWITCH_CASE_COMPLETES_NORMALLY',
+    "The 'case' should not complete normally.",
+    correction: "Try adding 'break', or 'return', etc.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the static type of the switch expression
+   * 1: the static type of the case expressions
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the type of the expression in a
+  // `switch` statement isn't assignable to the type of the expressions in the
+  // `case` clauses.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the type of `s`
+  // (`String`) isn't assignable to the type of `0` (`int`):
+  //
+  // ```dart
+  // %language=2.9
+  // void f(String s) {
+  //   switch ([!s!]) {
+  //     case 0:
+  //       break;
+  //   }
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the type of the `case` expressions is correct, then change the
+  // expression in the `switch` statement to have the correct type:
+  //
+  // ```dart
+  // %language=2.9
+  // void f(String s) {
+  //   switch (int.parse(s)) {
+  //     case 0:
+  //       break;
+  //   }
+  // }
+  // ```
+  //
+  // If the type of the `switch` expression is correct, then change the `case`
+  // expressions to have the correct type:
+  //
+  // ```dart
+  // %language=2.9
+  // void f(String s) {
+  //   switch (s) {
+  //     case '0':
+  //       break;
+  //   }
+  // }
+  // ```
+  static const CompileTimeErrorCode SWITCH_EXPRESSION_NOT_ASSIGNABLE =
+      CompileTimeErrorCode(
+    'SWITCH_EXPRESSION_NOT_ASSIGNABLE',
+    "Type '{0}' of the switch expression isn't assignable to the type '{1}' of case expressions.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a generative constructor from an
+  // abstract class is being torn off. This isn't allowed because it isn't valid
+  // to create an instance of an abstract class, which means that there isn't
+  // any valid use for the torn off constructor.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the constructor `C.new`
+  // is being torn off and the class `C` is an abstract class:
+  //
+  // ```dart
+  // abstract class C {
+  //   C();
+  // }
+  //
+  // void f() {
+  //   [!C.new!];
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Tear off the constructor of a concrete class.
+  static const CompileTimeErrorCode
+      TEAROFF_OF_GENERATIVE_CONSTRUCTOR_OF_ABSTRACT_CLASS =
+      CompileTimeErrorCode(
+    'TEAROFF_OF_GENERATIVE_CONSTRUCTOR_OF_ABSTRACT_CLASS',
+    "A generative constructor of an abstract class can't be torn off.",
+    correction:
+        "Try tearing off a constructor of a concrete class, or a non-generative constructor.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the type that can't be thrown
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the type of the expression in a
+  // throw expression isn't assignable to `Object`. It isn't valid to throw
+  // `null`, so it isn't valid to use an expression that might evaluate to
+  // `null`.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because `s` might be `null`:
+  //
+  // ```dart
+  // void f(String? s) {
+  //   throw [!s!];
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Add an explicit null check to the expression:
+  //
+  // ```dart
+  // void f(String? s) {
+  //   throw s!;
+  // }
+  // ```
+  static const CompileTimeErrorCode THROW_OF_INVALID_TYPE =
+      CompileTimeErrorCode(
+    'THROW_OF_INVALID_TYPE',
+    "The type '{0}' of the thrown expression must be assignable to 'Object'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the element whose type could not be inferred.
+   * 1: The [TopLevelInferenceError]'s arguments that led to the cycle.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a top-level variable has no type
+  // annotation and the variable's initializer refers to the variable, either
+  // directly or indirectly.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the variables `x` and
+  // `y` are defined in terms of each other, and neither has an explicit type,
+  // so the type of the other can't be inferred:
+  //
+  // ```dart
+  // var x = y;
+  // var y = [!x!];
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the two variables don't need to refer to each other, then break the
+  // cycle:
+  //
+  // ```dart
+  // var x = 0;
+  // var y = x;
+  // ```
+  //
+  // If the two variables need to refer to each other, then give at least one of
+  // them an explicit type:
+  //
+  // ```dart
+  // int x = y;
+  // var y = x;
+  // ```
+  //
+  // Note, however, that while this code doesn't produce any diagnostics, it
+  // will produce a stack overflow at runtime unless at least one of the
+  // variables is assigned a value that doesn't depend on the other variables
+  // before any of the variables in the cycle are referenced.
+  static const CompileTimeErrorCode TOP_LEVEL_CYCLE = CompileTimeErrorCode(
+    'TOP_LEVEL_CYCLE',
+    "The type of '{0}' can't be inferred because it depends on itself through the cycle: {1}.",
+    correction:
+        "Try adding an explicit type to one or more of the variables in the cycle in order to break the cycle.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a typedef refers to itself,
+  // either directly or indirectly.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because `F` depends on itself
+  // indirectly through `G`:
+  //
+  // ```dart
+  // typedef [!F!] = void Function(G);
+  // typedef G = void Function(F);
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Change one or more of the typedefs in the cycle so that none of them refer
+  // to themselves:
+  //
+  // ```dart
+  // typedef F = void Function(G);
+  // typedef G = void Function(int);
+  // ```
+  static const CompileTimeErrorCode TYPE_ALIAS_CANNOT_REFERENCE_ITSELF =
+      CompileTimeErrorCode(
+    'TYPE_ALIAS_CANNOT_REFERENCE_ITSELF',
+    "Typedefs can't reference themselves directly or recursively via another typedef.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the type that is deferred and being used in a type
+   *    annotation
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the type annotation is in a
+  // variable declaration, or the type used in a cast (`as`) or type test (`is`)
+  // is a type declared in a library that is imported using a deferred import.
+  // These types are required to be available at compile time, but aren't.
+  //
+  // For more information, see the language tour's coverage of
+  // [deferred loading](https://dart.dev/guides/language/language-tour#lazily-loading-a-library).
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the type of the
+  // parameter `f` is imported from a deferred library:
+  //
+  // ```dart
+  // import 'dart:io' deferred as io;
+  //
+  // void f([!io.File!] f) {}
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you need to reference the imported type, then remove the `deferred`
+  // keyword:
+  //
+  // ```dart
+  // import 'dart:io' as io;
+  //
+  // void f(io.File f) {}
+  // ```
+  //
+  // If the import is required to be deferred and there's another type that is
+  // appropriate, then use that type in place of the type from the deferred
+  // library.
+  static const CompileTimeErrorCode TYPE_ANNOTATION_DEFERRED_CLASS =
+      CompileTimeErrorCode(
+    'TYPE_ANNOTATION_DEFERRED_CLASS',
+    "The deferred type '{0}' can't be used in a declaration, cast, or type test.",
+    correction:
+        "Try using a different type, or changing the import to not be deferred.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the type used in the instance creation that should be
+   *    limited by the bound as specified in the class declaration
+   * 1: the name of the type parameter
+   * 2: the substituted bound of the type parameter
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a type argument isn't the same
+  // as or a subclass of the bounds of the corresponding type parameter.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `String` isn't a
+  // subclass of `num`:
+  //
+  // ```dart
+  // class A<E extends num> {}
+  //
+  // var a = A<[!String!]>();
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Change the type argument to be a subclass of the bounds:
+  //
+  // ```dart
+  // class A<E extends num> {}
+  //
+  // var a = A<int>();
+  // ```
+  static const CompileTimeErrorCode TYPE_ARGUMENT_NOT_MATCHING_BOUNDS =
+      CompileTimeErrorCode(
+    'TYPE_ARGUMENT_NOT_MATCHING_BOUNDS',
+    "'{0}' doesn't conform to the bound '{2}' of the type parameter '{1}'.",
+    correction: "Try using a type that is or is a subclass of '{2}'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a static member references a
+  // type parameter that is declared for the class. Type parameters only have
+  // meaning for instances of the class.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the static method
+  // `hasType` has a reference to the type parameter `T`:
+  //
+  // ```dart
+  // class C<T> {
+  //   static bool hasType(Object o) => o is [!T!];
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the member can be an instance member, then remove the keyword `static`:
+  //
+  // ```dart
+  // class C<T> {
+  //   bool hasType(Object o) => o is T;
+  // }
+  // ```
+  //
+  // If the member must be a static member, then make the member be generic:
+  //
+  // ```dart
+  // class C<T> {
+  //   static bool hasType<S>(Object o) => o is S;
+  // }
+  // ```
+  //
+  // Note, however, that there isn’t a relationship between `T` and `S`, so this
+  // second option changes the semantics from what was likely to be intended.
+  static const CompileTimeErrorCode TYPE_PARAMETER_REFERENCED_BY_STATIC =
+      CompileTimeErrorCode(
+    'TYPE_PARAMETER_REFERENCED_BY_STATIC',
+    "Static members can't reference type parameters of the class.",
+    correction:
+        "Try removing the reference to the type parameter, or making the member an instance member.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the type parameter
+   * 1: the name of the bounding type
+   *
+   * See [CompileTimeErrorCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS].
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the bound of a type parameter
+  // (the type following the `extends` keyword) is either directly or indirectly
+  // the type parameter itself. Stating that the type parameter must be the same
+  // as itself or a subtype of itself or a subtype of itself isn't helpful
+  // because it will always be the same as itself.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the bound of `T` is
+  // `T`:
+  //
+  // ```dart
+  // class C<[!T!] extends T> {}
+  // ```
+  //
+  // The following code produces this diagnostic because the bound of `T1` is
+  // `T2`, and the bound of `T2` is `T1`, effectively making the bound of `T1`
+  // be `T1`:
+  //
+  // ```dart
+  // class C<[!T1!] extends T2, T2 extends T1> {}
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the type parameter needs to be a subclass of some type, then replace the
+  // bound with the required type:
+  //
+  // ```dart
+  // class C<T extends num> {}
+  // ```
+  //
+  // If the type parameter can be any type, then remove the `extends` clause:
+  //
+  // ```dart
+  // class C<T> {}
+  // ```
+  static const CompileTimeErrorCode TYPE_PARAMETER_SUPERTYPE_OF_ITS_BOUND =
+      CompileTimeErrorCode(
+    'TYPE_PARAMETER_SUPERTYPE_OF_ITS_BOUND',
+    "'{0}' can't be a supertype of its upper bound.",
+    correction: "Try using a type that is the same as or a subclass of '{1}'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the right-hand side of an `is`
+  // or `is!` test isn't a type.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the right-hand side is
+  // a parameter, not a type:
+  //
+  // ```dart
+  // typedef B = int Function(int);
+  //
+  // void f(Object a, B b) {
+  //   if (a is [!b!]) {
+  //     return;
+  //   }
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you intended to use a type test, then replace the right-hand side with a
+  // type:
+  //
+  // ```dart
+  // typedef B = int Function(int);
+  //
+  // void f(Object a, B b) {
+  //   if (a is B) {
+  //     return;
+  //   }
+  // }
+  // ```
+  //
+  // If you intended to use a different kind of test, then change the test:
+  //
+  // ```dart
+  // typedef B = int Function(int);
+  //
+  // void f(Object a, B b) {
+  //   if (a == b) {
+  //     return;
+  //   }
+  // }
+  // ```
+  static const CompileTimeErrorCode TYPE_TEST_WITH_NON_TYPE =
+      CompileTimeErrorCode(
+    'TYPE_TEST_WITH_NON_TYPE',
+    "The name '{0}' isn't a type and can't be used in an 'is' expression.",
+    correction: "Try correcting the name to match an existing type.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the name following the `is` in a
+  // type test expression isn't defined.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because the name `Srting` isn't
+  // defined:
+  //
+  // ```dart
+  // void f(Object o) {
+  //   if (o is [!Srting!]) {
+  //     // ...
+  //   }
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Replace the name with the name of a type:
+  //
+  // ```dart
+  // void f(Object o) {
+  //   if (o is String) {
+  //     // ...
+  //   }
+  // }
+  // ```
+  static const CompileTimeErrorCode TYPE_TEST_WITH_UNDEFINED_NAME =
+      CompileTimeErrorCode(
+    'TYPE_TEST_WITH_UNDEFINED_NAME',
+    "The name '{0}' isn't defined, so it can't be used in an 'is' expression.",
+    correction:
+        "Try changing the name to the name of an existing type, or creating a type with the name '{0}'.",
+    hasPublishedDocs: true,
+  );
+
+  static const CompileTimeErrorCode UNCHECKED_INVOCATION_OF_NULLABLE_VALUE =
+      CompileTimeErrorCode(
+    'UNCHECKED_USE_OF_NULLABLE_VALUE',
+    "The function can't be unconditionally invoked because it can be 'null'.",
+    correction: "Try adding a null check ('!').",
+    hasPublishedDocs: true,
+    uniqueName: 'UNCHECKED_INVOCATION_OF_NULLABLE_VALUE',
+  );
+
+  static const CompileTimeErrorCode
+      UNCHECKED_METHOD_INVOCATION_OF_NULLABLE_VALUE = CompileTimeErrorCode(
+    'UNCHECKED_USE_OF_NULLABLE_VALUE',
+    "The method '{0}' can't be unconditionally invoked because the receiver can be 'null'.",
+    correction:
+        "Try making the call conditional (using '?.') or adding a null check to the target ('!').",
+    hasPublishedDocs: true,
+    uniqueName: 'UNCHECKED_METHOD_INVOCATION_OF_NULLABLE_VALUE',
+  );
+
+  static const CompileTimeErrorCode
+      UNCHECKED_OPERATOR_INVOCATION_OF_NULLABLE_VALUE = CompileTimeErrorCode(
+    'UNCHECKED_USE_OF_NULLABLE_VALUE',
+    "The operator '{0}' can't be unconditionally invoked because the receiver can be 'null'.",
+    correction: "Try adding a null check to the target ('!').",
+    hasPublishedDocs: true,
+    uniqueName: 'UNCHECKED_OPERATOR_INVOCATION_OF_NULLABLE_VALUE',
+  );
+
+  static const CompileTimeErrorCode
+      UNCHECKED_PROPERTY_ACCESS_OF_NULLABLE_VALUE = CompileTimeErrorCode(
+    'UNCHECKED_USE_OF_NULLABLE_VALUE',
+    "The property '{0}' can't be unconditionally accessed because the receiver can be 'null'.",
+    correction:
+        "Try making the access conditional (using '?.') or adding a null check to the target ('!').",
+    hasPublishedDocs: true,
+    uniqueName: 'UNCHECKED_PROPERTY_ACCESS_OF_NULLABLE_VALUE',
+  );
+
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an expression whose type is
+  // [potentially non-nullable][] is dereferenced without first verifying that
+  // the value isn't `null`.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because `s` can be `null` at
+  // the point where it's referenced:
+  //
+  // ```dart
+  // void f(String? s) {
+  //   if (s.[!length!] > 3) {
+  //     // ...
+  //   }
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the value really can be `null`, then add a test to ensure that members
+  // are only accessed when the value isn't `null`:
+  //
+  // ```dart
+  // void f(String? s) {
+  //   if (s != null && s.length > 3) {
+  //     // ...
+  //   }
+  // }
+  // ```
+  //
+  // If the expression is a variable and the value should never be `null`, then
+  // change the type of the variable to be non-nullable:
+  //
+  // ```dart
+  // void f(String s) {
+  //   if (s.length > 3) {
+  //     // ...
+  //   }
+  // }
+  // ```
+  //
+  // If you believe that the value of the expression should never be `null`, but
+  // you can't change the type of the variable, and you're willing to risk
+  // having an exception thrown at runtime if you're wrong, then you can assert
+  // that the value isn't null:
+  //
+  // ```dart
+  // void f(String? s) {
+  //   if (s!.length > 3) {
+  //     // ...
+  //   }
+  // }
+  // ```
+  static const CompileTimeErrorCode
+      UNCHECKED_USE_OF_NULLABLE_VALUE_AS_CONDITION = CompileTimeErrorCode(
+    'UNCHECKED_USE_OF_NULLABLE_VALUE',
+    "A nullable expression can't be used as a condition.",
+    correction:
+        "Try checking that the value isn't 'null' before using it as a condition.",
+    hasPublishedDocs: true,
+    uniqueName: 'UNCHECKED_USE_OF_NULLABLE_VALUE_AS_CONDITION',
+  );
+
+  static const CompileTimeErrorCode
+      UNCHECKED_USE_OF_NULLABLE_VALUE_AS_ITERATOR = CompileTimeErrorCode(
+    'UNCHECKED_USE_OF_NULLABLE_VALUE',
+    "A nullable expression can't be used as an iterator in a for-in loop.",
+    correction:
+        "Try checking that the value isn't 'null' before using it as an iterator.",
+    hasPublishedDocs: true,
+    uniqueName: 'UNCHECKED_USE_OF_NULLABLE_VALUE_AS_ITERATOR',
+  );
+
+  static const CompileTimeErrorCode UNCHECKED_USE_OF_NULLABLE_VALUE_IN_SPREAD =
+      CompileTimeErrorCode(
+    'UNCHECKED_USE_OF_NULLABLE_VALUE',
+    "A nullable expression can't be used in a spread.",
+    correction:
+        "Try checking that the value isn't 'null' before using it in a spread, or use a null-aware spread.",
+    hasPublishedDocs: true,
+    uniqueName: 'UNCHECKED_USE_OF_NULLABLE_VALUE_IN_SPREAD',
+  );
+
+  static const CompileTimeErrorCode
+      UNCHECKED_USE_OF_NULLABLE_VALUE_IN_YIELD_EACH = CompileTimeErrorCode(
+    'UNCHECKED_USE_OF_NULLABLE_VALUE',
+    "A nullable expression can't be used in a yield-each statement.",
+    correction:
+        "Try checking that the value isn't 'null' before using it in a yield-each statement.",
+    hasPublishedDocs: true,
+    uniqueName: 'UNCHECKED_USE_OF_NULLABLE_VALUE_IN_YIELD_EACH',
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a name that isn't defined is
+  // used as an annotation.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because the name `undefined`
+  // isn't defined:
+  //
+  // ```dart
+  // [!@undefined!]
+  // void f() {}
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the name is correct, but it isn’t declared yet, then declare the name as
+  // a constant value:
+  //
+  // ```dart
+  // const undefined = 'undefined';
+  //
+  // @undefined
+  // void f() {}
+  // ```
+  //
+  // If the name is wrong, replace the name with the name of a valid constant:
+  //
+  // ```dart
+  // @deprecated
+  // void f() {}
+  // ```
+  //
+  // Otherwise, remove the annotation.
+  static const CompileTimeErrorCode UNDEFINED_ANNOTATION = CompileTimeErrorCode(
+    'UNDEFINED_ANNOTATION',
+    "Undefined name '{0}' used as an annotation.",
+    correction: "Try defining the name or importing it from another library.",
+    hasPublishedDocs: true,
+    isUnresolvedIdentifier: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the undefined class
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when it encounters an identifier that
+  // appears to be the name of a class but either isn't defined or isn't visible
+  // in the scope in which it's being referenced.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `Piont` isn't defined:
+  //
+  // ```dart
+  // class Point {}
+  //
+  // void f([!Piont!] p) {}
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the identifier isn't defined, then either define it or replace it with
+  // the name of a class that is defined. The example above can be corrected by
+  // fixing the spelling of the class:
+  //
+  // ```dart
+  // class Point {}
+  //
+  // void f(Point p) {}
+  // ```
+  //
+  // If the class is defined but isn't visible, then you probably need to add an
+  // import.
+  static const CompileTimeErrorCode UNDEFINED_CLASS = CompileTimeErrorCode(
+    'UNDEFINED_CLASS',
+    "Undefined class '{0}'.",
+    correction:
+        "Try changing the name to the name of an existing class, or creating a class with the name '{0}'.",
+    hasPublishedDocs: true,
+    isUnresolvedIdentifier: true,
+  );
+
+  /**
+   * Same as [CompileTimeErrorCode.UNDEFINED_CLASS], but to catch using
+   * "boolean" instead of "bool" in order to improve the correction message.
+   *
+   * Parameters:
+   * 0: the name of the undefined class
+   */
+  static const CompileTimeErrorCode UNDEFINED_CLASS_BOOLEAN =
+      CompileTimeErrorCode(
+    'UNDEFINED_CLASS',
+    "Undefined class '{0}'.",
+    correction: "Try using the type 'bool'.",
+    hasPublishedDocs: true,
+    isUnresolvedIdentifier: true,
+    uniqueName: 'UNDEFINED_CLASS_BOOLEAN',
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the superclass that does not define the invoked constructor
+   * 1: the name of the constructor being invoked
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a superclass constructor is
+  // invoked in the initializer list of a constructor, but the superclass
+  // doesn't define the constructor being invoked.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `A` doesn't have an
+  // unnamed constructor:
+  //
+  // ```dart
+  // class A {
+  //   A.n();
+  // }
+  // class B extends A {
+  //   B() : [!super()!];
+  // }
+  // ```
+  //
+  // The following code produces this diagnostic because `A` doesn't have a
+  // constructor named `m`:
+  //
+  // ```dart
+  // class A {
+  //   A.n();
+  // }
+  // class B extends A {
+  //   B() : [!super.m()!];
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the superclass defines a constructor that should be invoked, then change
+  // the constructor being invoked:
+  //
+  // ```dart
+  // class A {
+  //   A.n();
+  // }
+  // class B extends A {
+  //   B() : super.n();
+  // }
+  // ```
+  //
+  // If the superclass doesn't define an appropriate constructor, then define
+  // the constructor being invoked:
+  //
+  // ```dart
+  // class A {
+  //   A.m();
+  //   A.n();
+  // }
+  // class B extends A {
+  //   B() : super.m();
+  // }
+  // ```
+  static const CompileTimeErrorCode UNDEFINED_CONSTRUCTOR_IN_INITIALIZER =
+      CompileTimeErrorCode(
+    'UNDEFINED_CONSTRUCTOR_IN_INITIALIZER',
+    "The class '{0}' doesn't have a constructor named '{1}'.",
+    correction:
+        "Try defining a constructor named '{1}' in '{0}', or invoking a different constructor.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the superclass that does not define the invoked constructor
+   */
+  static const CompileTimeErrorCode
+      UNDEFINED_CONSTRUCTOR_IN_INITIALIZER_DEFAULT = CompileTimeErrorCode(
+    'UNDEFINED_CONSTRUCTOR_IN_INITIALIZER',
+    "The class '{0}' doesn't have an unnamed constructor.",
+    correction:
+        "Try defining an unnamed constructor in '{0}', or invoking a different constructor.",
+    hasPublishedDocs: true,
+    uniqueName: 'UNDEFINED_CONSTRUCTOR_IN_INITIALIZER_DEFAULT',
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the enumeration constant that is not defined
+   * 1: the name of the enumeration used to access the constant
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when it encounters an identifier that
+  // appears to be the name of an enum constant, and the name either isn't
+  // defined or isn't visible in the scope in which it's being referenced.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `E` doesn't define a
+  // constant named `c`:
+  //
+  // ```dart
+  // enum E {a, b}
+  //
+  // var e = E.[!c!];
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the constant should be defined, then add it to the declaration of the
+  // enum:
+  //
+  // ```dart
+  // enum E {a, b, c}
+  //
+  // var e = E.c;
+  // ```
+  //
+  // If the constant shouldn't be defined, then change the name to the name of
+  // an existing constant:
+  //
+  // ```dart
+  // enum E {a, b}
+  //
+  // var e = E.b;
+  // ```
+  static const CompileTimeErrorCode UNDEFINED_ENUM_CONSTANT =
+      CompileTimeErrorCode(
+    'UNDEFINED_ENUM_CONSTANT',
+    "There's no constant named '{0}' in '{1}'.",
+    correction:
+        "Try correcting the name to the name of an existing constant, or defining a constant named '{0}'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the getter that is undefined
+   * 1: the name of the extension that was explicitly specified
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an extension override is used to
+  // invoke a getter, but the getter isn't defined by the specified extension.
+  // The analyzer also produces this diagnostic when a static getter is
+  // referenced but isn't defined by the specified extension.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because the extension `E`
+  // doesn't declare an instance getter named `b`:
+  //
+  // ```dart
+  // extension E on String {
+  //   String get a => 'a';
+  // }
+  //
+  // extension F on String {
+  //   String get b => 'b';
+  // }
+  //
+  // void f() {
+  //   E('c').[!b!];
+  // }
+  // ```
+  //
+  // The following code produces this diagnostic because the extension `E`
+  // doesn't declare a static getter named `a`:
+  //
+  // ```dart
+  // extension E on String {}
+  //
+  // var x = E.[!a!];
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the name of the getter is incorrect, then change it to the name of an
+  // existing getter:
+  //
+  // ```dart
+  // extension E on String {
+  //   String get a => 'a';
+  // }
+  //
+  // extension F on String {
+  //   String get b => 'b';
+  // }
+  //
+  // void f() {
+  //   E('c').a;
+  // }
+  // ```
+  //
+  // If the name of the getter is correct but the name of the extension is
+  // wrong, then change the name of the extension to the correct name:
+  //
+  // ```dart
+  // extension E on String {
+  //   String get a => 'a';
+  // }
+  //
+  // extension F on String {
+  //   String get b => 'b';
+  // }
+  //
+  // void f() {
+  //   F('c').b;
+  // }
+  // ```
+  //
+  // If the name of the getter and extension are both correct, but the getter
+  // isn't defined, then define the getter:
+  //
+  // ```dart
+  // extension E on String {
+  //   String get a => 'a';
+  //   String get b => 'z';
+  // }
+  //
+  // extension F on String {
+  //   String get b => 'b';
+  // }
+  //
+  // void f() {
+  //   E('c').b;
+  // }
+  // ```
+  static const CompileTimeErrorCode UNDEFINED_EXTENSION_GETTER =
+      CompileTimeErrorCode(
+    'UNDEFINED_EXTENSION_GETTER',
+    "The getter '{0}' isn't defined for the extension '{1}'.",
+    correction:
+        "Try correcting the name to the name of an existing getter, or defining a getter named '{0}'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the method that is undefined
+   * 1: the name of the extension that was explicitly specified
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an extension override is used to
+  // invoke a method, but the method isn't defined by the specified extension.
+  // The analyzer also produces this diagnostic when a static method is
+  // referenced but isn't defined by the specified extension.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because the extension `E`
+  // doesn't declare an instance method named `b`:
+  //
+  // ```dart
+  // extension E on String {
+  //   String a() => 'a';
+  // }
+  //
+  // extension F on String {
+  //   String b() => 'b';
+  // }
+  //
+  // void f() {
+  //   E('c').[!b!]();
+  // }
+  // ```
+  //
+  // The following code produces this diagnostic because the extension `E`
+  // doesn't declare a static method named `a`:
+  //
+  // ```dart
+  // extension E on String {}
+  //
+  // var x = E.[!a!]();
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the name of the method is incorrect, then change it to the name of an
+  // existing method:
+  //
+  // ```dart
+  // extension E on String {
+  //   String a() => 'a';
+  // }
+  //
+  // extension F on String {
+  //   String b() => 'b';
+  // }
+  //
+  // void f() {
+  //   E('c').a();
+  // }
+  // ```
+  //
+  // If the name of the method is correct, but the name of the extension is
+  // wrong, then change the name of the extension to the correct name:
+  //
+  // ```dart
+  // extension E on String {
+  //   String a() => 'a';
+  // }
+  //
+  // extension F on String {
+  //   String b() => 'b';
+  // }
+  //
+  // void f() {
+  //   F('c').b();
+  // }
+  // ```
+  //
+  // If the name of the method and extension are both correct, but the method
+  // isn't defined, then define the method:
+  //
+  // ```dart
+  // extension E on String {
+  //   String a() => 'a';
+  //   String b() => 'z';
+  // }
+  //
+  // extension F on String {
+  //   String b() => 'b';
+  // }
+  //
+  // void f() {
+  //   E('c').b();
+  // }
+  // ```
+  static const CompileTimeErrorCode UNDEFINED_EXTENSION_METHOD =
+      CompileTimeErrorCode(
+    'UNDEFINED_EXTENSION_METHOD',
+    "The method '{0}' isn't defined for the extension '{1}'.",
+    correction:
+        "Try correcting the name to the name of an existing method, or defining a method named '{0}'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the operator that is undefined
+   * 1: the name of the extension that was explicitly specified
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an operator is invoked on a
+  // specific extension when that extension doesn't implement the operator.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the extension `E`
+  // doesn't define the operator `*`:
+  //
+  // ```dart
+  // var x = E('') [!*!] 4;
+  //
+  // extension E on String {}
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the extension is expected to implement the operator, then add an
+  // implementation of the operator to the extension:
+  //
+  // ```dart
+  // var x = E('') * 4;
+  //
+  // extension E on String {
+  //   int operator *(int multiplier) => length * multiplier;
+  // }
+  // ```
+  //
+  // If the operator is defined by a different extension, then change the name
+  // of the extension to the name of the one that defines the operator.
+  //
+  // If the operator is defined on the argument of the extension override, then
+  // remove the extension override:
+  //
+  // ```dart
+  // var x = '' * 4;
+  //
+  // extension E on String {}
+  // ```
+  static const CompileTimeErrorCode UNDEFINED_EXTENSION_OPERATOR =
+      CompileTimeErrorCode(
+    'UNDEFINED_EXTENSION_OPERATOR',
+    "The operator '{0}' isn't defined for the extension '{1}'.",
+    correction: "Try defining the operator '{0}'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the setter that is undefined
+   * 1: the name of the extension that was explicitly specified
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an extension override is used to
+  // invoke a setter, but the setter isn't defined by the specified extension.
+  // The analyzer also produces this diagnostic when a static setter is
+  // referenced but isn't defined by the specified extension.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because the extension `E`
+  // doesn't declare an instance setter named `b`:
+  //
+  // ```dart
+  // extension E on String {
+  //   set a(String v) {}
+  // }
+  //
+  // extension F on String {
+  //   set b(String v) {}
+  // }
+  //
+  // void f() {
+  //   E('c').[!b!] = 'd';
+  // }
+  // ```
+  //
+  // The following code produces this diagnostic because the extension `E`
+  // doesn't declare a static setter named `a`:
+  //
+  // ```dart
+  // extension E on String {}
+  //
+  // void f() {
+  //   E.[!a!] = 3;
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the name of the setter is incorrect, then change it to the name of an
+  // existing setter:
+  //
+  // ```dart
+  // extension E on String {
+  //   set a(String v) {}
+  // }
+  //
+  // extension F on String {
+  //   set b(String v) {}
+  // }
+  //
+  // void f() {
+  //   E('c').a = 'd';
+  // }
+  // ```
+  //
+  // If the name of the setter is correct, but the name of the extension is
+  // wrong, then change the name of the extension to the correct name:
+  //
+  // ```dart
+  // extension E on String {
+  //   set a(String v) {}
+  // }
+  //
+  // extension F on String {
+  //   set b(String v) {}
+  // }
+  //
+  // void f() {
+  //   F('c').b = 'd';
+  // }
+  // ```
+  //
+  // If the name of the setter and extension are both correct, but the setter
+  // isn't defined, then define the setter:
+  //
+  // ```dart
+  // extension E on String {
+  //   set a(String v) {}
+  //   set b(String v) {}
+  // }
+  //
+  // extension F on String {
+  //   set b(String v) {}
+  // }
+  //
+  // void f() {
+  //   E('c').b = 'd';
+  // }
+  // ```
+  static const CompileTimeErrorCode UNDEFINED_EXTENSION_SETTER =
+      CompileTimeErrorCode(
+    'UNDEFINED_EXTENSION_SETTER',
+    "The setter '{0}' isn't defined for the extension '{1}'.",
+    correction:
+        "Try correcting the name to the name of an existing setter, or defining a setter named '{0}'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the method that is undefined
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when it encounters an identifier that
+  // appears to be the name of a function but either isn't defined or isn't
+  // visible in the scope in which it's being referenced.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because the name `emty` isn't
+  // defined:
+  //
+  // ```dart
+  // List<int> empty() => [];
+  //
+  // void main() {
+  //   print([!emty!]());
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the identifier isn't defined, then either define it or replace it with
+  // the name of a function that is defined. The example above can be corrected
+  // by fixing the spelling of the function:
+  //
+  // ```dart
+  // List<int> empty() => [];
+  //
+  // void main() {
+  //   print(empty());
+  // }
+  // ```
+  //
+  // If the function is defined but isn't visible, then you probably need to add
+  // an import or re-arrange your code to make the function visible.
+  static const CompileTimeErrorCode UNDEFINED_FUNCTION = CompileTimeErrorCode(
+    'UNDEFINED_FUNCTION',
+    "The function '{0}' isn't defined.",
+    correction:
+        "Try importing the library that defines '{0}', correcting the name to the name of an existing function, or defining a function named '{0}'.",
+    hasPublishedDocs: true,
+    isUnresolvedIdentifier: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the getter
+   * 1: the name of the enclosing type where the getter is being looked for
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when it encounters an identifier that
+  // appears to be the name of a getter but either isn't defined or isn't
+  // visible in the scope in which it's being referenced.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `String` has no member
+  // named `len`:
+  //
+  // ```dart
+  // int f(String s) => s.[!len!];
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the identifier isn't defined, then either define it or replace it with
+  // the name of a getter that is defined. The example above can be corrected by
+  // fixing the spelling of the getter:
+  //
+  // ```dart
+  // int f(String s) => s.length;
+  // ```
+  static const CompileTimeErrorCode UNDEFINED_GETTER = CompileTimeErrorCode(
+    'UNDEFINED_GETTER',
+    "The getter '{0}' isn't defined for the type '{1}'.",
+    correction:
+        "Try importing the library that defines '{0}', correcting the name to the name of an existing getter, or defining a getter or field named '{0}'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the getter
+   * 1: the name of the function type alias
+   */
+  static const CompileTimeErrorCode UNDEFINED_GETTER_ON_FUNCTION_TYPE =
+      CompileTimeErrorCode(
+    'UNDEFINED_GETTER',
+    "The getter '{0}' isn't defined for the '{1}' function type.",
+    correction:
+        "Try wrapping the function type alias in parentheses in order to access '{0}' as an extension getter on 'Type'.",
+    hasPublishedDocs: true,
+    uniqueName: 'UNDEFINED_GETTER_ON_FUNCTION_TYPE',
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the identifier
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when it encounters an identifier that
+  // either isn't defined or isn't visible in the scope in which it's being
+  // referenced.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because the name `rihgt` isn't
+  // defined:
+  //
+  // ```dart
+  // int min(int left, int right) => left <= [!rihgt!] ? left : right;
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the identifier isn't defined, then either define it or replace it with
+  // an identifier that is defined. The example above can be corrected by
+  // fixing the spelling of the variable:
+  //
+  // ```dart
+  // int min(int left, int right) => left <= right ? left : right;
+  // ```
+  //
+  // If the identifier is defined but isn't visible, then you probably need to
+  // add an import or re-arrange your code to make the identifier visible.
+  static const CompileTimeErrorCode UNDEFINED_IDENTIFIER = CompileTimeErrorCode(
+    'UNDEFINED_IDENTIFIER',
+    "Undefined name '{0}'.",
+    correction:
+        "Try correcting the name to one that is defined, or defining the name.",
+    hasPublishedDocs: true,
+    isUnresolvedIdentifier: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the name `await` is used in a
+  // method or function body without being declared, and the body isn't marked
+  // with the `async` keyword. The name `await` only introduces an await
+  // expression in an asynchronous function.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the name `await` is
+  // used in the body of `f` even though the body of `f` isn't marked with the
+  // `async` keyword:
+  //
+  // ```dart
+  // void f(p) { [!await!] p; }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Add the keyword `async` to the function body:
+  //
+  // ```dart
+  // void f(p) async { await p; }
+  // ```
+  static const CompileTimeErrorCode UNDEFINED_IDENTIFIER_AWAIT =
+      CompileTimeErrorCode(
+    'UNDEFINED_IDENTIFIER_AWAIT',
+    "Undefined name 'await' in function body not marked with 'async'.",
+    correction:
+        "Try correcting the name to one that is defined, defining the name, or adding 'async' to the enclosing function body.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the method that is undefined
+   * 1: the resolved type name that the method lookup is happening on
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when it encounters an identifier that
+  // appears to be the name of a method but either isn't defined or isn't
+  // visible in the scope in which it's being referenced.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because the identifier
+  // `removeMiddle` isn't defined:
+  //
+  // ```dart
+  // int f(List<int> l) => l.[!removeMiddle!]();
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the identifier isn't defined, then either define it or replace it with
+  // the name of a method that is defined. The example above can be corrected by
+  // fixing the spelling of the method:
+  //
+  // ```dart
+  // int f(List<int> l) => l.removeLast();
+  // ```
+  static const CompileTimeErrorCode UNDEFINED_METHOD = CompileTimeErrorCode(
+    'UNDEFINED_METHOD',
+    "The method '{0}' isn't defined for the type '{1}'.",
+    correction:
+        "Try correcting the name to the name of an existing method, or defining a method named '{0}'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the method
+   * 1: the name of the function type alias
+   */
+  static const CompileTimeErrorCode UNDEFINED_METHOD_ON_FUNCTION_TYPE =
+      CompileTimeErrorCode(
+    'UNDEFINED_METHOD',
+    "The method '{0}' isn't defined for the '{1}' function type.",
+    correction:
+        "Try wrapping the function type alias in parentheses in order to access '{0}' as an extension method on 'Type'.",
+    hasPublishedDocs: true,
+    uniqueName: 'UNDEFINED_METHOD_ON_FUNCTION_TYPE',
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the requested named parameter
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a method or function invocation
+  // has a named argument, but the method or function being invoked doesn't
+  // define a parameter with the same name.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `m` doesn't declare a
+  // named parameter named `a`:
+  //
+  // ```dart
+  // %language=2.9
+  // class C {
+  //   m({int b}) {}
+  // }
+  //
+  // void f(C c) {
+  //   c.m([!a!]: 1);
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the argument name is mistyped, then replace it with the correct name.
+  // The example above can be fixed by changing `a` to `b`:
+  //
+  // ```dart
+  // %language=2.9
+  // class C {
+  //   m({int b}) {}
+  // }
+  //
+  // void f(C c) {
+  //   c.m(b: 1);
+  // }
+  // ```
+  //
+  // If a subclass adds a parameter with the name in question, then cast the
+  // receiver to the subclass:
+  //
+  // ```dart
+  // %language=2.9
+  // class C {
+  //   m({int b}) {}
+  // }
+  //
+  // class D extends C {
+  //   m({int a, int b}) {}
+  // }
+  //
+  // void f(C c) {
+  //   (c as D).m(a: 1);
+  // }
+  // ```
+  //
+  // If the parameter should be added to the function, then add it:
+  //
+  // ```dart
+  // %language=2.9
+  // class C {
+  //   m({int a, int b}) {}
+  // }
+  //
+  // void f(C c) {
+  //   c.m(a: 1);
+  // }
+  // ```
+  static const CompileTimeErrorCode UNDEFINED_NAMED_PARAMETER =
+      CompileTimeErrorCode(
+    'UNDEFINED_NAMED_PARAMETER',
+    "The named parameter '{0}' isn't defined.",
+    correction:
+        "Try correcting the name to an existing named parameter's name, or defining a named parameter with the name '{0}'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the operator
+   * 1: the name of the enclosing type where the operator is being looked for
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a user-definable operator is
+  // invoked on an object for which the operator isn't defined.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because the class `C` doesn't
+  // define the operator `+`:
+  //
+  // ```dart
+  // class C {}
+  //
+  // C f(C c) => c [!+!] 2;
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the operator should be defined for the class, then define it:
+  //
+  // ```dart
+  // class C {
+  //   C operator +(int i) => this;
+  // }
+  //
+  // C f(C c) => c + 2;
+  // ```
+  static const CompileTimeErrorCode UNDEFINED_OPERATOR = CompileTimeErrorCode(
+    'UNDEFINED_OPERATOR',
+    "The operator '{0}' isn't defined for the type '{1}'.",
+    correction: "Try defining the operator '{0}'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a prefixed identifier is found
+  // where the prefix is valid, but the identifier isn't declared in any of the
+  // libraries imported using that prefix.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `dart:core` doesn't
+  // define anything named `a`:
+  //
+  // ```dart
+  // import 'dart:core' as p;
+  //
+  // void f() {
+  //   p.[!a!];
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the library in which the name is declared isn't imported yet, add an
+  // import for the library.
+  //
+  // If the name is wrong, then change it to one of the names that's declared in
+  // the imported libraries.
+  static const CompileTimeErrorCode UNDEFINED_PREFIXED_NAME =
+      CompileTimeErrorCode(
+    'UNDEFINED_PREFIXED_NAME',
+    "The name '{0}' is being referenced through the prefix '{1}', but it isn't defined in any of the libraries imported using that prefix.",
+    correction:
+        "Try correcting the prefix or importing the library that defines '{0}'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the setter
+   * 1: the name of the enclosing type where the setter is being looked for
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when it encounters an identifier that
+  // appears to be the name of a setter but either isn't defined or isn't
+  // visible in the scope in which the identifier is being referenced.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because there isn't a setter
+  // named `z`:
+  //
+  // ```dart
+  // class C {
+  //   int x = 0;
+  //   void m(int y) {
+  //     this.[!z!] = y;
+  //   }
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the identifier isn't defined, then either define it or replace it with
+  // the name of a setter that is defined. The example above can be corrected by
+  // fixing the spelling of the setter:
+  //
+  // ```dart
+  // class C {
+  //   int x = 0;
+  //   void m(int y) {
+  //     this.x = y;
+  //   }
+  // }
+  // ```
+  static const CompileTimeErrorCode UNDEFINED_SETTER = CompileTimeErrorCode(
+    'UNDEFINED_SETTER',
+    "The setter '{0}' isn't defined for the type '{1}'.",
+    correction:
+        "Try importing the library that defines '{0}', correcting the name to the name of an existing setter, or defining a setter or field named '{0}'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the setter
+   * 1: the name of the function type alias
+   */
+  static const CompileTimeErrorCode UNDEFINED_SETTER_ON_FUNCTION_TYPE =
+      CompileTimeErrorCode(
+    'UNDEFINED_SETTER',
+    "The setter '{0}' isn't defined for the '{1}' function type.",
+    correction:
+        "Try wrapping the function type alias in parentheses in order to access '{0}' as an extension getter on 'Type'.",
+    hasPublishedDocs: true,
+    uniqueName: 'UNDEFINED_SETTER_ON_FUNCTION_TYPE',
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the getter
+   * 1: the name of the enclosing type where the getter is being looked for
+   */
+  static const CompileTimeErrorCode UNDEFINED_SUPER_GETTER =
+      CompileTimeErrorCode(
+    'UNDEFINED_SUPER_MEMBER',
+    "The getter '{0}' isn't defined in a superclass of '{1}'.",
+    correction:
+        "Try correcting the name to the name of an existing getter, or defining a getter or field named '{0}' in a superclass.",
+    hasPublishedDocs: true,
+    uniqueName: 'UNDEFINED_SUPER_GETTER',
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the method that is undefined
+   * 1: the resolved type name that the method lookup is happening on
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an inherited member (method,
+  // getter, setter, or operator) is referenced using `super`, but there’s no
+  // member with that name in the superclass chain.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `Object` doesn't define
+  // a method named `n`:
+  //
+  // ```dart
+  // class C {
+  //   void m() {
+  //     super.[!n!]();
+  //   }
+  // }
+  // ```
+  //
+  // The following code produces this diagnostic because `Object` doesn't define
+  // a getter named `g`:
+  //
+  // ```dart
+  // class C {
+  //   void m() {
+  //     super.[!g!];
+  //   }
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the inherited member you intend to invoke has a different name, then
+  // make the name of the invoked member match the inherited member.
+  //
+  // If the member you intend to invoke is defined in the same class, then
+  // remove the `super.`.
+  //
+  // If the member isn’t defined, then either add the member to one of the
+  // superclasses or remove the invocation.
+  static const CompileTimeErrorCode UNDEFINED_SUPER_METHOD =
+      CompileTimeErrorCode(
+    'UNDEFINED_SUPER_MEMBER',
+    "The method '{0}' isn't defined in a superclass of '{1}'.",
+    correction:
+        "Try correcting the name to the name of an existing method, or defining a method named '{0}' in a superclass.",
+    hasPublishedDocs: true,
+    uniqueName: 'UNDEFINED_SUPER_METHOD',
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the operator
+   * 1: the name of the enclosing type where the operator is being looked for
+   */
+  static const CompileTimeErrorCode UNDEFINED_SUPER_OPERATOR =
+      CompileTimeErrorCode(
+    'UNDEFINED_SUPER_MEMBER',
+    "The operator '{0}' isn't defined in a superclass of '{1}'.",
+    correction: "Try defining the operator '{0}' in a superclass.",
+    hasPublishedDocs: true,
+    uniqueName: 'UNDEFINED_SUPER_OPERATOR',
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the setter
+   * 1: the name of the enclosing type where the setter is being looked for
+   */
+  static const CompileTimeErrorCode UNDEFINED_SUPER_SETTER =
+      CompileTimeErrorCode(
+    'UNDEFINED_SUPER_MEMBER',
+    "The setter '{0}' isn't defined in a superclass of '{1}'.",
+    correction:
+        "Try correcting the name to the name of an existing setter, or defining a setter or field named '{0}' in a superclass.",
+    hasPublishedDocs: true,
+    uniqueName: 'UNDEFINED_SUPER_SETTER',
+  );
+
+  /**
+   * This is a specialization of [INSTANCE_ACCESS_TO_STATIC_MEMBER] that is used
+   * when we are able to find the name defined in a supertype. It exists to
+   * provide a more informative error message.
+   *
+   * Parameters:
+   * 0: the name of the defining type
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when code in one class references a
+  // static member in a superclass without prefixing the member's name with the
+  // name of the superclass. Static members can only be referenced without a
+  // prefix in the class in which they're declared.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the static field `x` is
+  // referenced in the getter `g` without prefixing it with the name of the
+  // defining class:
+  //
+  // ```dart
+  // class A {
+  //   static int x = 3;
+  // }
+  //
+  // class B extends A {
+  //   int get g => [!x!];
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Prefix the name of the static member with the name of the declaring class:
+  //
+  // ```dart
+  // class A {
+  //   static int x = 3;
+  // }
+  //
+  // class B extends A {
+  //   int get g => A.x;
+  // }
+  // ```
+  static const CompileTimeErrorCode
+      UNQUALIFIED_REFERENCE_TO_NON_LOCAL_STATIC_MEMBER = CompileTimeErrorCode(
+    'UNQUALIFIED_REFERENCE_TO_NON_LOCAL_STATIC_MEMBER',
+    "Static members from supertypes must be qualified by the name of the defining type.",
+    correction: "Try adding '{0}.' before the name.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the defining type
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an undefined name is found, and
+  // the name is the same as a static member of the extended type or one of its
+  // superclasses.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `m` is a static member
+  // of the extended type `C`:
+  //
+  // ```dart
+  // class C {
+  //   static void m() {}
+  // }
+  //
+  // extension E on C {
+  //   void f() {
+  //     [!m!]();
+  //   }
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you're trying to reference a static member that's declared outside the
+  // extension, then add the name of the class or extension before the reference
+  // to the member:
+  //
+  // ```dart
+  // class C {
+  //   static void m() {}
+  // }
+  //
+  // extension E on C {
+  //   void f() {
+  //     C.m();
+  //   }
+  // }
+  // ```
+  //
+  // If you're referencing a member that isn't declared yet, add a declaration:
+  //
+  // ```dart
+  // class C {
+  //   static void m() {}
+  // }
+  //
+  // extension E on C {
+  //   void f() {
+  //     m();
+  //   }
+  //
+  //   void m() {}
+  // }
+  // ```
+  static const CompileTimeErrorCode
+      UNQUALIFIED_REFERENCE_TO_STATIC_MEMBER_OF_EXTENDED_TYPE =
+      CompileTimeErrorCode(
+    'UNQUALIFIED_REFERENCE_TO_STATIC_MEMBER_OF_EXTENDED_TYPE',
+    "Static members from the extended type or one of its superclasses must be qualified by the name of the defining type.",
+    correction: "Try adding '{0}.' before the name.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the URI pointing to a non-existent file
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an import, export, or part
+  // directive is found where the URI refers to a file that doesn't exist.
+  //
+  // #### Examples
+  //
+  // If the file `lib.dart` doesn't exist, the following code produces this
+  // diagnostic:
+  //
+  // ```dart
+  // import [!'lib.dart'!];
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the URI was mistyped or invalid, then correct the URI.
+  //
+  // If the URI is correct, then create the file.
+  static const CompileTimeErrorCode URI_DOES_NOT_EXIST = CompileTimeErrorCode(
+    'URI_DOES_NOT_EXIST',
+    "Target of URI doesn't exist: '{0}'.",
+    correction:
+        "Try creating the file referenced by the URI, or Try using a URI for a file that does exist.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the URI pointing to a non-existent file
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an import, export, or part
+  // directive is found where the URI refers to a file that doesn't exist and
+  // the name of the file ends with a pattern that's commonly produced by code
+  // generators, such as one of the following:
+  // - `.g.dart`
+  // - `.pb.dart`
+  // - `.pbenum.dart`
+  // - `.pbserver.dart`
+  // - `.pbjson.dart`
+  // - `.template.dart`
+  //
+  // #### Examples
+  //
+  // If the file `lib.g.dart` doesn't exist, the following code produces this
+  // diagnostic:
+  //
+  // ```dart
+  // import [!'lib.g.dart'!];
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the file is a generated file, then run the generator that generates the
+  // file.
+  //
+  // If the file isn't a generated file, then check the spelling of the URI or
+  // create the file.
+  static const CompileTimeErrorCode URI_HAS_NOT_BEEN_GENERATED =
+      CompileTimeErrorCode(
+    'URI_HAS_NOT_BEEN_GENERATED',
+    "Target of URI hasn't been generated: '{0}'.",
+    correction:
+        "Try running the generator that will generate the file referenced by the URI.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the string literal in an
+  // `import`, `export`, or `part` directive contains an interpolation. The
+  // resolution of the URIs in directives must happen before the declarations
+  // are compiled, so expressions can’t be  evaluated  while determining the
+  // values of the URIs.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the string in the
+  // `import` directive contains an interpolation:
+  //
+  // ```dart
+  // import [!'dart:$m'!];
+  //
+  // const m = 'math';
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Remove the interpolation from the URI:
+  //
+  // ```dart
+  // import 'dart:math';
+  //
+  // var zero = min(0, 0);
+  // ```
+  static const CompileTimeErrorCode URI_WITH_INTERPOLATION =
+      CompileTimeErrorCode(
+    'URI_WITH_INTERPOLATION',
+    "URIs can't use string interpolation.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when it finds an expression whose
+  // type is `void`, and the expression is used in a place where a value is
+  // expected, such as before a member access or on the right-hand side of an
+  // assignment.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `f` doesn't produce an
+  // object on which `toString` can be invoked:
+  //
+  // ```dart
+  // void f() {}
+  //
+  // void g() {
+  //   [!f()!].toString();
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Either rewrite the code so that the expression has a value or rewrite the
+  // code so that it doesn't depend on the value.
+  static const CompileTimeErrorCode USE_OF_VOID_RESULT = CompileTimeErrorCode(
+    'USE_OF_VOID_RESULT',
+    "This expression has a type of 'void' so its value can't be used.",
+    correction:
+        "Try checking to see if you're using the correct API; there might be a function or call that returns void you didn't expect. Also check type parameters and variables which might also be void.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the type of the object being assigned.
+   * 1: the type of the variable being assigned to
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the evaluation of a constant
+  // expression would result in a `CastException`.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because the value of `x` is an
+  // `int`, which can't be assigned to `y` because an `int` isn't a `String`:
+  //
+  // ```dart
+  // %language=2.9
+  // const Object x = 0;
+  // const String y = [!x!];
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the declaration of the constant is correct, then change the value being
+  // assigned to be of the correct type:
+  //
+  // ```dart
+  // %language=2.9
+  // const Object x = 0;
+  // const String y = '$x';
+  // ```
+  //
+  // If the assigned value is correct, then change the declaration to have the
+  // correct type:
+  //
+  // ```dart
+  // %language=2.9
+  // const Object x = 0;
+  // const int y = x;
+  // ```
+  static const CompileTimeErrorCode VARIABLE_TYPE_MISMATCH =
+      CompileTimeErrorCode(
+    'VARIABLE_TYPE_MISMATCH',
+    "A value of type '{0}' can't be assigned to a const variable of type '{1}'.",
+    correction: "Try using a subtype, or removing the 'const' keyword",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Let `C` be a generic class that declares a formal type parameter `X`, and
+   * assume that `T` is a direct superinterface of `C`.
+   *
+   * It is a compile-time error if `X` is explicitly defined as a covariant or
+   * 'in' type parameter and `X` occurs in a non-covariant position in `T`.
+   * It is a compile-time error if `X` is explicitly defined as a contravariant
+   * or 'out' type parameter and `X` occurs in a non-contravariant position in
+   * `T`.
+   *
+   * Parameters:
+   * 0: the name of the type parameter
+   * 1: the variance modifier defined for {0}
+   * 2: the variance position of the type parameter {0} in the
+   *    superinterface {3}
+   * 3: the name of the superinterface
+   */
+  static const CompileTimeErrorCode
+      WRONG_EXPLICIT_TYPE_PARAMETER_VARIANCE_IN_SUPERINTERFACE =
+      CompileTimeErrorCode(
+    'WRONG_EXPLICIT_TYPE_PARAMETER_VARIANCE_IN_SUPERINTERFACE',
+    "'{0}' is an '{1}' type parameter and can't be used in an '{2}' position in '{3}'.",
+    correction:
+        "Try using 'in' type parameters in 'in' positions and 'out' type parameters in 'out' positions in the superinterface.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the declared operator
+   * 1: the number of parameters expected
+   * 2: the number of parameters found in the operator declaration
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a declaration of an operator has
+  // the wrong number of parameters.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because the operator `+` must
+  // have a single parameter corresponding to the right operand:
+  //
+  // ```dart
+  // class C {
+  //   int operator [!+!](a, b) => 0;
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Add or remove parameters to match the required number:
+  //
+  // ```dart
+  // class C {
+  //   int operator +(a) => 0;
+  // }
+  // ```
+  // TODO(brianwilkerson) It would be good to add a link to the spec or some
+  //  other documentation that lists the number of parameters for each operator,
+  //  but I don't know what to link to.
+  static const CompileTimeErrorCode WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR =
+      CompileTimeErrorCode(
+    'WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR',
+    "Operator '{0}' should declare exactly {1} parameters, but {2} found.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * 7.1.1 Operators: It is a compile time error if the arity of the
+   * user-declared operator - is not 0 or 1.
+   *
+   * Parameters:
+   * 0: the number of parameters found in the operator declaration
+   */
+  static const CompileTimeErrorCode
+      WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR_MINUS = CompileTimeErrorCode(
+    'WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR',
+    "Operator '-' should declare 0 or 1 parameter, but {0} found.",
+    hasPublishedDocs: true,
+    uniqueName: 'WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR_MINUS',
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a setter is found that doesn't
+  // declare exactly one required positional parameter.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because the setter `s` declares
+  // two required parameters:
+  //
+  // ```dart
+  // %language=2.9
+  // class C {
+  //   set [!s!](int x, int y) {}
+  // }
+  // ```
+  //
+  // The following code produces this diagnostic because the setter `s` declares
+  // one optional parameter:
+  //
+  // ```dart
+  // %language=2.9
+  // class C {
+  //   set [!s!]([int x]) {}
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Change the declaration so that there's exactly one required positional
+  // parameter:
+  //
+  // ```dart
+  // %language=2.9
+  // class C {
+  //   set s(int x) {}
+  // }
+  // ```
+  static const CompileTimeErrorCode WRONG_NUMBER_OF_PARAMETERS_FOR_SETTER =
+      CompileTimeErrorCode(
+    'WRONG_NUMBER_OF_PARAMETERS_FOR_SETTER',
+    "Setters must declare exactly one required positional parameter.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the type being referenced (<i>G</i>)
+   * 1: the number of type parameters that were declared
+   * 2: the number of type arguments provided
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a type that has type parameters
+  // is used and type arguments are provided, but the number of type arguments
+  // isn't the same as the number of type parameters.
+  //
+  // The analyzer also produces this diagnostic when a constructor is invoked
+  // and the number of type arguments doesn't match the number of type
+  // parameters declared for the class.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because `C` has one type
+  // parameter but two type arguments are provided when it is used as a type
+  // annotation:
+  //
+  // ```dart
+  // class C<E> {}
+  //
+  // void f([!C<int, int>!] x) {}
+  // ```
+  //
+  // The following code produces this diagnostic because `C` declares one type
+  // parameter, but two type arguments are provided when creating an instance:
+  //
+  // ```dart
+  // class C<E> {}
+  //
+  // var c = [!C<int, int>!]();
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Add or remove type arguments, as necessary, to match the number of type
+  // parameters defined for the type:
+  //
+  // ```dart
+  // class C<E> {}
+  //
+  // void f(C<int> x) {}
+  // ```
+  static const CompileTimeErrorCode WRONG_NUMBER_OF_TYPE_ARGUMENTS =
+      CompileTimeErrorCode(
+    'WRONG_NUMBER_OF_TYPE_ARGUMENTS',
+    "The type '{0}' is declared with {1} type parameters, but {2} type arguments were given.",
+    correction:
+        "Try adjusting the number of type arguments to match the number of type parameters.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the number of type parameters that were declared
+   * 1: the number of type arguments provided
+   */
+  static const CompileTimeErrorCode
+      WRONG_NUMBER_OF_TYPE_ARGUMENTS_ANONYMOUS_FUNCTION = CompileTimeErrorCode(
+    'WRONG_NUMBER_OF_TYPE_ARGUMENTS_FUNCTION',
+    "This function is declared with {0} type parameters, but {1} type arguments were given.",
+    correction:
+        "Try adjusting the number of type arguments to match the number of type parameters.",
+    uniqueName: 'WRONG_NUMBER_OF_TYPE_ARGUMENTS_ANONYMOUS_FUNCTION',
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the class being instantiated
+   * 1: the name of the constructor being invoked
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when type arguments are provided
+  // after the name of a named constructor. Constructors can't declare type
+  // parameters, so invocations can only provide the type arguments associated
+  // with the class, and those type arguments are required to follow the name of
+  // the class rather than the name of the constructor.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the type parameters
+  // (`<String>`) follow the name of the constructor rather than the name of the
+  // class:
+  //
+  // ```dart
+  // class C<T> {
+  //   C.named();
+  // }
+  // C f() => C.named[!<String>!]();
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the type arguments are for the class' type parameters, then move the
+  // type arguments to follow the class name:
+  //
+  // ```dart
+  // class C<T> {
+  //   C.named();
+  // }
+  // C f() => C<String>.named();
+  // ```
+  //
+  // If the type arguments aren't for the class' type parameters, then remove
+  // them:
+  //
+  // ```dart
+  // class C<T> {
+  //   C.named();
+  // }
+  // C f() => C.named();
+  // ```
+  static const CompileTimeErrorCode WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR =
+      CompileTimeErrorCode(
+    'WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR',
+    "The constructor '{0}.{1}' doesn't have type parameters.",
+    correction: "Try moving type arguments to after the type name.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the extension being referenced
+   * 1: the number of type parameters that were declared
+   * 2: the number of type arguments provided
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an extension that has type
+  // parameters is used and type arguments are provided, but the number of type
+  // arguments isn't the same as the number of type parameters.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the extension `E` is
+  // declared to have a single type parameter (`T`), but the extension override
+  // has two type arguments:
+  //
+  // ```dart
+  // extension E<T> on List<T> {
+  //   int get len => length;
+  // }
+  //
+  // void f(List<int> p) {
+  //   E[!<int, String>!](p).len;
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Change the type arguments so that there are the same number of type
+  // arguments as there are type parameters:
+  //
+  // ```dart
+  // extension E<T> on List<T> {
+  //   int get len => length;
+  // }
+  //
+  // void f(List<int> p) {
+  //   E<int>(p).len;
+  // }
+  // ```
+  static const CompileTimeErrorCode WRONG_NUMBER_OF_TYPE_ARGUMENTS_EXTENSION =
+      CompileTimeErrorCode(
+    'WRONG_NUMBER_OF_TYPE_ARGUMENTS_EXTENSION',
+    "The extension '{0}' is declared with {1} type parameters, but {2} type arguments were given.",
+    correction: "Try adjusting the number of type arguments.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the function being referenced
+   * 1: the number of type parameters that were declared
+   * 2: the number of type arguments provided
+   */
+  static const CompileTimeErrorCode WRONG_NUMBER_OF_TYPE_ARGUMENTS_FUNCTION =
+      CompileTimeErrorCode(
+    'WRONG_NUMBER_OF_TYPE_ARGUMENTS_FUNCTION',
+    "The function '{0}' is declared with {1} type parameters, but {2} type arguments were given.",
+    correction:
+        "Try adjusting the number of type arguments to match the number of type parameters.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the method being referenced (<i>G</i>)
+   * 1: the number of type parameters that were declared
+   * 2: the number of type arguments provided
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a method or function is invoked
+  // with a different number of type arguments than the number of type
+  // parameters specified in its declaration. There must either be no type
+  // arguments or the number of arguments must match the number of parameters.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the invocation of the
+  // method `m` has two type arguments, but the declaration of `m` only has one
+  // type parameter:
+  //
+  // ```dart
+  // class C {
+  //   int m<A>(A a) => 0;
+  // }
+  //
+  // int f(C c) => c.m[!<int, int>!](2);
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the type arguments are necessary, then make them match the number of
+  // type parameters by either adding or removing type arguments:
+  //
+  // ```dart
+  // class C {
+  //   int m<A>(A a) => 0;
+  // }
+  //
+  // int f(C c) => c.m<int>(2);
+  // ```
+  //
+  // If the type arguments aren't necessary, then remove them:
+  //
+  // ```dart
+  // class C {
+  //   int m<A>(A a) => 0;
+  // }
+  //
+  // int f(C c) => c.m(2);
+  // ```
+  static const CompileTimeErrorCode WRONG_NUMBER_OF_TYPE_ARGUMENTS_METHOD =
+      CompileTimeErrorCode(
+    'WRONG_NUMBER_OF_TYPE_ARGUMENTS_METHOD',
+    "The method '{0}' is declared with {1} type parameters, but {2} type arguments are given.",
+    correction: "Try adjusting the number of type arguments.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Let `C` be a generic class that declares a formal type parameter `X`, and
+   * assume that `T` is a direct superinterface of `C`. It is a compile-time
+   * error if `X` occurs contravariantly or invariantly in `T`.
+   */
+  static const CompileTimeErrorCode
+      WRONG_TYPE_PARAMETER_VARIANCE_IN_SUPERINTERFACE = CompileTimeErrorCode(
+    'WRONG_TYPE_PARAMETER_VARIANCE_IN_SUPERINTERFACE',
+    "'{0}' can't be used contravariantly or invariantly in '{1}'.",
+    correction:
+        "Try not using class type parameters in types of formal parameters of function types, nor in explicitly contravariant or invariant superinterfaces.",
+  );
+
+  /**
+   * Let `C` be a generic class that declares a formal type parameter `X`.
+   *
+   * If `X` is explicitly contravariant then it is a compile-time error for
+   * `X` to occur in a non-contravariant position in a member signature in the
+   * body of `C`, except when `X` is in a contravariant position in the type
+   * annotation of a covariant formal parameter.
+   *
+   * If `X` is explicitly covariant then it is a compile-time error for
+   * `X` to occur in a non-covariant position in a member signature in the
+   * body of `C`, except when `X` is in a covariant position in the type
+   * annotation of a covariant formal parameter.
+   *
+   * Parameters:
+   * 0: the variance modifier defined for {0}
+   * 1: the name of the type parameter
+   * 2: the variance position that the type parameter {1} is in
+   */
+  static const CompileTimeErrorCode WRONG_TYPE_PARAMETER_VARIANCE_POSITION =
+      CompileTimeErrorCode(
+    'WRONG_TYPE_PARAMETER_VARIANCE_POSITION',
+    "The '{0}' type parameter '{1}' can't be used in an '{2}' position.",
+    correction:
+        "Try removing the type parameter or change the explicit variance modifier declaration for the type parameter to another one of 'in', 'out', or 'inout'.",
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a `yield` or `yield*` statement
+  // appears in a function whose body isn't marked with one of the `async*` or
+  // `sync*` modifiers.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because `yield` is being used
+  // in a function whose body doesn't have a modifier:
+  //
+  // ```dart
+  // Iterable<int> get digits {
+  //   yield* [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
+  // }
+  // ```
+  //
+  // The following code produces this diagnostic because `yield*` is being used
+  // in a function whose body has the `async` modifier rather than the `async*`
+  // modifier:
+  //
+  // ```dart
+  // Stream<int> get digits async {
+  //   yield* [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Add a modifier, or change the existing modifier to be either `async*` or
+  // `sync*`:
+  //
+  // ```dart
+  // Iterable<int> get digits sync* {
+  //   yield* [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
+  // }
+  // ```
+  static const CompileTimeErrorCode YIELD_EACH_IN_NON_GENERATOR =
+      CompileTimeErrorCode(
+    'YIELD_IN_NON_GENERATOR',
+    "Yield-each statements must be in a generator function (one marked with either 'async*' or 'sync*').",
+    correction: "Try adding 'async*' or 'sync*' to the enclosing function.",
+    hasPublishedDocs: true,
+    uniqueName: 'YIELD_EACH_IN_NON_GENERATOR',
+  );
+
+  /**
+   * ?? Yield: It is a compile-time error if a yield statement appears in a
+   * function that is not a generator function.
+   *
+   * No parameters.
+   */
+  static const CompileTimeErrorCode YIELD_IN_NON_GENERATOR =
+      CompileTimeErrorCode(
+    'YIELD_IN_NON_GENERATOR',
+    "Yield statements must be in a generator function (one marked with either 'async*' or 'sync*').",
+    correction: "Try adding 'async*' or 'sync*' to the enclosing function.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the type of the expression after `yield`
+   * 1: the return type of the function containing the `yield`
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the type of object produced by a
+  // `yield` expression doesn't match the type of objects that are to be
+  // returned from the `Iterable` or `Stream` types that are returned from a
+  // generator (a function or method marked with either `sync*` or `async*`).
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the getter `zero` is
+  // declared to return an `Iterable` that returns integers, but the `yield` is
+  // returning a string from the iterable:
+  //
+  // ```dart
+  // Iterable<int> get zero sync* {
+  //   yield [!'0'!];
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the return type of the function is correct, then fix the expression
+  // following the keyword `yield` to return the correct type:
+  //
+  // ```dart
+  // Iterable<int> get zero sync* {
+  //   yield 0;
+  // }
+  // ```
+  //
+  // If the expression following the `yield` is correct, then change the return
+  // type of the function to allow it:
+  //
+  // ```dart
+  // Iterable<String> get zero sync* {
+  //   yield '0';
+  // }
+  // ```
+  static const CompileTimeErrorCode YIELD_OF_INVALID_TYPE =
+      CompileTimeErrorCode(
+    'YIELD_OF_INVALID_TYPE',
+    "The type '{0}' implied by the 'yield' expression must be assignable to '{1}'.",
+    hasPublishedDocs: true,
+  );
+
+  /// Initialize a newly created error code to have the given [name].
+  const CompileTimeErrorCode(
+    String name,
+    String message, {
+    String? correction,
+    bool hasPublishedDocs = false,
+    bool isUnresolvedIdentifier = false,
+    String? uniqueName,
+  }) : super(
+          correction: correction,
+          hasPublishedDocs: hasPublishedDocs,
+          isUnresolvedIdentifier: isUnresolvedIdentifier,
+          message: message,
+          name: name,
+          uniqueName: 'CompileTimeErrorCode.${uniqueName ?? name}',
+        );
+
+  @override
+  ErrorSeverity get errorSeverity => ErrorType.COMPILE_TIME_ERROR.severity;
+
+  @override
+  ErrorType get type => ErrorType.COMPILE_TIME_ERROR;
+}
+
+class LanguageCode extends ErrorCode {
+  static const LanguageCode IMPLICIT_DYNAMIC_FIELD = LanguageCode(
+    'IMPLICIT_DYNAMIC_FIELD',
+    "Missing field type for '{0}'.",
+    correction:
+        "Try adding an explicit type, or remove implicit-dynamic from your analysis options file.",
+  );
+
+  static const LanguageCode IMPLICIT_DYNAMIC_FUNCTION = LanguageCode(
+    'IMPLICIT_DYNAMIC_FUNCTION',
+    "Missing type arguments for generic function '{0}<{1}>'.",
+    correction:
+        "Try adding an explicit type, or remove implicit-dynamic from your analysis options file.",
+  );
+
+  static const LanguageCode IMPLICIT_DYNAMIC_INVOKE = LanguageCode(
+    'IMPLICIT_DYNAMIC_INVOKE',
+    "Missing type arguments for calling generic function type '{0}'.",
+    correction:
+        "Try adding an explicit type, or remove implicit-dynamic from your analysis options file.",
+  );
+
+  static const LanguageCode IMPLICIT_DYNAMIC_LIST_LITERAL = LanguageCode(
+    'IMPLICIT_DYNAMIC_LIST_LITERAL',
+    "Missing type argument for list literal.",
+    correction:
+        "Try adding an explicit type, or remove implicit-dynamic from your analysis options file.",
+  );
+
+  static const LanguageCode IMPLICIT_DYNAMIC_MAP_LITERAL = LanguageCode(
+    'IMPLICIT_DYNAMIC_MAP_LITERAL',
+    "Missing type arguments for map literal.",
+    correction:
+        "Try adding an explicit type, or remove implicit-dynamic from your analysis options file.",
+  );
+
+  static const LanguageCode IMPLICIT_DYNAMIC_METHOD = LanguageCode(
+    'IMPLICIT_DYNAMIC_METHOD',
+    "Missing type arguments for generic method '{0}<{1}>'.",
+    correction:
+        "Try adding an explicit type, or remove implicit-dynamic from your analysis options file.",
+  );
+
+  static const LanguageCode IMPLICIT_DYNAMIC_PARAMETER = LanguageCode(
+    'IMPLICIT_DYNAMIC_PARAMETER',
+    "Missing parameter type for '{0}'.",
+    correction:
+        "Try adding an explicit type, or remove implicit-dynamic from your analysis options file.",
+  );
+
+  static const LanguageCode IMPLICIT_DYNAMIC_RETURN = LanguageCode(
+    'IMPLICIT_DYNAMIC_RETURN',
+    "Missing return type for '{0}'.",
+    correction:
+        "Try adding an explicit type, or remove implicit-dynamic from your analysis options file.",
+  );
+
+  static const LanguageCode IMPLICIT_DYNAMIC_TYPE = LanguageCode(
+    'IMPLICIT_DYNAMIC_TYPE',
+    "Missing type arguments for generic type '{0}'.",
+    correction:
+        "Try adding an explicit type, or remove implicit-dynamic from your analysis options file.",
+  );
+
+  static const LanguageCode IMPLICIT_DYNAMIC_VARIABLE = LanguageCode(
+    'IMPLICIT_DYNAMIC_VARIABLE',
+    "Missing variable type for '{0}'.",
+    correction:
+        "Try adding an explicit type, or remove implicit-dynamic from your analysis options file.",
+  );
+
+  /// Initialize a newly created error code to have the given [name].
+  const LanguageCode(
+    String name,
+    String message, {
+    String? correction,
+    bool hasPublishedDocs = false,
+    bool isUnresolvedIdentifier = false,
+    String? uniqueName,
+  }) : super(
+          correction: correction,
+          hasPublishedDocs: hasPublishedDocs,
+          isUnresolvedIdentifier: isUnresolvedIdentifier,
+          message: message,
+          name: name,
+          uniqueName: 'LanguageCode.${uniqueName ?? name}',
+        );
+
+  @override
+  ErrorSeverity get errorSeverity => ErrorType.COMPILE_TIME_ERROR.severity;
+
+  @override
+  ErrorType get type => ErrorType.COMPILE_TIME_ERROR;
+}
+
+class StaticWarningCode extends AnalyzerErrorCode {
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic in two cases.
+  //
+  // The first is when the left operand of an `??` operator can't be `null`.
+  // The right operand is only evaluated if the left operand has the value
+  // `null`, and because the left operand can't be `null`, the right operand is
+  // never evaluated.
+  //
+  // The second is when the left-hand side of an assignment using the `??=`
+  // operator can't be `null`. The right-hand side is only evaluated if the
+  // left-hand side has the value `null`, and because the left-hand side can't
+  // be `null`, the right-hand side is never evaluated.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because `x` can't be `null`:
+  //
+  // ```dart
+  // int f(int x) {
+  //   return x ?? [!0!];
+  // }
+  // ```
+  //
+  // The following code produces this diagnostic because `f` can't be `null`:
+  //
+  // ```dart
+  // class C {
+  //   int f = -1;
+  //
+  //   void m(int x) {
+  //     f ??= [!x!];
+  //   }
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the diagnostic is reported for an `??` operator, then remove the `??`
+  // operator and the right operand:
+  //
+  // ```dart
+  // int f(int x) {
+  //   return x;
+  // }
+  // ```
+  //
+  // If the diagnostic is reported for an assignment, and the assignment isn't
+  // needed, then remove the assignment:
+  //
+  // ```dart
+  // class C {
+  //   int f = -1;
+  //
+  //   void m(int x) {
+  //   }
+  // }
+  // ```
+  //
+  // If the assignment is needed, but should be based on a different condition,
+  // then rewrite the code to use `=` and the different condition:
+  //
+  // ```dart
+  // class C {
+  //   int f = -1;
+  //
+  //   void m(int x) {
+  //     if (f < 0) {
+  //       f = x;
+  //     }
+  //   }
+  // }
+  // ```
+  static const StaticWarningCode DEAD_NULL_AWARE_EXPRESSION = StaticWarningCode(
+    'DEAD_NULL_AWARE_EXPRESSION',
+    "The left operand can't be null, so the right operand is never executed.",
+    correction: "Try removing the operator and the right operand.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the null-aware operator that is invalid
+   * 1: the non-null-aware operator that can replace the invalid operator
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a null-aware operator (`?.`,
+  // `?..`, `?[`, `?..[`, or `...?`) is used on a receiver that's known to be
+  // non-nullable.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because `s` can't be `null`:
+  //
+  // ```dart
+  // int? getLength(String s) {
+  //   return s[!?.!]length;
+  // }
+  // ```
+  //
+  // The following code produces this diagnostic because `a` can't be `null`:
+  //
+  // ```dart
+  // var a = [];
+  // var b = [[!...?!]a];
+  // ```
+  //
+  // The following code produces this diagnostic because `s?.length` can't
+  // return `null`:
+  //
+  // ```dart
+  // void f(String? s) {
+  //   s?.length[!?.!]isEven;
+  // }
+  // ```
+  //
+  // The reason `s?.length` can't return `null` is because the null-aware
+  // operator following `s` short-circuits the evaluation of both `length` and
+  // `isEven` if `s` is `null`. In other words, if `s` is `null`, then neither
+  // `length` nor `isEven` will be invoked, and if `s` is non-`null`, then
+  // `length` can't return a `null` value. Either way, `isEven` can't be invoked
+  // on a `null` value, so the null-aware operator is not necessary. See
+  // [Understanding null safety](/null-safety/understanding-null-safety#smarter-null-aware-methods)
+  // for more details.
+  //
+  // The following code produces this diagnostic because `s` can't be `null`.
+  //
+  // ```dart
+  // void f(Object? o) {
+  //   var s = o as String;
+  //   s[!?.!]length;
+  // }
+  // ```
+  //
+  // The reason `s` can't be null, despite the fact that `o` can be `null`, is
+  // because of the cast to `String`, which is a non-nullable type. If `o` ever
+  // has the value `null`, the cast will fail and the invocation of `length`
+  // will not happen.
+  //
+  // #### Common fixes
+  //
+  // Replace the null-aware operator with a non-null-aware equivalent; for
+  // example, change `?.` to  `.`:
+  //
+  // ```dart
+  // int getLength(String s) {
+  //   return s.length;
+  // }
+  // ```
+  //
+  // (Note that the return type was also changed to be non-nullable, which might
+  // not be appropriate in some cases.)
+  static const StaticWarningCode INVALID_NULL_AWARE_OPERATOR =
+      StaticWarningCode(
+    'INVALID_NULL_AWARE_OPERATOR',
+    "The receiver can't be null, so the null-aware operator '{0}' is unnecessary.",
+    correction: "Try replacing the operator '{0}' with '{1}'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the null-aware operator that is invalid
+   * 1: the non-null-aware operator that can replace the invalid operator
+   */
+  static const StaticWarningCode
+      INVALID_NULL_AWARE_OPERATOR_AFTER_SHORT_CIRCUIT = StaticWarningCode(
+    'INVALID_NULL_AWARE_OPERATOR',
+    "The receiver can't be null because of short-circuiting, so the null-aware operator '{0}' can't be used.",
+    correction: "Try replacing the operator '{0}' with '{1}'.",
+    hasPublishedDocs: true,
+    uniqueName: 'INVALID_NULL_AWARE_OPERATOR_AFTER_SHORT_CIRCUIT',
+  );
+
+  /**
+   * 7.1 Instance Methods: It is a static warning if an instance method
+   * <i>m1</i> overrides an instance member <i>m2</i>, the signature of
+   * <i>m2</i> explicitly specifies a default value for a formal parameter
+   * <i>p</i> and the signature of <i>m1</i> specifies a different default value
+   * for <i>p</i>.
+   */
+  static const StaticWarningCode
+      INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_NAMED = StaticWarningCode(
+    'INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_NAMED',
+    "Parameters can't override default values, this method overrides '{0}.{1}' where '{2}' has a different value.",
+    correction: "Try using the same default value in both methods.",
+  );
+
+  /**
+   * 7.1 Instance Methods: It is a static warning if an instance method
+   * <i>m1</i> overrides an instance member <i>m2</i>, the signature of
+   * <i>m2</i> explicitly specifies a default value for a formal parameter
+   * <i>p</i> and the signature of <i>m1</i> specifies a different default value
+   * for <i>p</i>.
+   */
+  static const StaticWarningCode
+      INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_POSITIONAL = StaticWarningCode(
+    'INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_POSITIONAL',
+    "Parameters can't override default values, this method overrides '{0}.{1}' where this positional parameter has a different value.",
+    correction: "Try using the same default value in both methods.",
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the constant that is missing
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a `switch` statement for an enum
+  // doesn't include an option for one of the values in the enumeration.
+  //
+  // Note that `null` is always a possible value for an enum and therefore also
+  // must be handled.
+  //
+  // #### Examples
+  //
+  // The following code produces this diagnostic because the enum constant `e2`
+  // isn't handled:
+  //
+  // ```dart
+  // enum E { e1, e2 }
+  //
+  // void f(E e) {
+  //   [!switch (e)!] {
+  //     case E.e1:
+  //       break;
+  //   }
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If there's special handling for the missing values, then add a `case`
+  // clause for each of the missing values:
+  //
+  // ```dart
+  // enum E { e1, e2 }
+  //
+  // void f(E e) {
+  //   switch (e) {
+  //     case E.e1:
+  //       break;
+  //     case E.e2:
+  //       break;
+  //   }
+  // }
+  // ```
+  //
+  // If the missing values should be handled the same way, then add a `default`
+  // clause:
+  //
+  // ```dart
+  // enum E { e1, e2 }
+  //
+  // void f(E e) {
+  //   switch (e) {
+  //     case E.e1:
+  //       break;
+  //     default:
+  //       break;
+  //   }
+  // }
+  // ```
+  // TODO(brianwilkerson) This documentation will need to be updated when NNBD
+  //  ships.
+  static const StaticWarningCode MISSING_ENUM_CONSTANT_IN_SWITCH =
+      StaticWarningCode(
+    'MISSING_ENUM_CONSTANT_IN_SWITCH',
+    "Missing case clause for '{0}'.",
+    correction:
+        "Try adding a case clause for the missing constant, or adding a default clause.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the operand of the `!` operator
+  // can't be `null`.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because `x` can't be `null`:
+  //
+  // ```dart
+  // int f(int x) {
+  //   return x[!!!];
+  // }
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Remove the null check operator (`!`):
+  //
+  // ```dart
+  // int f(int x) {
+  //   return x;
+  // }
+  // ```
+  static const StaticWarningCode UNNECESSARY_NON_NULL_ASSERTION =
+      StaticWarningCode(
+    'UNNECESSARY_NON_NULL_ASSERTION',
+    "The '!' will have no effect because the receiver can't be null.",
+    correction: "Try removing the '!' operator.",
+    hasPublishedDocs: true,
+  );
+
+  /// Initialize a newly created error code to have the given [name].
+  const StaticWarningCode(
+    String name,
+    String message, {
+    String? correction,
+    bool hasPublishedDocs = false,
+    bool isUnresolvedIdentifier = false,
+    String? uniqueName,
+  }) : super(
+          correction: correction,
+          hasPublishedDocs: hasPublishedDocs,
+          isUnresolvedIdentifier: isUnresolvedIdentifier,
+          message: message,
+          name: name,
+          uniqueName: 'StaticWarningCode.${uniqueName ?? name}',
+        );
+
+  @override
+  ErrorSeverity get errorSeverity => ErrorSeverity.WARNING;
+
+  @override
+  ErrorType get type => ErrorType.STATIC_WARNING;
+}
diff --git a/pkg/analyzer/lib/src/manifest/manifest_warning_code.dart b/pkg/analyzer/lib/src/manifest/manifest_warning_code.dart
index cd3116d..0cd9a11 100644
--- a/pkg/analyzer/lib/src/manifest/manifest_warning_code.dart
+++ b/pkg/analyzer/lib/src/manifest/manifest_warning_code.dart
@@ -2,95 +2,4 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analyzer/error/error.dart';
-
-/// The error codes used for warnings in analysis options files. The convention
-/// for this class is for the name of the error code to indicate the problem
-/// that caused the error to be generated and for the error message to explain
-/// what is wrong and, when appropriate, how the problem can be corrected.
-class ManifestWarningCode extends ErrorCode {
-  /// A code indicating that a specified hardware feature is not supported on
-  /// Chrome OS.
-  static const ManifestWarningCode UNSUPPORTED_CHROME_OS_HARDWARE =
-      ManifestWarningCode(
-          'UNSUPPORTED_CHROME_OS_HARDWARE',
-          'The feature {0} is not supported on Chrome OS, consider making it '
-              'optional.',
-          correction:
-              'Try adding `android:required="false"` for this feature.');
-
-  /// A code indicating that a specified feature is not supported on Chrome OS.
-  static const ManifestWarningCode UNSUPPORTED_CHROME_OS_FEATURE =
-      ManifestWarningCode(
-          'UNSUPPORTED_CHROME_OS_FEATURE',
-          'The feature {0} is not supported on Chrome OS, consider making it '
-              'optional.',
-          correction: "Try changing to `android:required=\"false\"` for this "
-              "feature.");
-
-  /// A code indicating that the touchscreen feature is not specified in the
-  /// manifest.
-  static const ManifestWarningCode NO_TOUCHSCREEN_FEATURE = ManifestWarningCode(
-      'NO_TOUCHSCREEN_FEATURE',
-      'The default "android.hardware.touchscreen" needs to be optional for '
-          'Chrome OS. ',
-      correction: "Consider adding "
-          "<uses-feature android:name=\"android.hardware.touchscreen\" android:required=\"false\" />"
-          " to the manifest.");
-
-  /// A code indicating that a specified permission is not supported on Chrome
-  /// OS.
-  static const ManifestWarningCode PERMISSION_IMPLIES_UNSUPPORTED_HARDWARE =
-      ManifestWarningCode(
-          'PERMISSION_IMPLIES_UNSUPPORTED_HARDWARE',
-          'Permission makes app incompatible for Chrome OS, consider adding '
-              'optional {0} feature tag, ',
-          correction: " Try adding `<uses-feature "
-              "android:name=\"{0}\"  android:required=\"false\">`.");
-
-  /// A code indicating that the camera permissions is not supported on Chrome
-  /// OS.
-  static const ManifestWarningCode CAMERA_PERMISSIONS_INCOMPATIBLE = ManifestWarningCode(
-      'CAMERA_PERMISSIONS_INCOMPATIBLE',
-      "Camera permissions make app incompatible for Chrome OS, consider adding "
-          "optional features \"android.hardware.camera\" and \"android.hardware.camera.autofocus\".",
-      correction: "Try adding `<uses-feature "
-          "android:name=\"android.hardware.camera\"  android:required=\"false\">` "
-          "`<uses-feature "
-          "android:name=\"android.hardware.camera.autofocus\"  android:required=\"false\">`.");
-
-  /// A code indicating that the activity is set to be non resizable.
-  static const ManifestWarningCode NON_RESIZABLE_ACTIVITY = ManifestWarningCode(
-      'NON_RESIZABLE_ACTIVITY',
-      "The `<activity>` element should be allowed to be resized to allow "
-          "users to take advantage of the multi-window environment on Chrome OS",
-      correction: "Consider declaring the corresponding "
-          "activity element with `resizableActivity=\"true\"` attribute.");
-
-  /// A code indicating that the activity is locked to an orientation.
-  static const ManifestWarningCode SETTING_ORIENTATION_ON_ACTIVITY =
-      ManifestWarningCode(
-          'SETTING_ORIENTATION_ON_ACTIVITY',
-          "The `<activity>` element should not be locked to any orientation so "
-              "that users can take advantage of the multi-window environments "
-              "and larger screens on Chrome OS",
-          correction:
-              "Consider declaring the corresponding activity element with"
-              " `screenOrientation=\"unspecified\"` or `\"fullSensor\"` attribute.");
-
-  /// Initialize a newly created warning code to have the given [name],
-  /// [message] and [correction].
-  const ManifestWarningCode(String name, String message, {String? correction})
-      : super(
-          correction: correction,
-          message: message,
-          name: name,
-          uniqueName: 'ManifestWarningCode.$name',
-        );
-
-  @override
-  ErrorSeverity get errorSeverity => ErrorSeverity.WARNING;
-
-  @override
-  ErrorType get type => ErrorType.STATIC_WARNING;
-}
+export 'package:analyzer/src/manifest/manifest_warning_code.g.dart';
diff --git a/pkg/analyzer/lib/src/manifest/manifest_warning_code.g.dart b/pkg/analyzer/lib/src/manifest/manifest_warning_code.g.dart
new file mode 100644
index 0000000..73c4915
--- /dev/null
+++ b/pkg/analyzer/lib/src/manifest/manifest_warning_code.g.dart
@@ -0,0 +1,117 @@
+// Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+// THIS FILE IS GENERATED. DO NOT EDIT.
+//
+// Instead modify 'pkg/analyzer/messages.yaml' and run
+// 'dart pkg/analyzer/tool/messages/generate.dart' to update.
+
+import "package:analyzer/error/error.dart";
+
+// It is hard to visually separate each code's _doc comment_ from its published
+// _documentation comment_ when each is written as an end-of-line comment.
+// ignore_for_file: slash_for_doc_comments
+
+class ManifestWarningCode extends ErrorCode {
+  /**
+   * A code indicating that the camera permissions is not supported on Chrome
+   * OS.
+   */
+  static const ManifestWarningCode CAMERA_PERMISSIONS_INCOMPATIBLE =
+      ManifestWarningCode(
+    'CAMERA_PERMISSIONS_INCOMPATIBLE',
+    "Camera permissions make app incompatible for Chrome OS, consider adding optional features \"android.hardware.camera\" and \"android.hardware.camera.autofocus\".",
+    correction:
+        "Try adding `<uses-feature android:name=\"android.hardware.camera\"  android:required=\"false\">` `<uses-feature android:name=\"android.hardware.camera.autofocus\"  android:required=\"false\">`.",
+  );
+
+  /**
+   * A code indicating that the activity is set to be non resizable.
+   */
+  static const ManifestWarningCode NON_RESIZABLE_ACTIVITY = ManifestWarningCode(
+    'NON_RESIZABLE_ACTIVITY',
+    "The `<activity>` element should be allowed to be resized to allow users to take advantage of the multi-window environment on Chrome OS",
+    correction:
+        "Consider declaring the corresponding activity element with `resizableActivity=\"true\"` attribute.",
+  );
+
+  /**
+   * A code indicating that the touchscreen feature is not specified in the
+   * manifest.
+   */
+  static const ManifestWarningCode NO_TOUCHSCREEN_FEATURE = ManifestWarningCode(
+    'NO_TOUCHSCREEN_FEATURE',
+    "The default \"android.hardware.touchscreen\" needs to be optional for Chrome OS. ",
+    correction:
+        "Consider adding <uses-feature android:name=\"android.hardware.touchscreen\" android:required=\"false\" /> to the manifest.",
+  );
+
+  /**
+   * A code indicating that a specified permission is not supported on Chrome
+   * OS.
+   */
+  static const ManifestWarningCode PERMISSION_IMPLIES_UNSUPPORTED_HARDWARE =
+      ManifestWarningCode(
+    'PERMISSION_IMPLIES_UNSUPPORTED_HARDWARE',
+    "Permission makes app incompatible for Chrome OS, consider adding optional {0} feature tag, ",
+    correction:
+        " Try adding `<uses-feature android:name=\"{0}\"  android:required=\"false\">`.",
+  );
+
+  /**
+   * A code indicating that the activity is locked to an orientation.
+   */
+  static const ManifestWarningCode SETTING_ORIENTATION_ON_ACTIVITY =
+      ManifestWarningCode(
+    'SETTING_ORIENTATION_ON_ACTIVITY',
+    "The `<activity>` element should not be locked to any orientation so that users can take advantage of the multi-window environments and larger screens on Chrome OS",
+    correction:
+        "Consider declaring the corresponding activity element with `screenOrientation=\"unspecified\"` or `\"fullSensor\"` attribute.",
+  );
+
+  /**
+   * A code indicating that a specified feature is not supported on Chrome OS.
+   */
+  static const ManifestWarningCode UNSUPPORTED_CHROME_OS_FEATURE =
+      ManifestWarningCode(
+    'UNSUPPORTED_CHROME_OS_FEATURE',
+    "The feature {0} is not supported on Chrome OS, consider making it optional.",
+    correction:
+        "Try changing to `android:required=\"false\"` for this feature.",
+  );
+
+  /**
+   * A code indicating that a specified hardware feature is not supported on
+   * Chrome OS.
+   */
+  static const ManifestWarningCode UNSUPPORTED_CHROME_OS_HARDWARE =
+      ManifestWarningCode(
+    'UNSUPPORTED_CHROME_OS_HARDWARE',
+    "The feature {0} is not supported on Chrome OS, consider making it optional.",
+    correction: "Try adding `android:required=\"false\"` for this feature.",
+  );
+
+  /// Initialize a newly created error code to have the given [name].
+  const ManifestWarningCode(
+    String name,
+    String message, {
+    String? correction,
+    bool hasPublishedDocs = false,
+    bool isUnresolvedIdentifier = false,
+    String? uniqueName,
+  }) : super(
+          correction: correction,
+          hasPublishedDocs: hasPublishedDocs,
+          isUnresolvedIdentifier: isUnresolvedIdentifier,
+          message: message,
+          name: name,
+          uniqueName: 'ManifestWarningCode.${uniqueName ?? name}',
+        );
+
+  @override
+  ErrorSeverity get errorSeverity => ErrorSeverity.WARNING;
+
+  @override
+  ErrorType get type => ErrorType.STATIC_WARNING;
+}
diff --git a/pkg/analyzer/lib/src/pubspec/pubspec_warning_code.dart b/pkg/analyzer/lib/src/pubspec/pubspec_warning_code.dart
index 5f90845..746e79c 100644
--- a/pkg/analyzer/lib/src/pubspec/pubspec_warning_code.dart
+++ b/pkg/analyzer/lib/src/pubspec/pubspec_warning_code.dart
@@ -2,564 +2,4 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analyzer/error/error.dart';
-
-// It is hard to visually separate each code's _doc comment_ from its published
-// _documentation comment_ when each is written as an end-of-line comment.
-// ignore_for_file: slash_for_doc_comments
-
-/// The error codes used for warnings in pubspec files. The convention for this
-/// class is for the name of the error code to indicate the problem that caused
-/// the error to be generated and for the error message to explain what is wrong
-/// and, when appropriate, how the problem can be corrected.
-class PubspecWarningCode extends ErrorCode {
-  /**
-   * Parameters:
-   * 0: the path to the asset as given in the file.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an asset list contains a value
-  // referencing a file that doesn't exist.
-  //
-  // #### Example
-  //
-  // Assuming that the file `doesNotExist.gif` doesn't exist, the following code
-  // produces this diagnostic because it's listed as an asset:
-  //
-  // ```yaml
-  // %uri="pubspec.yaml"
-  // name: example
-  // flutter:
-  //   assets:
-  //     - doesNotExist.gif
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the path is correct, then create a file at that path.
-  //
-  // If the path isn't correct, then change the path to match the path of the
-  // file containing the asset.
-  static const PubspecWarningCode ASSET_DOES_NOT_EXIST = PubspecWarningCode(
-      'ASSET_DOES_NOT_EXIST', "The asset file '{0}' doesn't exist.",
-      correction: "Try creating the file or fixing the path to the file.",
-      hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the path to the asset directory as given in the file.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an asset list contains a value
-  // referencing a directory that doesn't exist.
-  //
-  // #### Example
-  //
-  // Assuming that the directory `assets` doesn't exist, the following code
-  // produces this diagnostic because it's listed as a directory containing
-  // assets:
-  //
-  // ```yaml
-  // %uri="pubspec.yaml"
-  // name: example
-  // flutter:
-  //   assets:
-  //     - assets/
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the path is correct, then create a directory at that path.
-  //
-  // If the path isn't correct, then change the path to match the path of the
-  // directory containing the assets.
-  static const PubspecWarningCode ASSET_DIRECTORY_DOES_NOT_EXIST =
-      PubspecWarningCode('ASSET_DIRECTORY_DOES_NOT_EXIST',
-          "The asset directory '{0}' doesn't exist.",
-          correction: "Try creating the directory or fixing the path to the "
-              "directory.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the value of the `asset` key
-  // isn't a list.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the value of the assets
-  // key is a string when a list is expected:
-  //
-  // ```yaml
-  // %uri="pubspec.yaml"
-  // name: example
-  // flutter:
-  //   assets: assets/
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Change the value of the asset list so that it's a list:
-  //
-  // ```yaml
-  // %uri="pubspec.yaml"
-  // name: example
-  // flutter:
-  //   assets:
-  //     - assets/
-  // ```
-  static const PubspecWarningCode ASSET_FIELD_NOT_LIST = PubspecWarningCode(
-      'ASSET_FIELD_NOT_LIST',
-      "The value of the 'asset' field is expected to be a list of relative "
-          "file paths.",
-      correction:
-          "Try converting the value to be a list of relative file paths.",
-      hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when an asset list contains a value
-  // that isn't a string.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the asset list contains
-  // a map:
-  //
-  // ```yaml
-  // %uri="pubspec.yaml"
-  // name: example
-  // flutter:
-  //   assets:
-  //     - image.gif: true
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Change the asset list so that it only contains valid POSIX-style file
-  // paths:
-  //
-  // ```yaml
-  // %uri="pubspec.yaml"
-  // name: example
-  // flutter:
-  //   assets:
-  //     - image.gif
-  // ```
-  static const PubspecWarningCode ASSET_NOT_STRING = PubspecWarningCode(
-      'ASSET_NOT_STRING', "Assets are required to be file paths (strings).",
-      correction: "Try converting the value to be a string.",
-      hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the value of either the
-  // `dependencies` or `dev_dependencies` key isn't a map.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the value of the
-  // top-level `dependencies` key is a list:
-  //
-  // ```yaml
-  // %uri="pubspec.yaml"
-  // name: example
-  // dependencies:
-  //   - meta
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Use a map as the value of the `dependencies` key:
-  //
-  // ```yaml
-  // %uri='pubspec.yaml'
-  // name: example
-  // dependencies:
-  //   meta: ^1.0.2
-  // ```
-  static const PubspecWarningCode DEPENDENCIES_FIELD_NOT_MAP =
-      PubspecWarningCode('DEPENDENCIES_FIELD_NOT_MAP',
-          "The value of the '{0}' field is expected to be a map.",
-          correction: "Try converting the value to be a map.",
-          hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a key is used in a
-  // `pubspec.yaml` file that was deprecated. Unused keys take up space and
-  // might imply semantics that are no longer valid.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the `author` key is no
-  // longer being used:
-  //
-  // ```dart
-  // %uri="pubspec.yaml"
-  // name: example
-  // author: 'Dash'
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Remove the deprecated key:
-  //
-  // ```dart
-  // %uri="pubspec.yaml"
-  // name: example
-  // ```
-  static const PubspecWarningCode DEPRECATED_FIELD = PubspecWarningCode(
-      'DEPRECATED_FIELD',
-      "The '{0}' field is no longer used and can be removed.",
-      correction: "Try removing the field.",
-      hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the value of the `flutter` key
-  // isn't a map.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the value of the
-  // top-level `flutter` key is a string:
-  //
-  // ```yaml
-  // %uri="pubspec.yaml"
-  // name: example
-  // flutter: true
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you need to specify Flutter-specific options, then change the value to
-  // be a map:
-  //
-  // ```yaml
-  // %uri="pubspec.yaml"
-  // name: example
-  // flutter:
-  //   uses-material-design: true
-  // ```
-  //
-  // If you don't need to specify Flutter-specific options, then remove the
-  // `flutter` key:
-  //
-  // ```yaml
-  // %uri="pubspec.yaml"
-  // name: example
-  // ```
-  static const PubspecWarningCode FLUTTER_FIELD_NOT_MAP = PubspecWarningCode(
-      'FLUTTER_FIELD_NOT_MAP',
-      "The value of the 'flutter' field is expected to be a map.",
-      correction: "Try converting the value to be a map.",
-      hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the kind of dependency.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a package under either
-  // `dependencies` or `dev_dependencies` is not a pub, `git`, or `path` based
-  // dependency.
-  //
-  // See [Package dependencies](https://dart.dev/tools/pub/dependencies) for
-  // more information about the kind of dependencies that are supported.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the dependency on the
-  // package `transmogrify` is not a pub, `git`, or `path` based dependency:
-  //
-  // ```yaml
-  // %uri="pubspec.yaml"
-  // name: example
-  // dependencies:
-  //   transmogrify:
-  //     hosted:
-  //       name: transmogrify
-  //       url: http://your-package-server.com
-  //     version: ^1.4.0
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If you want to publish your package to `pub.dev`, then change the
-  // dependencies to ones that are supported by `pub`.
-  //
-  // If you don't want to publish your package to `pub.dev`, then add a
-  // `publish_to: none` entry to mark the package as one that isn't intended to
-  // be published:
-  //
-  // ```yaml
-  // %uri="pubspec.yaml"
-  // name: example
-  // publish_to: none
-  // dependencies:
-  //   transmogrify:
-  //     hosted:
-  //       name: transmogrify
-  //       url: http://your-package-server.com
-  //     version: ^1.4.0
-  // ```
-  static const PubspecWarningCode INVALID_DEPENDENCY = PubspecWarningCode(
-      'INVALID_DEPENDENCY',
-      "Publishable packages can't have '{0}' dependencies.",
-      correction:
-          "Try adding a 'publish_to: none' entry to mark the package as not "
-          "for publishing or remove the {0} dependency.",
-      hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when there's no top-level `name` key.
-  // The `name` key provides the name of the package, which is required.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the package doesn't
-  // have a name:
-  //
-  // ```yaml
-  // %uri="pubspec.yaml"
-  // dependencies:
-  //   meta: ^1.0.2
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Add the top-level key `name` with a value that's the name of the package:
-  //
-  // ```yaml
-  // %uri="pubspec.yaml"
-  // name: example
-  // dependencies:
-  //   meta: ^1.0.2
-  // ```
-  static const PubspecWarningCode MISSING_NAME = PubspecWarningCode(
-      'MISSING_NAME', "The 'name' field is required but missing.",
-      correction: "Try adding a field named 'name'.", hasPublishedDocs: true);
-
-  /**
-   * No parameters.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when the top-level `name` key has a
-  // value that isn't a string.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the value following the
-  // `name` key is a list:
-  //
-  // ```yaml
-  // %uri="pubspec.yaml"
-  // name:
-  //   - example
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Replace the value with a string:
-  //
-  // ```yaml
-  // %uri="pubspec.yaml"
-  // name: example
-  // ```
-  static const PubspecWarningCode NAME_NOT_STRING = PubspecWarningCode(
-      'NAME_NOT_STRING',
-      "The value of the 'name' field is required to be a string.",
-      correction: "Try converting the value to be a string.",
-      hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the path to the dependency as given in the file.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a dependency has a `path` key
-  // referencing a directory that doesn't exist.
-  //
-  // #### Example
-  //
-  // Assuming that the directory `doesNotExist` doesn't exist, the following
-  // code produces this diagnostic because it's listed as the path of a package:
-  //
-  // ```yaml
-  // %uri="pubspec.yaml"
-  // name: example
-  // dependencies:
-  //   local_package:
-  //     path: doesNotExist
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the path is correct, then create a directory at that path.
-  //
-  // If the path isn't correct, then change the path to match the path to the
-  // root of the package.
-  static const PubspecWarningCode PATH_DOES_NOT_EXIST = PubspecWarningCode(
-      'PATH_DOES_NOT_EXIST', "The path '{0}' doesn't exist.",
-      correction:
-          "Try creating the referenced path or using a path that exists.",
-      hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the path as given in the file.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a dependency has a `path` key
-  // whose value is a string, but isn't a POSIX-style path.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the path following the
-  // `path` key is a Windows path:
-  //
-  // ```yaml
-  // %uri="pubspec.yaml"
-  // name: example
-  // dependencies:
-  //   local_package:
-  //     path: E:\local_package
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Convert the path to a POSIX path.
-  static const PubspecWarningCode PATH_NOT_POSIX = PubspecWarningCode(
-      'PATH_NOT_POSIX', "The path '{0}' isn't a POSIX-style path.",
-      correction: "Try converting the value to a POSIX-style path.",
-      hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the path to the dependency as given in the file.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when a dependency has a `path` key
-  // that references a directory that doesn't contain a `pubspec.yaml` file.
-  //
-  // #### Example
-  //
-  // Assuming that the directory `local_package` doesn't contain a file named
-  // `pubspec.yaml`, the following code produces this diagnostic because it's
-  // listed as the path of a package:
-  //
-  // ```yaml
-  // %uri="pubspec.yaml"
-  // name: example
-  // dependencies:
-  //   local_package:
-  //     path: local_package
-  // ```
-  //
-  // #### Common fixes
-  //
-  // If the path is intended to be the root of a package, then add a
-  // `pubspec.yaml` file in the directory:
-  //
-  // ```yaml
-  // %uri="pubspec.yaml"
-  // name: local_package
-  // ```
-  //
-  // If the path is wrong, then replace it with a the correct path.
-  static const PubspecWarningCode PATH_PUBSPEC_DOES_NOT_EXIST = PubspecWarningCode(
-      'PATH_PUBSPEC_DOES_NOT_EXIST',
-      "The directory '{0}' doesn't contain a pubspec.",
-      correction:
-          "Try creating a pubspec in the referenced directory or using a path that has a pubspec.",
-      hasPublishedDocs: true);
-
-  /**
-   * Parameters:
-   * 0: the name of the package in the dev_dependency list.
-   */
-  // #### Description
-  //
-  // The analyzer produces this diagnostic when there's an entry under
-  // `dev_dependencies` for a package that is also listed under `dependencies`.
-  // The packages under `dependencies` are available to all of the code in the
-  // package, so there's no need to also list them under `dev_dependencies`.
-  //
-  // #### Example
-  //
-  // The following code produces this diagnostic because the package `meta` is
-  // listed under both `dependencies` and `dev_dependencies`:
-  //
-  // ```yaml
-  // %uri='pubspec.yaml'
-  // name: example
-  // dependencies:
-  //   meta: ^1.0.2
-  // dev_dependencies:
-  //   meta: ^1.0.2
-  // ```
-  //
-  // #### Common fixes
-  //
-  // Remove the entry under `dev_dependencies` (and the `dev_dependencies` key
-  // if that's the only package listed there):
-  //
-  // ```yaml
-  // %uri='pubspec.yaml'
-  // name: example
-  // dependencies:
-  //   meta: ^1.0.2
-  // ```
-  static const PubspecWarningCode UNNECESSARY_DEV_DEPENDENCY =
-      PubspecWarningCode(
-          'UNNECESSARY_DEV_DEPENDENCY',
-          "The dev dependency on {0} is unnecessary because there is also a "
-              "normal dependency on that package.",
-          correction: "Try removing the dev dependency.",
-          hasPublishedDocs: true);
-
-  /// Initialize a newly created warning code to have the given [name],
-  /// [message] and [correction].
-  const PubspecWarningCode(String name, String message,
-      {String? correction, bool hasPublishedDocs = false})
-      : super(
-          correction: correction,
-          message: message,
-          name: name,
-          uniqueName: 'PubspecWarningCode.$name',
-          hasPublishedDocs: hasPublishedDocs,
-        );
-
-  @override
-  ErrorSeverity get errorSeverity => ErrorSeverity.WARNING;
-
-  @override
-  ErrorType get type => ErrorType.STATIC_WARNING;
-}
+export 'package:analyzer/src/pubspec/pubspec_warning_code.g.dart';
diff --git a/pkg/analyzer/lib/src/pubspec/pubspec_warning_code.g.dart b/pkg/analyzer/lib/src/pubspec/pubspec_warning_code.g.dart
new file mode 100644
index 0000000..fe4471c
--- /dev/null
+++ b/pkg/analyzer/lib/src/pubspec/pubspec_warning_code.g.dart
@@ -0,0 +1,589 @@
+// Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+// THIS FILE IS GENERATED. DO NOT EDIT.
+//
+// Instead modify 'pkg/analyzer/messages.yaml' and run
+// 'dart pkg/analyzer/tool/messages/generate.dart' to update.
+
+import "package:analyzer/error/error.dart";
+
+// It is hard to visually separate each code's _doc comment_ from its published
+// _documentation comment_ when each is written as an end-of-line comment.
+// ignore_for_file: slash_for_doc_comments
+
+class PubspecWarningCode extends ErrorCode {
+  /**
+   * Parameters:
+   * 0: the path to the asset directory as given in the file.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an asset list contains a value
+  // referencing a directory that doesn't exist.
+  //
+  // #### Example
+  //
+  // Assuming that the directory `assets` doesn't exist, the following code
+  // produces this diagnostic because it's listed as a directory containing
+  // assets:
+  //
+  // ```yaml
+  // %uri="pubspec.yaml"
+  // name: example
+  // flutter:
+  //   assets:
+  //     - assets/
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the path is correct, then create a directory at that path.
+  //
+  // If the path isn't correct, then change the path to match the path of the
+  // directory containing the assets.
+  static const PubspecWarningCode ASSET_DIRECTORY_DOES_NOT_EXIST =
+      PubspecWarningCode(
+    'ASSET_DIRECTORY_DOES_NOT_EXIST',
+    "The asset directory '{0}' doesn't exist.",
+    correction:
+        "Try creating the directory or fixing the path to the directory.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the path to the asset as given in the file.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an asset list contains a value
+  // referencing a file that doesn't exist.
+  //
+  // #### Example
+  //
+  // Assuming that the file `doesNotExist.gif` doesn't exist, the following code
+  // produces this diagnostic because it's listed as an asset:
+  //
+  // ```yaml
+  // %uri="pubspec.yaml"
+  // name: example
+  // flutter:
+  //   assets:
+  //     - doesNotExist.gif
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the path is correct, then create a file at that path.
+  //
+  // If the path isn't correct, then change the path to match the path of the
+  // file containing the asset.
+  static const PubspecWarningCode ASSET_DOES_NOT_EXIST = PubspecWarningCode(
+    'ASSET_DOES_NOT_EXIST',
+    "The asset file '{0}' doesn't exist.",
+    correction: "Try creating the file or fixing the path to the file.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the value of the `asset` key
+  // isn't a list.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the value of the assets
+  // key is a string when a list is expected:
+  //
+  // ```yaml
+  // %uri="pubspec.yaml"
+  // name: example
+  // flutter:
+  //   assets: assets/
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Change the value of the asset list so that it's a list:
+  //
+  // ```yaml
+  // %uri="pubspec.yaml"
+  // name: example
+  // flutter:
+  //   assets:
+  //     - assets/
+  // ```
+  static const PubspecWarningCode ASSET_FIELD_NOT_LIST = PubspecWarningCode(
+    'ASSET_FIELD_NOT_LIST',
+    "The value of the 'asset' field is expected to be a list of relative file paths.",
+    correction: "Try converting the value to be a list of relative file paths.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when an asset list contains a value
+  // that isn't a string.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the asset list contains
+  // a map:
+  //
+  // ```yaml
+  // %uri="pubspec.yaml"
+  // name: example
+  // flutter:
+  //   assets:
+  //     - image.gif: true
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Change the asset list so that it only contains valid POSIX-style file
+  // paths:
+  //
+  // ```yaml
+  // %uri="pubspec.yaml"
+  // name: example
+  // flutter:
+  //   assets:
+  //     - image.gif
+  // ```
+  static const PubspecWarningCode ASSET_NOT_STRING = PubspecWarningCode(
+    'ASSET_NOT_STRING',
+    "Assets are required to be file paths (strings).",
+    correction: "Try converting the value to be a string.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the value of either the
+  // `dependencies` or `dev_dependencies` key isn't a map.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the value of the
+  // top-level `dependencies` key is a list:
+  //
+  // ```yaml
+  // %uri="pubspec.yaml"
+  // name: example
+  // dependencies:
+  //   - meta
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Use a map as the value of the `dependencies` key:
+  //
+  // ```yaml
+  // %uri='pubspec.yaml'
+  // name: example
+  // dependencies:
+  //   meta: ^1.0.2
+  // ```
+  static const PubspecWarningCode DEPENDENCIES_FIELD_NOT_MAP =
+      PubspecWarningCode(
+    'DEPENDENCIES_FIELD_NOT_MAP',
+    "The value of the '{0}' field is expected to be a map.",
+    correction: "Try converting the value to be a map.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a key is used in a
+  // `pubspec.yaml` file that was deprecated. Unused keys take up space and
+  // might imply semantics that are no longer valid.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the `author` key is no
+  // longer being used:
+  //
+  // ```dart
+  // %uri="pubspec.yaml"
+  // name: example
+  // author: 'Dash'
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Remove the deprecated key:
+  //
+  // ```dart
+  // %uri="pubspec.yaml"
+  // name: example
+  // ```
+  static const PubspecWarningCode DEPRECATED_FIELD = PubspecWarningCode(
+    'DEPRECATED_FIELD',
+    "The '{0}' field is no longer used and can be removed.",
+    correction: "Try removing the field.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the value of the `flutter` key
+  // isn't a map.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the value of the
+  // top-level `flutter` key is a string:
+  //
+  // ```yaml
+  // %uri="pubspec.yaml"
+  // name: example
+  // flutter: true
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you need to specify Flutter-specific options, then change the value to
+  // be a map:
+  //
+  // ```yaml
+  // %uri="pubspec.yaml"
+  // name: example
+  // flutter:
+  //   uses-material-design: true
+  // ```
+  //
+  // If you don't need to specify Flutter-specific options, then remove the
+  // `flutter` key:
+  //
+  // ```yaml
+  // %uri="pubspec.yaml"
+  // name: example
+  // ```
+  static const PubspecWarningCode FLUTTER_FIELD_NOT_MAP = PubspecWarningCode(
+    'FLUTTER_FIELD_NOT_MAP',
+    "The value of the 'flutter' field is expected to be a map.",
+    correction: "Try converting the value to be a map.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the kind of dependency.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a package under either
+  // `dependencies` or `dev_dependencies` is not a pub, `git`, or `path` based
+  // dependency.
+  //
+  // See [Package dependencies](https://dart.dev/tools/pub/dependencies) for
+  // more information about the kind of dependencies that are supported.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the dependency on the
+  // package `transmogrify` is not a pub, `git`, or `path` based dependency:
+  //
+  // ```yaml
+  // %uri="pubspec.yaml"
+  // name: example
+  // dependencies:
+  //   transmogrify:
+  //     hosted:
+  //       name: transmogrify
+  //       url: http://your-package-server.com
+  //     version: ^1.4.0
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If you want to publish your package to `pub.dev`, then change the
+  // dependencies to ones that are supported by `pub`.
+  //
+  // If you don't want to publish your package to `pub.dev`, then add a
+  // `publish_to: none` entry to mark the package as one that isn't intended to
+  // be published:
+  //
+  // ```yaml
+  // %uri="pubspec.yaml"
+  // name: example
+  // publish_to: none
+  // dependencies:
+  //   transmogrify:
+  //     hosted:
+  //       name: transmogrify
+  //       url: http://your-package-server.com
+  //     version: ^1.4.0
+  // ```
+  static const PubspecWarningCode INVALID_DEPENDENCY = PubspecWarningCode(
+    'INVALID_DEPENDENCY',
+    "Publishable packages can't have '{0}' dependencies.",
+    correction:
+        "Try adding a 'publish_to: none' entry to mark the package as not for publishing or remove the {0} dependency.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when there's no top-level `name` key.
+  // The `name` key provides the name of the package, which is required.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the package doesn't
+  // have a name:
+  //
+  // ```yaml
+  // %uri="pubspec.yaml"
+  // dependencies:
+  //   meta: ^1.0.2
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Add the top-level key `name` with a value that's the name of the package:
+  //
+  // ```yaml
+  // %uri="pubspec.yaml"
+  // name: example
+  // dependencies:
+  //   meta: ^1.0.2
+  // ```
+  static const PubspecWarningCode MISSING_NAME = PubspecWarningCode(
+    'MISSING_NAME',
+    "The 'name' field is required but missing.",
+    correction: "Try adding a field named 'name'.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * No parameters.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when the top-level `name` key has a
+  // value that isn't a string.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the value following the
+  // `name` key is a list:
+  //
+  // ```yaml
+  // %uri="pubspec.yaml"
+  // name:
+  //   - example
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Replace the value with a string:
+  //
+  // ```yaml
+  // %uri="pubspec.yaml"
+  // name: example
+  // ```
+  static const PubspecWarningCode NAME_NOT_STRING = PubspecWarningCode(
+    'NAME_NOT_STRING',
+    "The value of the 'name' field is required to be a string.",
+    correction: "Try converting the value to be a string.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the path to the dependency as given in the file.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a dependency has a `path` key
+  // referencing a directory that doesn't exist.
+  //
+  // #### Example
+  //
+  // Assuming that the directory `doesNotExist` doesn't exist, the following
+  // code produces this diagnostic because it's listed as the path of a package:
+  //
+  // ```yaml
+  // %uri="pubspec.yaml"
+  // name: example
+  // dependencies:
+  //   local_package:
+  //     path: doesNotExist
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the path is correct, then create a directory at that path.
+  //
+  // If the path isn't correct, then change the path to match the path to the
+  // root of the package.
+  static const PubspecWarningCode PATH_DOES_NOT_EXIST = PubspecWarningCode(
+    'PATH_DOES_NOT_EXIST',
+    "The path '{0}' doesn't exist.",
+    correction: "Try creating the referenced path or using a path that exists.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the path as given in the file.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a dependency has a `path` key
+  // whose value is a string, but isn't a POSIX-style path.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the path following the
+  // `path` key is a Windows path:
+  //
+  // ```yaml
+  // %uri="pubspec.yaml"
+  // name: example
+  // dependencies:
+  //   local_package:
+  //     path: E:\local_package
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Convert the path to a POSIX path.
+  static const PubspecWarningCode PATH_NOT_POSIX = PubspecWarningCode(
+    'PATH_NOT_POSIX',
+    "The path '{0}' isn't a POSIX-style path.",
+    correction: "Try converting the value to a POSIX-style path.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the path to the dependency as given in the file.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when a dependency has a `path` key
+  // that references a directory that doesn't contain a `pubspec.yaml` file.
+  //
+  // #### Example
+  //
+  // Assuming that the directory `local_package` doesn't contain a file named
+  // `pubspec.yaml`, the following code produces this diagnostic because it's
+  // listed as the path of a package:
+  //
+  // ```yaml
+  // %uri="pubspec.yaml"
+  // name: example
+  // dependencies:
+  //   local_package:
+  //     path: local_package
+  // ```
+  //
+  // #### Common fixes
+  //
+  // If the path is intended to be the root of a package, then add a
+  // `pubspec.yaml` file in the directory:
+  //
+  // ```yaml
+  // %uri="pubspec.yaml"
+  // name: local_package
+  // ```
+  //
+  // If the path is wrong, then replace it with a the correct path.
+  static const PubspecWarningCode PATH_PUBSPEC_DOES_NOT_EXIST =
+      PubspecWarningCode(
+    'PATH_PUBSPEC_DOES_NOT_EXIST',
+    "The directory '{0}' doesn't contain a pubspec.",
+    correction:
+        "Try creating a pubspec in the referenced directory or using a path that has a pubspec.",
+    hasPublishedDocs: true,
+  );
+
+  /**
+   * Parameters:
+   * 0: the name of the package in the dev_dependency list.
+   */
+  // #### Description
+  //
+  // The analyzer produces this diagnostic when there's an entry under
+  // `dev_dependencies` for a package that is also listed under `dependencies`.
+  // The packages under `dependencies` are available to all of the code in the
+  // package, so there's no need to also list them under `dev_dependencies`.
+  //
+  // #### Example
+  //
+  // The following code produces this diagnostic because the package `meta` is
+  // listed under both `dependencies` and `dev_dependencies`:
+  //
+  // ```yaml
+  // %uri='pubspec.yaml'
+  // name: example
+  // dependencies:
+  //   meta: ^1.0.2
+  // dev_dependencies:
+  //   meta: ^1.0.2
+  // ```
+  //
+  // #### Common fixes
+  //
+  // Remove the entry under `dev_dependencies` (and the `dev_dependencies` key
+  // if that's the only package listed there):
+  //
+  // ```yaml
+  // %uri='pubspec.yaml'
+  // name: example
+  // dependencies:
+  //   meta: ^1.0.2
+  // ```
+  static const PubspecWarningCode UNNECESSARY_DEV_DEPENDENCY =
+      PubspecWarningCode(
+    'UNNECESSARY_DEV_DEPENDENCY',
+    "The dev dependency on {0} is unnecessary because there is also a normal dependency on that package.",
+    correction: "Try removing the dev dependency.",
+    hasPublishedDocs: true,
+  );
+
+  /// Initialize a newly created error code to have the given [name].
+  const PubspecWarningCode(
+    String name,
+    String message, {
+    String? correction,
+    bool hasPublishedDocs = false,
+    bool isUnresolvedIdentifier = false,
+    String? uniqueName,
+  }) : super(
+          correction: correction,
+          hasPublishedDocs: hasPublishedDocs,
+          isUnresolvedIdentifier: isUnresolvedIdentifier,
+          message: message,
+          name: name,
+          uniqueName: 'PubspecWarningCode.${uniqueName ?? name}',
+        );
+
+  @override
+  ErrorSeverity get errorSeverity => ErrorSeverity.WARNING;
+
+  @override
+  ErrorType get type => ErrorType.STATIC_WARNING;
+}
diff --git a/pkg/analyzer/messages.yaml b/pkg/analyzer/messages.yaml
index 74e44a3..f5cd801 100644
--- a/pkg/analyzer/messages.yaml
+++ b/pkg/analyzer/messages.yaml
@@ -1,6 +1,42 @@
+# Copyright (c) 2021, the Dart project authors.  Please see the AUTHORS file
+# for details. All rights reserved. Use of this source code is governed by a
+# BSD-style license that can be found in the LICENSE file.
+
+# This file is organized as a two level map, where the outer key corresponds to
+# the name of an analyzer error class (e.g. CompileTimeErrorCode), and the inner
+# key corresponds to the name of a static variable in that class, describing a
+# single diagnostic message. Ideally, each entry contains three parts:
+#
+# 1. A message template (problemMessage).
+#
+# 2. A suggestion for how to correct the problem (correctionMessage).
+#
+# 3. User-facing documentation for the problem (documentation).
+#
+# A message shouldn't indicate which kind of diagnostic it is, for example,
+# warning or error. This is implied by the analyzer error class. For example,
+# all entries in `StaticWarningCode` are warnings.
+#
+# See the file [lib/src/fasta/diagnostics.md] for more details on how to write
+# good diagnostic messages.
+#
+# A message used for internal errors should have key that starts with
+# "InternalProblem". This way, UX review can prioritize it accordingly.
+#
+# Eventually, we'd like to have all diagnostics in one shared location. However,
+# for now, we have analyzer error codes and CFE error codes in separate files.
+# See `pkg/front_end/messages.yaml` for the CFE error codes.
+#
+# ## Parameter Substitution in problemMessage and correctionMessage
+#
+# The fields `problemMessage` and `correctionMessage` are subject to parameter
+# substitution. When the compiler reports a problem, it may also specify a list
+# of values to be substituted into the message. Parameters are declared using
+# placeholders of the form `{INTEGER}`, e.g. `{0}` is the zeroth parameter.
+
 AnalysisOptionsErrorCode:
   INCLUDED_FILE_PARSE_ERROR:
-    template: "{3} in {0}({1}..{2})"
+    problemMessage: "{3} in {0}({1}..{2})"
     comment: |-
       An error code indicating that there is a syntactic error in the included
       file.
@@ -11,7 +47,7 @@
       2: the ending offset of the text in the file that contains the error
       3: the error message
   PARSE_ERROR:
-    template: "{0}"
+    problemMessage: "{0}"
     comment: |-
       An error code indicating that there is a syntactic error in the file.
 
@@ -19,27 +55,27 @@
       0: the error message from the parse error
 AnalysisOptionsHintCode:
   PREVIEW_DART_2_SETTING_DEPRECATED:
-    template: "The 'enablePreviewDart2' setting is deprecated."
-    tip: It is no longer necessary to explicitly enable Dart 2.
+    problemMessage: "The 'enablePreviewDart2' setting is deprecated."
+    correctionMessage: It is no longer necessary to explicitly enable Dart 2.
     comment: |-
       An error code indicating that the enablePreviewDart2 setting is
       deprecated.
   STRONG_MODE_SETTING_DEPRECATED:
-    template: "The 'strong-mode: true' setting is deprecated."
-    tip: It is no longer necessary to explicitly enable strong mode.
+    problemMessage: "The 'strong-mode: true' setting is deprecated."
+    correctionMessage: It is no longer necessary to explicitly enable strong mode.
     comment: "An error code indicating that strong-mode: true is deprecated."
   SUPER_MIXINS_SETTING_DEPRECATED:
-    template: "The 'enableSuperMixins' setting is deprecated."
-    tip: "Support has been added to the language for 'mixin' based mixins."
+    problemMessage: "The 'enableSuperMixins' setting is deprecated."
+    correctionMessage: "Support has been added to the language for 'mixin' based mixins."
     comment: |-
       An error code indicating that the enablePreviewDart2 setting is
       deprecated.
 AnalysisOptionsWarningCode:
   ANALYSIS_OPTION_DEPRECATED:
-    template: "The option '{0}' is no longer supported."
+    problemMessage: "The option '{0}' is no longer supported."
     comment: An error code indicating that the given option is deprecated.
   INCLUDED_FILE_WARNING:
-    template: "Warning in the included options file {0}({1}..{2}): {3}"
+    problemMessage: "Warning in the included options file {0}({1}..{2}): {3}"
     comment: |-
       An error code indicating a specified include file has a warning.
 
@@ -49,7 +85,7 @@
       2: the ending offset of the text in the file that contains the warning
       3: the warning message
   INCLUDE_FILE_NOT_FOUND:
-    template: "The include file '{0}' in '{1}' can't be found when analyzing '{2}'."
+    problemMessage: "The include file '{0}' in '{1}' can't be found when analyzing '{2}'."
     comment: |-
       An error code indicating a specified include file could not be found.
 
@@ -58,23 +94,23 @@
       1: the path of the file containing the include directive
       2: the path of the context being analyzed
   INVALID_OPTION:
-    template: "Invalid option specified for '{0}': {1}"
+    problemMessage: "Invalid option specified for '{0}': {1}"
     comment: |-
       An error code indicating that a plugin is being configured with an invalid
       value for an option and a detail message is provided.
   INVALID_SECTION_FORMAT:
-    template: "Invalid format for the '{0}' section."
+    problemMessage: "Invalid format for the '{0}' section."
     comment: |-
       An error code indicating an invalid format for an options file section.
 
       Parameters:
       0: the section name
   SPEC_MODE_REMOVED:
-    template: "The option 'strong-mode: false' is no longer supported."
-    tip: "It's recommended to remove the 'strong-mode:' setting (and make your code Dart 2 compliant)."
+    problemMessage: "The option 'strong-mode: false' is no longer supported."
+    correctionMessage: "It's recommended to remove the 'strong-mode:' setting (and make your code Dart 2 compliant)."
     comment: "An error code indicating that strong-mode: false is has been removed."
   UNRECOGNIZED_ERROR_CODE:
-    template: "'{0}' isn't a recognized error code."
+    problemMessage: "'{0}' isn't a recognized error code."
     comment: |-
       An error code indicating that an unrecognized error code is being used to
       specify an error filter.
@@ -82,7 +118,7 @@
       Parameters:
       0: the unrecognized error code
   UNSUPPORTED_OPTION_WITHOUT_VALUES:
-    template: "The option '{1}' isn't supported by '{0}'."
+    problemMessage: "The option '{1}' isn't supported by '{0}'."
     comment: |-
       An error code indicating that a plugin is being configured with an
       unsupported option and legal options are provided.
@@ -91,7 +127,7 @@
       0: the plugin name
       1: the unsupported option key
   UNSUPPORTED_OPTION_WITH_LEGAL_VALUE:
-    template: "The option '{1}' isn't supported by '{0}'. Try using the only supported option: '{2}'."
+    problemMessage: "The option '{1}' isn't supported by '{0}'. Try using the only supported option: '{2}'."
     comment: |-
       An error code indicating that a plugin is being configured with an
       unsupported option where there is just one legal value.
@@ -101,8 +137,8 @@
       1: the unsupported option key
       2: the legal value
   UNSUPPORTED_OPTION_WITH_LEGAL_VALUES:
-    template: "The option '{1}' isn't supported by '{0}'."
-    tip: "Try using one of the supported options: {2}."
+    problemMessage: "The option '{1}' isn't supported by '{0}'."
+    correctionMessage: "Try using one of the supported options: {2}."
     comment: |-
       An error code indicating that a plugin is being configured with an
       unsupported option and legal options are provided.
@@ -112,8 +148,8 @@
       1: the unsupported option key
       2: legal values
   UNSUPPORTED_VALUE:
-    template: "The value '{1}' isn't supported by '{0}'."
-    tip: "Try using one of the supported options: {2}."
+    problemMessage: "The value '{1}' isn't supported by '{0}'."
+    correctionMessage: "Try using one of the supported options: {2}."
     comment: |-
       An error code indicating that an option entry is being configured with an
       unsupported value.
@@ -125,8 +161,8 @@
 CompileTimeErrorCode:
   ABSTRACT_FIELD_CONSTRUCTOR_INITIALIZER:
     sharedName: ABSTRACT_FIELD_INITIALIZER
-    template: "Abstract fields can't have initializers."
-    tip: "Try removing the field initializer or the 'abstract' keyword from the field declaration."
+    problemMessage: "Abstract fields can't have initializers."
+    correctionMessage: "Try removing the field initializer or the 'abstract' keyword from the field declaration."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -175,12 +211,12 @@
       }
       ```
   ABSTRACT_FIELD_INITIALIZER:
-    template: "Abstract fields can't have initializers."
-    tip: "Try removing the initializer or the 'abstract' keyword."
+    problemMessage: "Abstract fields can't have initializers."
+    correctionMessage: "Try removing the initializer or the 'abstract' keyword."
     hasPublishedDocs: true
     comment: No parameters.
   ABSTRACT_SUPER_MEMBER_REFERENCE:
-    template: "The {0} '{1}' is always abstract in the supertype."
+    problemMessage: "The {0} '{1}' is always abstract in the supertype."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -214,8 +250,8 @@
       TODO(brianwilkerson) This either needs to be generalized (use 'member'
        rather than '{0}') or split into multiple codes.
   AMBIGUOUS_EXPORT:
-    template: "The name '{0}' is defined in the libraries '{1}' and '{2}'."
-    tip: Try removing the export of one of the libraries, or explicitly hiding the name in one of the export directives.
+    problemMessage: "The name '{0}' is defined in the libraries '{1}' and '{2}'."
+    correctionMessage: Try removing the export of one of the libraries, or explicitly hiding the name in one of the export directives.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -269,8 +305,8 @@
       export 'b.dart' hide C;
       ```
   AMBIGUOUS_EXTENSION_MEMBER_ACCESS:
-    template: "A member named '{0}' is defined in extensions {1}, and none are more specific."
-    tip: Try using an extension override to specify the extension you want to be chosen.
+    problemMessage: "A member named '{0}' is defined in extensions {1}, and none are more specific."
+    correctionMessage: Try using an extension override to specify the extension you want to be chosen.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -333,8 +369,8 @@
       }
       ```
   AMBIGUOUS_IMPORT:
-    template: "The name '{0}' is defined in the libraries {1}."
-    tip: "Try using 'as prefix' for one of the import directives, or hiding the name from all but one of the imports."
+    problemMessage: "The name '{0}' is defined in the libraries {1}."
+    correctionMessage: "Try using 'as prefix' for one of the import directives, or hiding the name from all but one of the imports."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -406,8 +442,8 @@
       void f(a.C c1, b.C c2) {}
       ```
   AMBIGUOUS_SET_OR_MAP_LITERAL_BOTH:
-    template: "The literal can't be either a map or a set because it contains at least one literal map entry or a spread operator spreading a 'Map', and at least one element which is neither of these."
-    tip: Try removing or changing some of the elements so that all of the elements are consistent.
+    problemMessage: "The literal can't be either a map or a set because it contains at least one literal map entry or a spread operator spreading a 'Map', and at least one element which is neither of these."
+    correctionMessage: Try removing or changing some of the elements so that all of the elements are consistent.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -460,8 +496,8 @@
           {...a, for (String s in b) s: s, ...c};
       ```
   AMBIGUOUS_SET_OR_MAP_LITERAL_EITHER:
-    template: "This literal must be either a map or a set, but the elements don't have enough information for type inference to work."
-    tip: Try adding type arguments to the literal (one for sets, two for maps).
+    problemMessage: "This literal must be either a map or a set, but the elements don't have enough information for type inference to work."
+    correctionMessage: Try adding type arguments to the literal (one for sets, two for maps).
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -534,7 +570,7 @@
       }
       ```
   ARGUMENT_TYPE_NOT_ASSIGNABLE:
-    template: "The argument type '{0}' can't be assigned to the parameter type '{1}'."
+    problemMessage: "The argument type '{0}' can't be assigned to the parameter type '{1}'."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -595,7 +631,7 @@
       String g(num y) => f(y as String);
       ```
   ASSERT_IN_REDIRECTING_CONSTRUCTOR:
-    template: "A redirecting constructor can't have an 'assert' initializer."
+    problemMessage: "A redirecting constructor can't have an 'assert' initializer."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -642,8 +678,8 @@
       }
       ```
   ASSIGNMENT_TO_CONST:
-    template: "Constant variables can't be assigned a value."
-    tip: "Try removing the assignment, or remove the modifier 'const' from the variable."
+    problemMessage: "Constant variables can't be assigned a value."
+    correctionMessage: "Try removing the assignment, or remove the modifier 'const' from the variable."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -693,8 +729,8 @@
       }
       ```
   ASSIGNMENT_TO_FINAL:
-    template: "'{0}' can't be used as a setter because it's final."
-    tip: "Try finding a different setter, or making '{0}' non-final."
+    problemMessage: "'{0}' can't be used as a setter because it's final."
+    correctionMessage: "Try finding a different setter, or making '{0}' non-final."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -735,8 +771,8 @@
       }
       ```
   ASSIGNMENT_TO_FINAL_LOCAL:
-    template: "The final variable '{0}' can only be set once."
-    tip: "Try making '{0}' non-final."
+    problemMessage: "The final variable '{0}' can only be set once."
+    correctionMessage: "Try making '{0}' non-final."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -771,8 +807,8 @@
       }
       ```
   ASSIGNMENT_TO_FINAL_NO_SETTER:
-    template: "There isn’t a setter named '{0}' in class '{1}'."
-    tip: Try correcting the name to reference an existing setter, or declare the setter.
+    problemMessage: "There isn’t a setter named '{0}' in class '{1}'."
+    correctionMessage: Try correcting the name to reference an existing setter, or declare the setter.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -828,7 +864,7 @@
       }
       ```
   ASSIGNMENT_TO_FUNCTION:
-    template: "Functions can't be assigned a value."
+    problemMessage: "Functions can't be assigned a value."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -875,7 +911,7 @@
       }
       ```
   ASSIGNMENT_TO_METHOD:
-    template: "Methods can't be assigned a value."
+    problemMessage: "Methods can't be assigned a value."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -903,7 +939,7 @@
 
       Rewrite the code so that there isn't an assignment to a method.
   ASSIGNMENT_TO_TYPE:
-    template: "Types can't be assigned a value."
+    problemMessage: "Types can't be assigned a value."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -939,8 +975,8 @@
       }
       ```
   ASYNC_FOR_IN_WRONG_CONTEXT:
-    template: The async for-in loop can only be used in an async function.
-    tip: "Try marking the function body with either 'async' or 'async*', or removing the 'await' before the for-in loop."
+    problemMessage: The async for-in loop can only be used in an async function.
+    correctionMessage: "Try marking the function body with either 'async' or 'async*', or removing the 'await' before the for-in loop."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -998,8 +1034,8 @@
       }
       ```
   AWAIT_IN_LATE_LOCAL_VARIABLE_INITIALIZER:
-    template: "The 'await' expression can't be used in a 'late' local variable's initializer."
-    tip: "Try removing the 'late' modifier, or rewriting the initializer without using the 'await' expression."
+    problemMessage: "The 'await' expression can't be used in a 'late' local variable's initializer."
+    correctionMessage: "Try removing the 'late' modifier, or rewriting the initializer without using the 'await' expression."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -1040,15 +1076,15 @@
       }
       ```
   AWAIT_IN_WRONG_CONTEXT:
-    template: The await expression can only be used in an async function.
-    tip: "Try marking the function body with either 'async' or 'async*'."
+    problemMessage: The await expression can only be used in an async function.
+    correctionMessage: "Try marking the function body with either 'async' or 'async*'."
     comment: |-
       16.30 Await Expressions: It is a compile-time error if the function
       immediately enclosing _a_ is not declared asynchronous. (Where _a_ is the
       await expression.)
   BODY_MIGHT_COMPLETE_NORMALLY:
-    template: "The body might complete normally, causing 'null' to be returned, but the return type is a potentially non-nullable type."
-    tip: Try adding either a return or a throw statement at the end.
+    problemMessage: "The body might complete normally, causing 'null' to be returned, but the return type is a potentially non-nullable type."
+    correctionMessage: Try adding either a return or a throw statement at the end.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -1122,7 +1158,7 @@
       }
       ```
   BREAK_LABEL_ON_SWITCH_MEMBER:
-    template: "A break label resolves to the 'case' or 'default' statement."
+    problemMessage: "A break label resolves to the 'case' or 'default' statement."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -1177,8 +1213,8 @@
       }
       ```
   BUILT_IN_IDENTIFIER_AS_TYPE:
-    template: "The built-in identifier '{0}' can't be used as a type."
-    tip: Try correcting the name to match an existing type.
+    problemMessage: "The built-in identifier '{0}' can't be used as a type."
+    correctionMessage: Try correcting the name to match an existing type.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -1207,8 +1243,8 @@
       ```
   BUILT_IN_IDENTIFIER_AS_EXTENSION_NAME:
     sharedName: BUILT_IN_IDENTIFIER_IN_DECLARATION
-    template: "The built-in identifier '{0}' can't be used as an extension name."
-    tip: Try choosing a different name for the extension.
+    problemMessage: "The built-in identifier '{0}' can't be used as an extension name."
+    correctionMessage: Try choosing a different name for the extension.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -1235,39 +1271,39 @@
       Choose a different name for the declaration.
   BUILT_IN_IDENTIFIER_AS_PREFIX_NAME:
     sharedName: BUILT_IN_IDENTIFIER_IN_DECLARATION
-    template: "The built-in identifier '{0}' can't be used as a prefix name."
-    tip: Try choosing a different name for the prefix.
+    problemMessage: "The built-in identifier '{0}' can't be used as a prefix name."
+    correctionMessage: Try choosing a different name for the prefix.
     hasPublishedDocs: true
     comment: |-
       Parameters:
       0: the built-in identifier that is being used
   BUILT_IN_IDENTIFIER_AS_TYPE_NAME:
     sharedName: BUILT_IN_IDENTIFIER_IN_DECLARATION
-    template: "The built-in identifier '{0}' can't be used as a type name."
-    tip: Try choosing a different name for the type.
+    problemMessage: "The built-in identifier '{0}' can't be used as a type name."
+    correctionMessage: Try choosing a different name for the type.
     hasPublishedDocs: true
     comment: |-
       Parameters:
       0: the built-in identifier that is being used
   BUILT_IN_IDENTIFIER_AS_TYPE_PARAMETER_NAME:
     sharedName: BUILT_IN_IDENTIFIER_IN_DECLARATION
-    template: "The built-in identifier '{0}' can't be used as a type parameter name."
-    tip: Try choosing a different name for the type parameter.
+    problemMessage: "The built-in identifier '{0}' can't be used as a type parameter name."
+    correctionMessage: Try choosing a different name for the type parameter.
     hasPublishedDocs: true
     comment: |-
       Parameters:
       0: the built-in identifier that is being used
   BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME:
     sharedName: BUILT_IN_IDENTIFIER_IN_DECLARATION
-    template: "The built-in identifier '{0}' can't be used as a typedef name."
-    tip: Try choosing a different name for the typedef.
+    problemMessage: "The built-in identifier '{0}' can't be used as a typedef name."
+    correctionMessage: Try choosing a different name for the typedef.
     hasPublishedDocs: true
     comment: |-
       Parameters:
       0: the built-in identifier that is being used
   CASE_BLOCK_NOT_TERMINATED:
-    template: "The last statement of the 'case' should be 'break', 'continue', 'rethrow', 'return', or 'throw'."
-    tip: Try adding one of the required statements.
+    problemMessage: "The last statement of the 'case' should be 'break', 'continue', 'rethrow', 'return', or 'throw'."
+    correctionMessage: Try adding one of the required statements.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -1311,7 +1347,7 @@
       }
       ```
   CASE_EXPRESSION_TYPE_IMPLEMENTS_EQUALS:
-    template: "The switch case expression type '{0}' can't override the '==' operator."
+    problemMessage: "The switch case expression type '{0}' can't override the '==' operator."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -1412,7 +1448,7 @@
       }
       ```
   CASE_EXPRESSION_TYPE_IS_NOT_SWITCH_EXPRESSION_SUBTYPE:
-    template: "The switch case expression type '{0}' must be a subtype of the switch expression type '{1}'."
+    problemMessage: "The switch case expression type '{0}' must be a subtype of the switch expression type '{1}'."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -1465,8 +1501,8 @@
       }
       ```
   CAST_TO_NON_TYPE:
-    template: "The name '{0}' isn't a type, so it can't be used in an 'as' expression."
-    tip: "Try changing the name to the name of an existing type, or creating a type with the name '{0}'."
+    problemMessage: "The name '{0}' isn't a type, so it can't be used in an 'as' expression."
+    correctionMessage: "Try changing the name to the name of an existing type, or creating a type with the name '{0}'."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -1495,35 +1531,35 @@
       ```
   CLASS_INSTANTIATION_ACCESS_TO_INSTANCE_MEMBER:
     sharedName: CLASS_INSTANTIATION_ACCESS_TO_MEMBER
-    template: "The instance member '{0}' can't be accessed on a class instantiation."
-    tip: Try changing the member name to the name of a constructor.
+    problemMessage: "The instance member '{0}' can't be accessed on a class instantiation."
+    correctionMessage: Try changing the member name to the name of a constructor.
     comment: |-
       Parameters:
       0: the name of the member
   CLASS_INSTANTIATION_ACCESS_TO_UNKNOWN_MEMBER:
     sharedName: CLASS_INSTANTIATION_ACCESS_TO_MEMBER
-    template: "The class '{0} doesn't have a constructor named '{1}."
-    tip: "Try invoking a different constructor, or defining a constructor named '{1}'."
+    problemMessage: "The class '{0} doesn't have a constructor named '{1}."
+    correctionMessage: "Try invoking a different constructor, or defining a constructor named '{1}'."
     comment: |-
       Parameters:
       0: the name of the member
   CLASS_INSTANTIATION_ACCESS_TO_STATIC_MEMBER:
     sharedName: CLASS_INSTANTIATION_ACCESS_TO_MEMBER
-    template: "The static member '{0}' can't be accessed on a class instantiation."
-    tip: Try removing the type arguments from the class name, or changing the member name to the name of a constructor.
+    problemMessage: "The static member '{0}' can't be accessed on a class instantiation."
+    correctionMessage: Try removing the type arguments from the class name, or changing the member name to the name of a constructor.
     comment: |-
       Parameters:
       0: the name of the member
   NON_CONSTANT_MAP_KEY_FROM_DEFERRED_LIBRARY:
     sharedName: COLLECTION_ELEMENT_FROM_DEFERRED_LIBRARY
-    template: "Constant values from a deferred library can't be used as keys in a 'const' map literal."
-    tip: "Try removing the keyword 'const' from the map literal or removing the keyword 'deferred' from the import."
+    problemMessage: "Constant values from a deferred library can't be used as keys in a 'const' map literal."
+    correctionMessage: "Try removing the keyword 'const' from the map literal or removing the keyword 'deferred' from the import."
     hasPublishedDocs: true
     comment: No parameters.
   NON_CONSTANT_LIST_ELEMENT_FROM_DEFERRED_LIBRARY:
     sharedName: COLLECTION_ELEMENT_FROM_DEFERRED_LIBRARY
-    template: "Constant values from a deferred library can't be used as values in a 'const' list literal."
-    tip: "Try removing the keyword 'const' from the list literal or removing the keyword 'deferred' from the import."
+    problemMessage: "Constant values from a deferred library can't be used as values in a 'const' list literal."
+    correctionMessage: "Try removing the keyword 'const' from the list literal or removing the keyword 'deferred' from the import."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -1585,19 +1621,19 @@
       ```
   SET_ELEMENT_FROM_DEFERRED_LIBRARY:
     sharedName: COLLECTION_ELEMENT_FROM_DEFERRED_LIBRARY
-    template: "Constant values from a deferred library can't be used as values in a 'const' set literal."
-    tip: "Try removing the keyword 'const' from the set literal or removing the keyword 'deferred' from the import."
+    problemMessage: "Constant values from a deferred library can't be used as values in a 'const' set literal."
+    correctionMessage: "Try removing the keyword 'const' from the set literal or removing the keyword 'deferred' from the import."
     hasPublishedDocs: true
     comment: No parameters.
   NON_CONSTANT_MAP_VALUE_FROM_DEFERRED_LIBRARY:
     sharedName: COLLECTION_ELEMENT_FROM_DEFERRED_LIBRARY
-    template: "Constant values from a deferred library can't be used as values in a 'const' map literal."
-    tip: "Try removing the keyword 'const' from the map literal or removing the keyword 'deferred' from the import."
+    problemMessage: "Constant values from a deferred library can't be used as values in a 'const' map literal."
+    correctionMessage: "Try removing the keyword 'const' from the map literal or removing the keyword 'deferred' from the import."
     hasPublishedDocs: true
     comment: No parameters.
   CONCRETE_CLASS_WITH_ABSTRACT_MEMBER:
-    template: "'{0}' must have a method body because '{1}' isn't abstract."
-    tip: "Try making '{1}' abstract, or adding a body to '{0}'."
+    problemMessage: "'{0}' must have a method body because '{1}' isn't abstract."
+    correctionMessage: "Try making '{1}' abstract, or adding a body to '{0}'."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -1642,8 +1678,8 @@
       ```
   CONFLICTING_CONSTRUCTOR_AND_STATIC_FIELD:
     sharedName: CONFLICTING_CONSTRUCTOR_AND_STATIC_MEMBER
-    template: "'{0}' can't be used to name both a constructor and a static field in this class."
-    tip: Try renaming either the constructor or the field.
+    problemMessage: "'{0}' can't be used to name both a constructor and a static field in this class."
+    correctionMessage: Try renaming either the constructor or the field.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -1683,31 +1719,31 @@
       Rename either the member or the constructor.
   CONFLICTING_CONSTRUCTOR_AND_STATIC_GETTER:
     sharedName: CONFLICTING_CONSTRUCTOR_AND_STATIC_MEMBER
-    template: "'{0}' can't be used to name both a constructor and a static getter in this class."
-    tip: Try renaming either the constructor or the getter.
+    problemMessage: "'{0}' can't be used to name both a constructor and a static getter in this class."
+    correctionMessage: Try renaming either the constructor or the getter.
     hasPublishedDocs: true
     comment: |-
       Parameters:
       0: the name of the constructor and getter
   CONFLICTING_CONSTRUCTOR_AND_STATIC_METHOD:
     sharedName: CONFLICTING_CONSTRUCTOR_AND_STATIC_MEMBER
-    template: "'{0}' can't be used to name both a constructor and a static method in this class."
-    tip: Try renaming either the constructor or the method.
+    problemMessage: "'{0}' can't be used to name both a constructor and a static method in this class."
+    correctionMessage: Try renaming either the constructor or the method.
     hasPublishedDocs: true
     comment: |-
       Parameters:
       0: the name of the constructor
   CONFLICTING_CONSTRUCTOR_AND_STATIC_SETTER:
     sharedName: CONFLICTING_CONSTRUCTOR_AND_STATIC_MEMBER
-    template: "'{0}' can't be used to name both a constructor and a static setter in this class."
-    tip: Try renaming either the constructor or the setter.
+    problemMessage: "'{0}' can't be used to name both a constructor and a static setter in this class."
+    correctionMessage: Try renaming either the constructor or the setter.
     hasPublishedDocs: true
     comment: |-
       Parameters:
       0: the name of the constructor and setter
   CONFLICTING_FIELD_AND_METHOD:
-    template: "Class '{0}' can't define field '{1}' and have method '{2}.{1}' with the same name."
-    tip: "Try converting the getter to a method, or renaming the field to a name that doesn't conflict."
+    problemMessage: "Class '{0}' can't define field '{1}' and have method '{2}.{1}' with the same name."
+    correctionMessage: "Try converting the getter to a method, or renaming the field to a name that doesn't conflict."
     comment: |-
       10.11 Class Member Conflicts: Let `C` be a class. It is a compile-time
       error if `C` declares a getter or a setter with basename `n`, and has a
@@ -1718,7 +1754,7 @@
       1: the name of the conflicting field
       2: the name of the class defining the method with which the field conflicts
   CONFLICTING_GENERIC_INTERFACES:
-    template: "The class '{0}' can't implement both '{1}' and '{2}' because the type arguments are different."
+    problemMessage: "The class '{0}' can't implement both '{1}' and '{2}' because the type arguments are different."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -1758,8 +1794,8 @@
       class C extends A<String> implements B {}
       ```
   CONFLICTING_METHOD_AND_FIELD:
-    template: "Class '{0}' can't define method '{1}' and have field '{2}.{1}' with the same name."
-    tip: "Try converting the method to a getter, or renaming the method to a name that doesn't conflict."
+    problemMessage: "Class '{0}' can't define method '{1}' and have field '{2}.{1}' with the same name."
+    correctionMessage: "Try converting the method to a getter, or renaming the method to a name that doesn't conflict."
     comment: |-
       10.11 Class Member Conflicts: Let `C` be a class. It is a compile-time
       error if `C` declares a method named `n`, and has a getter or a setter
@@ -1770,8 +1806,8 @@
       1: the name of the conflicting method
       2: the name of the class defining the field with which the method conflicts
   CONFLICTING_STATIC_AND_INSTANCE:
-    template: "Class '{0}' can't define static member '{1}' and have instance member '{2}.{1}' with the same name."
-    tip: "Try renaming the member to a name that doesn't conflict."
+    problemMessage: "Class '{0}' can't define static member '{1}' and have instance member '{2}.{1}' with the same name."
+    correctionMessage: "Try renaming the member to a name that doesn't conflict."
     comment: |-
       10.11 Class Member Conflicts: Let `C` be a class. It is a compile-time
       error if `C` declares a static member with basename `n`, and has an
@@ -1783,8 +1819,8 @@
       2: the name of the class defining the field with which the method conflicts
   CONFLICTING_TYPE_VARIABLE_AND_CLASS:
     sharedName: CONFLICTING_TYPE_VARIABLE_AND_CONTAINER
-    template: "'{0}' can't be used to name both a type variable and the class in which the type variable is defined."
-    tip: Try renaming either the type variable or the class.
+    problemMessage: "'{0}' can't be used to name both a type variable and the class in which the type variable is defined."
+    correctionMessage: Try renaming either the type variable or the class.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -1814,24 +1850,24 @@
       ```
   CONFLICTING_TYPE_VARIABLE_AND_EXTENSION:
     sharedName: CONFLICTING_TYPE_VARIABLE_AND_CONTAINER
-    template: "'{0}' can't be used to name both a type variable and the extension in which the type variable is defined."
-    tip: Try renaming either the type variable or the extension.
+    problemMessage: "'{0}' can't be used to name both a type variable and the extension in which the type variable is defined."
+    correctionMessage: Try renaming either the type variable or the extension.
     hasPublishedDocs: true
     comment: |-
       Parameters:
       0: the name of the type variable
   CONFLICTING_TYPE_VARIABLE_AND_MIXIN:
     sharedName: CONFLICTING_TYPE_VARIABLE_AND_CONTAINER
-    template: "'{0}' can't be used to name both a type variable and the mixin in which the type variable is defined."
-    tip: Try renaming either the type variable or the mixin.
+    problemMessage: "'{0}' can't be used to name both a type variable and the mixin in which the type variable is defined."
+    correctionMessage: Try renaming either the type variable or the mixin.
     hasPublishedDocs: true
     comment: |-
       Parameters:
       0: the name of the type variable
   CONFLICTING_TYPE_VARIABLE_AND_MEMBER_CLASS:
     sharedName: CONFLICTING_TYPE_VARIABLE_AND_MEMBER
-    template: "'{0}' can't be used to name both a type variable and a member in this class."
-    tip: Try renaming either the type variable or the member.
+    problemMessage: "'{0}' can't be used to name both a type variable and a member in this class."
+    correctionMessage: Try renaming either the type variable or the member.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -1865,29 +1901,29 @@
       ```
   CONFLICTING_TYPE_VARIABLE_AND_MEMBER_MIXIN:
     sharedName: CONFLICTING_TYPE_VARIABLE_AND_MEMBER
-    template: "'{0}' can't be used to name both a type variable and a member in this mixin."
-    tip: Try renaming either the type variable or the member.
+    problemMessage: "'{0}' can't be used to name both a type variable and a member in this mixin."
+    correctionMessage: Try renaming either the type variable or the member.
     hasPublishedDocs: true
     comment: |-
       Parameters:
       0: the name of the type variable
   CONFLICTING_TYPE_VARIABLE_AND_MEMBER_EXTENSION:
     sharedName: CONFLICTING_TYPE_VARIABLE_AND_MEMBER
-    template: "'{0}' can't be used to name both a type variable and a member in this extension."
-    tip: Try renaming either the type variable or the member.
+    problemMessage: "'{0}' can't be used to name both a type variable and a member in this extension."
+    correctionMessage: Try renaming either the type variable or the member.
     hasPublishedDocs: true
     comment: |-
       Parameters:
       0: the name of the type variable
   CONST_CONSTRUCTOR_FIELD_TYPE_MISMATCH:
-    template: "In a const constructor, a value of type '{0}' can't be assigned to the field '{1}', which has type '{2}'."
-    tip: "Try using a subtype, or removing the keyword 'const'."
+    problemMessage: "In a const constructor, a value of type '{0}' can't be assigned to the field '{1}', which has type '{2}'."
+    correctionMessage: "Try using a subtype, or removing the keyword 'const'."
     comment: |-
       16.12.2 Const: It is a compile-time error if evaluation of a constant
       object results in an uncaught exception being thrown.
   CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH:
-    template: "A value of type '{0}' can't be assigned to a parameter of type '{1}' in a const constructor."
-    tip: "Try using a subtype, or removing the keyword 'const'."
+    problemMessage: "A value of type '{0}' can't be assigned to a parameter of type '{1}' in a const constructor."
+    correctionMessage: "Try using a subtype, or removing the keyword 'const'."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -1937,14 +1973,14 @@
       }
       ```
   CONST_CONSTRUCTOR_THROWS_EXCEPTION:
-    template: "Const constructors can't throw exceptions."
-    tip: "Try removing the throw statement, or removing the keyword 'const'."
+    problemMessage: "Const constructors can't throw exceptions."
+    correctionMessage: "Try removing the throw statement, or removing the keyword 'const'."
     comment: |-
       16.12.2 Const: It is a compile-time error if evaluation of a constant
       object results in an uncaught exception being thrown.
   CONST_CONSTRUCTOR_WITH_FIELD_INITIALIZED_BY_NON_CONST:
-    template: "Can't define the 'const' constructor because the field '{0}' is initialized with a non-constant value."
-    tip: "Try initializing the field to a constant value, or removing the keyword 'const' from the constructor."
+    problemMessage: "Can't define the 'const' constructor because the field '{0}' is initialized with a non-constant value."
+    correctionMessage: "Try initializing the field to a constant value, or removing the keyword 'const' from the constructor."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -1989,8 +2025,8 @@
       }
       ```
   CONST_CONSTRUCTOR_WITH_MIXIN_WITH_FIELD:
-    template: "This constructor can't be declared 'const' because a mixin adds the instance field: {0}."
-    tip: "Try removing the 'const' keyword or removing the 'with' clause from the class declaration, or removing the field from the mixin class."
+    problemMessage: "This constructor can't be declared 'const' because a mixin adds the instance field: {0}."
+    correctionMessage: "Try removing the 'const' keyword or removing the 'with' clause from the class declaration, or removing the field from the mixin class."
     comment: |-
       7.6.3 Constant Constructors: The superinitializer that appears, explicitly
       or implicitly, in the initializer list of a constant constructor must
@@ -2006,8 +2042,8 @@
       0: the name of the instance field.
   CONST_CONSTRUCTOR_WITH_MIXIN_WITH_FIELDS:
     sharedName: CONST_CONSTRUCTOR_WITH_MIXIN_WITH_FIELD
-    template: "This constructor can't be declared 'const' because the mixins add the instance fields: {0}."
-    tip: "Try removing the 'const' keyword or removing the 'with' clause from the class declaration, or removing the fields from the mixin classes."
+    problemMessage: "This constructor can't be declared 'const' because the mixins add the instance fields: {0}."
+    correctionMessage: "Try removing the 'const' keyword or removing the 'with' clause from the class declaration, or removing the fields from the mixin classes."
     comment: |-
       7.6.3 Constant Constructors: The superinitializer that appears, explicitly
       or implicitly, in the initializer list of a constant constructor must
@@ -2022,8 +2058,8 @@
       Parameters:
       0: the names of the instance fields.
   CONST_CONSTRUCTOR_WITH_NON_CONST_SUPER:
-    template: "A constant constructor can't call a non-constant super constructor of '{0}'."
-    tip: "Try calling a constant constructor in the superclass, or removing the keyword 'const' from the constructor."
+    problemMessage: "A constant constructor can't call a non-constant super constructor of '{0}'."
+    correctionMessage: "Try calling a constant constructor in the superclass, or removing the keyword 'const' from the constructor."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -2097,8 +2133,8 @@
       }
       ```
   CONST_CONSTRUCTOR_WITH_NON_FINAL_FIELD:
-    template: "Can't define a const constructor for a class with non-final fields."
-    tip: "Try making all of the fields final, or removing the keyword 'const' from the constructor."
+    problemMessage: "Can't define a const constructor for a class with non-final fields."
+    correctionMessage: "Try making all of the fields final, or removing the keyword 'const' from the constructor."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -2144,8 +2180,8 @@
       }
       ```
   CONST_DEFERRED_CLASS:
-    template: "Deferred classes can't be created with 'const'."
-    tip: "Try using 'new' to create the instance, or changing the import to not be deferred."
+    problemMessage: "Deferred classes can't be created with 'const'."
+    correctionMessage: "Try using 'new' to create the instance, or changing the import to not be deferred."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -2190,51 +2226,51 @@
       const json2 = convert.JsonCodec();
       ```
   CONST_EVAL_THROWS_EXCEPTION:
-    template: Evaluation of this constant expression throws an exception.
+    problemMessage: Evaluation of this constant expression throws an exception.
     comment: |-
       16.12.2 Const: It is a compile-time error if evaluation of a constant
       object results in an uncaught exception being thrown.
   CONST_EVAL_THROWS_IDBZE:
-    template: Evaluation of this constant expression throws an IntegerDivisionByZeroException.
+    problemMessage: Evaluation of this constant expression throws an IntegerDivisionByZeroException.
     comment: |-
       16.12.2 Const: It is a compile-time error if evaluation of a constant
       object results in an uncaught exception being thrown.
   CONST_EVAL_TYPE_BOOL:
-    template: "In constant expressions, operands of this operator must be of type 'bool'."
+    problemMessage: "In constant expressions, operands of this operator must be of type 'bool'."
     comment: |-
       16.12.2 Const: An expression of one of the forms !e, e1 && e2 or e1 || e2,
       where e, e1 and e2 are constant expressions that evaluate to a boolean
       value.
   CONST_EVAL_TYPE_BOOL_INT:
-    template: "In constant expressions, operands of this operator must be of type 'bool' or 'int'."
+    problemMessage: "In constant expressions, operands of this operator must be of type 'bool' or 'int'."
     comment: |-
       16.12.2 Const: An expression of one of the forms !e, e1 && e2 or e1 || e2,
       where e, e1 and e2 are constant expressions that evaluate to a boolean
       value.
   CONST_EVAL_TYPE_BOOL_NUM_STRING:
-    template: "In constant expressions, operands of this operator must be of type 'bool', 'num', 'String' or 'null'."
+    problemMessage: "In constant expressions, operands of this operator must be of type 'bool', 'num', 'String' or 'null'."
     comment: |-
       16.12.2 Const: An expression of one of the forms e1 == e2 or e1 != e2 where
       e1 and e2 are constant expressions that evaluate to a numeric, string or
       boolean value or to null.
   CONST_EVAL_TYPE_INT:
-    template: "In constant expressions, operands of this operator must be of type 'int'."
+    problemMessage: "In constant expressions, operands of this operator must be of type 'int'."
     comment: |-
       16.12.2 Const: An expression of one of the forms ~e, e1 ^ e2, e1 & e2,
       e1 | e2, e1 >> e2 or e1 << e2, where e, e1 and e2 are constant expressions
       that evaluate to an integer value or to null.
   CONST_EVAL_TYPE_NUM:
-    template: "In constant expressions, operands of this operator must be of type 'num'."
+    problemMessage: "In constant expressions, operands of this operator must be of type 'num'."
     comment: |-
       16.12.2 Const: An expression of one of the forms e, e1 + e2, e1 - e2, e1
       e2, e1 / e2, e1 ~/ e2, e1 > e2, e1 < e2, e1 >= e2, e1 <= e2 or e1 % e2,
       where e, e1 and e2 are constant expressions that evaluate to a numeric
       value or to null.
   CONST_EVAL_TYPE_TYPE:
-    template: "In constant expressions, operands of this operator must be of type 'Type'."
+    problemMessage: "In constant expressions, operands of this operator must be of type 'Type'."
   CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE:
-    template: Const variables must be initialized with a constant value.
-    tip: Try changing the initializer to be a constant expression.
+    problemMessage: Const variables must be initialized with a constant value.
+    correctionMessage: Try changing the initializer to be a constant expression.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -2272,8 +2308,8 @@
       final y = x;
       ```
   CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE_FROM_DEFERRED_LIBRARY:
-    template: "Constant values from a deferred library can't be used to initialize a 'const' variable."
-    tip: Try initializing the variable without referencing members of the deferred library, or changing the import to not be deferred.
+    problemMessage: "Constant values from a deferred library can't be used to initialize a 'const' variable."
+    correctionMessage: Try initializing the variable without referencing members of the deferred library, or changing the import to not be deferred.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -2317,8 +2353,8 @@
       const pi = 3.14;
       ```
   CONST_INSTANCE_FIELD:
-    template: Only static fields can be declared as const.
-    tip: "Try declaring the field as final, or adding the keyword 'static'."
+    problemMessage: Only static fields can be declared as const.
+    correctionMessage: "Try declaring the field as final, or adding the keyword 'static'."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -2357,8 +2393,8 @@
       }
       ```
   CONST_MAP_KEY_EXPRESSION_TYPE_IMPLEMENTS_EQUALS:
-    template: "The type of a key in a constant map can't override the '==' operator, but the class '{0}' does."
-    tip: "Try using a different value for the key, or removing the keyword 'const' from the map."
+    problemMessage: "The type of a key in a constant map can't override the '==' operator, but the class '{0}' does."
+    correctionMessage: "Try using a different value for the key, or removing the keyword 'const' from the map."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -2413,8 +2449,8 @@
       final map = {C() : 0};
       ```
   CONST_NOT_INITIALIZED:
-    template: "The constant '{0}' must be initialized."
-    tip: Try adding an initialization to the declaration.
+    problemMessage: "The constant '{0}' must be initialized."
+    correctionMessage: Try adding an initialization to the declaration.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -2441,8 +2477,8 @@
       const c = 'c';
       ```
   CONST_SET_ELEMENT_TYPE_IMPLEMENTS_EQUALS:
-    template: "The type of an element in a constant set can't override the '==' operator, but the type '{0}' does."
-    tip: "Try using a different value for the element, or removing the keyword 'const' from the set."
+    problemMessage: "The type of an element in a constant set can't override the '==' operator, but the type '{0}' does."
+    correctionMessage: "Try using a different value for the element, or removing the keyword 'const' from the set."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -2497,7 +2533,7 @@
       final set = {C()};
       ```
   CONST_SPREAD_EXPECTED_LIST_OR_SET:
-    template: A list or a set is expected in this spread.
+    problemMessage: A list or a set is expected in this spread.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -2529,7 +2565,7 @@
       const List<int> list2 = [...list1];
       ```
   CONST_SPREAD_EXPECTED_MAP:
-    template: A map is expected in this spread.
+    problemMessage: A map is expected in this spread.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -2559,8 +2595,8 @@
       const Map<String, int> map2 = {...map1};
       ```
   CONST_WITH_NON_CONST:
-    template: "The constructor being called isn't a const constructor."
-    tip: "Try removing 'const' from the constructor invocation."
+    problemMessage: "The constructor being called isn't a const constructor."
+    correctionMessage: "Try removing 'const' from the constructor invocation."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -2606,8 +2642,8 @@
       A f() => A();
       ```
   CONST_WITH_NON_CONSTANT_ARGUMENT:
-    template: Arguments of a constant creation must be constant expressions.
-    tip: "Try making the argument a valid constant, or use 'new' to call the constructor."
+    problemMessage: Arguments of a constant creation must be constant expressions.
+    correctionMessage: "Try making the argument a valid constant, or use 'new' to call the constructor."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -2641,8 +2677,8 @@
       C f(int i) => C(i);
       ```
   CONST_WITH_TYPE_PARAMETERS:
-    template: "A constant creation can't use a type parameter as a type argument."
-    tip: Try replacing the type parameter with a different type.
+    problemMessage: "A constant creation can't use a type parameter as a type argument."
+    correctionMessage: Try replacing the type parameter with a different type.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -2691,19 +2727,19 @@
       ```
   CONST_WITH_TYPE_PARAMETERS_CONSTRUCTOR_TEAROFF:
     sharedName: CONST_WITH_TYPE_PARAMETERS
-    template: "A constant constructor tearoff can't use a type parameter as a type argument."
-    tip: Try replacing the type parameter with a different type.
+    problemMessage: "A constant constructor tearoff can't use a type parameter as a type argument."
+    correctionMessage: Try replacing the type parameter with a different type.
     hasPublishedDocs: true
     comment: No parameters.
   CONST_WITH_TYPE_PARAMETERS_FUNCTION_TEAROFF:
     sharedName: CONST_WITH_TYPE_PARAMETERS
-    template: "A constant function tearoff can't use a type parameter as a type argument."
-    tip: Try replacing the type parameter with a different type.
+    problemMessage: "A constant function tearoff can't use a type parameter as a type argument."
+    correctionMessage: Try replacing the type parameter with a different type.
     hasPublishedDocs: true
     comment: No parameters.
   CONST_WITH_UNDEFINED_CONSTRUCTOR:
-    template: "The class '{0}' doesn't have a constant constructor '{1}'."
-    tip: Try calling a different constructor.
+    problemMessage: "The class '{0}' doesn't have a constant constructor '{1}'."
+    correctionMessage: Try calling a different constructor.
     comment: |-
       16.12.2 Const: It is a compile-time error if <i>T.id</i> is not the name of
       a constant constructor declared by the type <i>T</i>.
@@ -2712,8 +2748,8 @@
       0: the name of the type
       1: the name of the requested constant constructor
   CONST_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT:
-    template: "The class '{0}' doesn't have an unnamed constant constructor."
-    tip: Try calling a different constructor.
+    problemMessage: "The class '{0}' doesn't have an unnamed constant constructor."
+    correctionMessage: Try calling a different constructor.
     comment: |-
       16.12.2 Const: It is a compile-time error if <i>T.id</i> is not the name of
       a constant constructor declared by the type <i>T</i>.
@@ -2721,17 +2757,17 @@
       Parameters:
       0: the name of the type
   CONTINUE_LABEL_ON_SWITCH:
-    template: A continue label resolves to switch, must be loop or switch member
+    problemMessage: A continue label resolves to switch, must be loop or switch member
   COULD_NOT_INFER:
-    template: "Couldn't infer type parameter '{0}'.{1}"
+    problemMessage: "Couldn't infer type parameter '{0}'.{1}"
     comment: |-
       Parameters:
       0: the name of the type parameter
       1: detail text explaining why the type could not be inferred
   NEW_WITH_NON_TYPE:
     sharedName: CREATION_WITH_NON_TYPE
-    template: "The name '{0}' isn't a class."
-    tip: Try correcting the name to match an existing class.
+    problemMessage: "The name '{0}' isn't a class."
+    correctionMessage: Try correcting the name to match an existing class.
     isUnresolvedIdentifier: true
     hasPublishedDocs: true
     comment: |-
@@ -2781,16 +2817,16 @@
       ```
   CONST_WITH_NON_TYPE:
     sharedName: CREATION_WITH_NON_TYPE
-    template: "The name '{0}' isn't a class."
-    tip: Try correcting the name to match an existing class.
+    problemMessage: "The name '{0}' isn't a class."
+    correctionMessage: Try correcting the name to match an existing class.
     isUnresolvedIdentifier: true
     hasPublishedDocs: true
     comment: |-
       Parameters:
       0: the name of the non-type element
   DEFAULT_LIST_CONSTRUCTOR:
-    template: "The default 'List' constructor isn't available when null safety is enabled."
-    tip: "Try using a list literal, 'List.filled' or 'List.generate'."
+    problemMessage: "The default 'List' constructor isn't available when null safety is enabled."
+    correctionMessage: "Try using a list literal, 'List.filled' or 'List.generate'."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -2831,8 +2867,8 @@
       var l = List.generate(3, (i) => i);
       ```
   DEFAULT_VALUE_IN_REDIRECTING_FACTORY_CONSTRUCTOR:
-    template: "Default values aren't allowed in factory constructors that redirect to another constructor."
-    tip: Try removing the default value.
+    problemMessage: "Default values aren't allowed in factory constructors that redirect to another constructor."
+    correctionMessage: Try removing the default value.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -2885,8 +2921,8 @@
       }
       ```
   DEFAULT_VALUE_ON_REQUIRED_PARAMETER:
-    template: "Required named parameters can't have a default value."
-    tip: "Try removing either the default value or the 'required' modifier."
+    problemMessage: "Required named parameters can't have a default value."
+    correctionMessage: "Try removing either the default value or the 'required' modifier."
     comment: No parameters.
     documentation: |-
       #### Description
@@ -2919,8 +2955,8 @@
       void log({String message = 'no message'}) {}
       ```
   DEFERRED_IMPORT_OF_EXTENSION:
-    template: Imports of deferred libraries must hide all extensions.
-    tip: Try adding either a show combinator listing the names you need to reference or a hide combinator listing all of the extensions.
+    problemMessage: Imports of deferred libraries must hide all extensions.
+    correctionMessage: Try adding either a show combinator listing the names you need to reference or a hide combinator listing all of the extensions.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -2998,8 +3034,8 @@
       }
       ```
   DEFINITELY_UNASSIGNED_LATE_LOCAL_VARIABLE:
-    template: "The late local variable '{0}' is definitely unassigned at this point."
-    tip: Ensure that it is assigned on necessary execution paths.
+    problemMessage: "The late local variable '{0}' is definitely unassigned at this point."
+    correctionMessage: Ensure that it is assigned on necessary execution paths.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -3035,21 +3071,21 @@
       }
       ```
   DISALLOWED_TYPE_INSTANTIATION_EXPRESSION:
-    template: Only a generic type, generic function, generic instance method, or generic constructor can be type instantiated.
-    tip: Try instantiating the type(s) of a generic type, generic function, generic instance method, or generic constructor.
+    problemMessage: Only a generic type, generic function, generic instance method, or generic constructor can be type instantiated.
+    correctionMessage: Try instantiating the type(s) of a generic type, generic function, generic instance method, or generic constructor.
     comment: No parameters.
   DUPLICATE_CONSTRUCTOR_NAME:
     sharedName: DUPLICATE_CONSTRUCTOR
-    template: "The constructor with name '{0}' is already defined."
-    tip: Try renaming one of the constructors.
+    problemMessage: "The constructor with name '{0}' is already defined."
+    correctionMessage: Try renaming one of the constructors.
     hasPublishedDocs: true
     comment: |-
       Parameters:
       0: the name of the duplicate entity
   DUPLICATE_CONSTRUCTOR_DEFAULT:
     sharedName: DUPLICATE_CONSTRUCTOR
-    template: The unnamed constructor is already defined.
-    tip: Try giving one of the constructors a name.
+    problemMessage: The unnamed constructor is already defined.
+    correctionMessage: Try giving one of the constructors a name.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -3125,8 +3161,8 @@
       }
       ```
   DUPLICATE_DEFINITION:
-    template: "The name '{0}' is already defined."
-    tip: Try renaming one of the declarations.
+    problemMessage: "The name '{0}' is already defined."
+    correctionMessage: Try renaming one of the declarations.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -3156,8 +3192,8 @@
       int y = 1;
       ```
   DUPLICATE_FIELD_FORMAL_PARAMETER:
-    template: "The field '{0}' can't be initialized by multiple parameters in the same constructor."
-    tip: Try removing one of the parameters, or using different fields.
+    problemMessage: "The field '{0}' can't be initialized by multiple parameters in the same constructor."
+    correctionMessage: Try removing one of the parameters, or using different fields.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -3194,8 +3230,8 @@
       }
       ```
   DUPLICATE_NAMED_ARGUMENT:
-    template: "The argument for the named parameter '{0}' was already specified."
-    tip: Try removing one of the named arguments, or correcting one of the names to reference a different named parameter.
+    problemMessage: "The argument for the named parameter '{0}' was already specified."
+    correctionMessage: Try removing one of the named arguments, or correcting one of the names to reference a different named parameter.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -3250,8 +3286,8 @@
       }
       ```
   DUPLICATE_PART:
-    template: "The library already contains a part with the URI '{0}'."
-    tip: Try removing all except one of the duplicated part directives.
+    problemMessage: "The library already contains a part with the URI '{0}'."
+    correctionMessage: Try removing all except one of the duplicated part directives.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -3291,11 +3327,11 @@
       part 'part.dart';
       ```
   ENUM_CONSTANT_SAME_NAME_AS_ENCLOSING:
-    template: "The name of the enum constant can't be the same as the enum's name."
-    tip: Try renaming the constant.
+    problemMessage: "The name of the enum constant can't be the same as the enum's name."
+    correctionMessage: Try renaming the constant.
   EQUAL_ELEMENTS_IN_CONST_SET:
-    template: "Two elements in a constant set literal can't be equal."
-    tip: Change or remove the duplicate element.
+    problemMessage: "Two elements in a constant set literal can't be equal."
+    correctionMessage: Change or remove the duplicate element.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -3326,8 +3362,8 @@
       of which element to remove might affect the order in which elements are
       returned by an iterator.
   EQUAL_KEYS_IN_CONST_MAP:
-    template: "Two keys in a constant map literal can't be equal."
-    tip: Change or remove the duplicate key.
+    problemMessage: "Two keys in a constant map literal can't be equal."
+    correctionMessage: Change or remove the duplicate key.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -3367,8 +3403,8 @@
       of which entry to remove might affect the order in which keys and values
       are returned by an iterator.
   EXPECTED_ONE_LIST_TYPE_ARGUMENTS:
-    template: "List literals require one type argument or none, but {0} found."
-    tip: Try adjusting the number of type arguments.
+    problemMessage: "List literals require one type argument or none, but {0} found."
+    correctionMessage: Try adjusting the number of type arguments.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -3396,8 +3432,8 @@
       var l = <int>[];
       ```
   EXPECTED_ONE_SET_TYPE_ARGUMENTS:
-    template: "Set literals require one type argument or none, but {0} were found."
-    tip: Try adjusting the number of type arguments.
+    problemMessage: "Set literals require one type argument or none, but {0} were found."
+    correctionMessage: Try adjusting the number of type arguments.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -3425,8 +3461,8 @@
       var s = <int>{0, 1};
       ```
   EXPECTED_TWO_MAP_TYPE_ARGUMENTS:
-    template: "Map literals require two type arguments or none, but {0} found."
-    tip: Try adjusting the number of type arguments.
+    problemMessage: "Map literals require two type arguments or none, but {0} found."
+    correctionMessage: Try adjusting the number of type arguments.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -3454,7 +3490,7 @@
       var m = <int, String>{};
       ```
   EXPORT_INTERNAL_LIBRARY:
-    template: "The library '{0}' is internal and can't be exported."
+    problemMessage: "The library '{0}' is internal and can't be exported."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -3478,8 +3514,8 @@
 
       Remove the export directive.
   EXPORT_LEGACY_SYMBOL:
-    template: "The symbol '{0}' is defined in a legacy library, and can't be re-exported from a library with null safety enabled."
-    tip: Try removing the export or migrating the legacy library.
+    problemMessage: "The symbol '{0}' is defined in a legacy library, and can't be re-exported from a library with null safety enabled."
+    correctionMessage: Try removing the export or migrating the legacy library.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -3531,8 +3567,8 @@
       combinator to the export directive in your library that hides all of the
       names declared in the opted-out library.
   EXPORT_OF_NON_LIBRARY:
-    template: "The exported library '{0}' can't have a part-of directive."
-    tip: Try exporting the library that the part is a part of.
+    problemMessage: "The exported library '{0}' can't have a part-of directive."
+    correctionMessage: Try exporting the library that the part is a part of.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -3566,8 +3602,8 @@
       Either remove the export directive, or change the URI to be the URI of the
       library containing the part.
   EXPRESSION_IN_MAP:
-    template: "Expressions can't be used in a map literal."
-    tip: Try removing the expression or converting it to be a map entry.
+    problemMessage: "Expressions can't be used in a map literal."
+    correctionMessage: Try removing the expression or converting it to be a map entry.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -3594,8 +3630,8 @@
       var map = <String, int>{'a': 0, 'b': 1, 'c': 2};
       ```
   EXTENDS_NON_CLASS:
-    template: Classes can only extend other classes.
-    tip: Try specifying a different superclass, or removing the extends clause.
+    problemMessage: Classes can only extend other classes.
+    correctionMessage: Try specifying a different superclass, or removing the extends clause.
     isUnresolvedIdentifier: true
     hasPublishedDocs: true
     comment: |-
@@ -3639,8 +3675,8 @@
       class C {}
       ```
   EXTENSION_AS_EXPRESSION:
-    template: "Extension '{0}' can't be used as an expression."
-    tip: Try replacing it with a valid expression.
+    problemMessage: "Extension '{0}' can't be used as an expression."
+    correctionMessage: Try replacing it with a valid expression.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -3680,8 +3716,8 @@
       var x = E.m();
       ```
   EXTENSION_CONFLICTING_STATIC_AND_INSTANCE:
-    template: "Extension '{0}' can't define static member '{1}' and an instance member with the same name."
-    tip: "Try renaming the member to a name that doesn't conflict."
+    problemMessage: "Extension '{0}' can't define static member '{1}' and an instance member with the same name."
+    correctionMessage: "Try renaming the member to a name that doesn't conflict."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -3719,8 +3755,8 @@
       }
       ```
   EXTENSION_DECLARES_MEMBER_OF_OBJECT:
-    template: "Extensions can't declare members with the same name as a member declared by 'Object'."
-    tip: Try specifying a different name for the member.
+    problemMessage: "Extensions can't declare members with the same name as a member declared by 'Object'."
+    correctionMessage: Try specifying a different name for the member.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -3753,8 +3789,8 @@
       }
       ```
   EXTENSION_OVERRIDE_ACCESS_TO_STATIC_MEMBER:
-    template: "An extension override can't be used to access a static member from an extension."
-    tip: Try using just the name of the extension.
+    problemMessage: "An extension override can't be used to access a static member from an extension."
+    correctionMessage: Try using just the name of the extension.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -3793,7 +3829,7 @@
       }
       ```
   EXTENSION_OVERRIDE_ARGUMENT_NOT_ASSIGNABLE:
-    template: "The type of the argument to the extension override '{0}' isn't assignable to the extended type '{1}'."
+    problemMessage: "The type of the argument to the extension override '{0}' isn't assignable to the extended type '{1}'."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -3838,8 +3874,8 @@
       then either replace the name of the extension or unwrap the argument so
       that the correct extension is found.
   EXTENSION_OVERRIDE_WITHOUT_ACCESS:
-    template: An extension override can only be used to access instance members.
-    tip: Consider adding an access to an instance member.
+    problemMessage: An extension override can only be used to access instance members.
+    correctionMessage: Consider adding an access to an instance member.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -3892,8 +3928,8 @@
       }
       ```
   EXTENSION_OVERRIDE_WITH_CASCADE:
-    template: "Extension overrides have no value so they can't be used as the receiver of a cascade expression."
-    tip: "Try using '.' instead of '..'."
+    problemMessage: "Extension overrides have no value so they can't be used as the receiver of a cascade expression."
+    correctionMessage: "Try using '.' instead of '..'."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -3934,17 +3970,17 @@
       If there are multiple cascaded accesses, you'll need to duplicate the
       extension override for each one.
   EXTERNAL_FIELD_CONSTRUCTOR_INITIALIZER:
-    template: External fields cannot have initializers.
-    tip: "Try removing the field initializer or the 'external' keyword from the field declaration."
+    problemMessage: External fields cannot have initializers.
+    correctionMessage: "Try removing the field initializer or the 'external' keyword from the field declaration."
   EXTERNAL_FIELD_INITIALIZER:
-    template: External fields cannot have initializers.
-    tip: "Try removing the initializer or the 'external' keyword."
+    problemMessage: External fields cannot have initializers.
+    correctionMessage: "Try removing the initializer or the 'external' keyword."
   EXTERNAL_VARIABLE_INITIALIZER:
-    template: External variables cannot have initializers.
-    tip: "Try removing the initializer or the 'external' keyword."
+    problemMessage: External variables cannot have initializers.
+    correctionMessage: "Try removing the initializer or the 'external' keyword."
   EXTRA_POSITIONAL_ARGUMENTS:
-    template: "Too many positional arguments: {0} expected, but {1} found."
-    tip: Try removing the extra arguments.
+    problemMessage: "Too many positional arguments: {0} expected, but {1} found."
+    correctionMessage: Try removing the extra arguments.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -3979,8 +4015,8 @@
       }
       ```
   EXTRA_POSITIONAL_ARGUMENTS_COULD_BE_NAMED:
-    template: "Too many positional arguments: {0} expected, but {1} found."
-    tip: Try removing the extra positional arguments, or specifying the name for named arguments.
+    problemMessage: "Too many positional arguments: {0} expected, but {1} found."
+    correctionMessage: Try removing the extra positional arguments, or specifying the name for named arguments.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -4031,8 +4067,8 @@
       }
       ```
   FIELD_INITIALIZED_BY_MULTIPLE_INITIALIZERS:
-    template: "The field '{0}' can't be initialized twice in the same constructor."
-    tip: Try removing one of the initializations.
+    problemMessage: "The field '{0}' can't be initialized twice in the same constructor."
+    correctionMessage: Try removing one of the initializations.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -4069,8 +4105,8 @@
       }
       ```
   FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION:
-    template: "Fields can't be initialized in the constructor if they are final and were already initialized at their declaration."
-    tip: Try removing one of the initializations.
+    problemMessage: "Fields can't be initialized in the constructor if they are final and were already initialized at their declaration."
+    correctionMessage: Try removing one of the initializations.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -4116,8 +4152,8 @@
       }
       ```
   FIELD_INITIALIZED_IN_PARAMETER_AND_INITIALIZER:
-    template: "Fields can't be initialized in both the parameter list and the initializers."
-    tip: Try removing one of the initializations.
+    problemMessage: "Fields can't be initialized in both the parameter list and the initializers."
+    correctionMessage: Try removing one of the initializations.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -4174,8 +4210,8 @@
       }
       ```
   FIELD_INITIALIZER_FACTORY_CONSTRUCTOR:
-    template: "Initializing formal parameters can't be used in factory constructors."
-    tip: Try using a normal parameter.
+    problemMessage: "Initializing formal parameters can't be used in factory constructors."
+    correctionMessage: Try using a normal parameter.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -4210,7 +4246,7 @@
       }
       ```
   FIELD_INITIALIZER_NOT_ASSIGNABLE:
-    template: "The initializer type '{0}' can't be assigned to the field type '{1}'."
+    problemMessage: "The initializer type '{0}' can't be assigned to the field type '{1}'."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -4261,23 +4297,23 @@
       ```
   CONST_FIELD_INITIALIZER_NOT_ASSIGNABLE:
     sharedName: FIELD_INITIALIZER_NOT_ASSIGNABLE
-    template: "The initializer type '{0}' can't be assigned to the field type '{1}' in a const constructor."
-    tip: "Try using a subtype, or removing the 'const' keyword"
+    problemMessage: "The initializer type '{0}' can't be assigned to the field type '{1}' in a const constructor."
+    correctionMessage: "Try using a subtype, or removing the 'const' keyword"
     hasPublishedDocs: true
     comment: |-
       Parameters:
       0: the name of the type of the initializer expression
       1: the name of the type of the field
   FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR:
-    template: Initializing formal parameters can only be used in constructors.
-    tip: Try using a normal parameter.
+    problemMessage: Initializing formal parameters can only be used in constructors.
+    correctionMessage: Try using a normal parameter.
     comment: |-
       7.6.1 Generative Constructors: It is a compile-time error if an
       initializing formal is used by a function other than a non-redirecting
       generative constructor.
   FIELD_INITIALIZER_REDIRECTING_CONSTRUCTOR:
-    template: "The redirecting constructor can't have a field initializer."
-    tip: Try initializing the field in the constructor being redirected to.
+    problemMessage: "The redirecting constructor can't have a field initializer."
+    correctionMessage: Try initializing the field in the constructor being redirected to.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -4346,8 +4382,8 @@
       }
       ```
   FIELD_INITIALIZING_FORMAL_NOT_ASSIGNABLE:
-    template: "The parameter type '{0}' is incompatible with the field type '{1}'."
-    tip: "Try changing or removing the parameter's type, or changing the field's type."
+    problemMessage: "The parameter type '{0}' is incompatible with the field type '{1}'."
+    correctionMessage: "Try changing or removing the parameter's type, or changing the field's type."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -4410,8 +4446,8 @@
       }
       ```
   FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR:
-    template: "'{0}' is final and was given a value when it was declared, so it can't be set to a new value."
-    tip: Try removing one of the initializations.
+    problemMessage: "'{0}' is final and was given a value when it was declared, so it can't be set to a new value."
+    correctionMessage: Try removing one of the initializations.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -4459,8 +4495,8 @@
       }
       ```
   FINAL_NOT_INITIALIZED:
-    template: "The final variable '{0}' must be initialized."
-    tip: Try initializing the variable.
+    problemMessage: "The final variable '{0}' must be initialized."
+    correctionMessage: Try initializing the variable.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -4510,8 +4546,8 @@
       ```
   FINAL_NOT_INITIALIZED_CONSTRUCTOR_1:
     sharedName: FINAL_NOT_INITIALIZED_CONSTRUCTOR
-    template: "All final variables must be initialized, but '{0}' isn't."
-    tip: Try adding an initializer for the field.
+    problemMessage: "All final variables must be initialized, but '{0}' isn't."
+    correctionMessage: Try adding an initializer for the field.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -4600,8 +4636,8 @@
       ```
   FINAL_NOT_INITIALIZED_CONSTRUCTOR_2:
     sharedName: FINAL_NOT_INITIALIZED_CONSTRUCTOR
-    template: "All final variables must be initialized, but '{0}' and '{1}' aren't."
-    tip: Try adding initializers for the fields.
+    problemMessage: "All final variables must be initialized, but '{0}' and '{1}' aren't."
+    correctionMessage: Try adding initializers for the fields.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -4609,8 +4645,8 @@
       1: the name of the uninitialized final variable
   FINAL_NOT_INITIALIZED_CONSTRUCTOR_3_PLUS:
     sharedName: FINAL_NOT_INITIALIZED_CONSTRUCTOR
-    template: "All final variables must be initialized, but '{0}', '{1}', and {2} others aren't."
-    tip: Try adding initializers for the fields.
+    problemMessage: "All final variables must be initialized, but '{0}', '{1}', and {2} others aren't."
+    correctionMessage: Try adding initializers for the fields.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -4618,7 +4654,7 @@
       1: the name of the uninitialized final variable
       2: the number of additional not initialized variables that aren't listed
   FOR_IN_OF_INVALID_ELEMENT_TYPE:
-    template: "The type '{0}' used in the 'for' loop must implement '{1}' with a type argument that can be assigned to '{2}'."
+    problemMessage: "The type '{0}' used in the 'for' loop must implement '{1}' with a type argument that can be assigned to '{2}'."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -4670,7 +4706,7 @@
       }
       ```
   FOR_IN_OF_INVALID_TYPE:
-    template: "The type '{0}' used in the 'for' loop must implement {1}."
+    problemMessage: "The type '{0}' used in the 'for' loop must implement {1}."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -4707,8 +4743,8 @@
       }
       ```
   FOR_IN_WITH_CONST_VARIABLE:
-    template: "A for-in loop variable can't be a 'const'."
-    tip: "Try removing the 'const' modifier from the variable, or use a different variable."
+    problemMessage: "A for-in loop variable can't be a 'const'."
+    correctionMessage: "Try removing the 'const' modifier from the variable, or use a different variable."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -4747,20 +4783,20 @@
       }
       ```
   GENERIC_FUNCTION_TYPE_CANNOT_BE_BOUND:
-    template: "Generic function types can't be used as type parameter bounds"
-    tip: Try making the free variable in the function type part of the larger declaration signature
+    problemMessage: "Generic function types can't be used as type parameter bounds"
+    correctionMessage: Try making the free variable in the function type part of the larger declaration signature
     comment: |-
       It is a compile-time error if a generic function type is used as a bound
       for a formal type parameter of a class or a function.
   GENERIC_FUNCTION_TYPE_CANNOT_BE_TYPE_ARGUMENT:
-    template: "A generic function type can't be a type argument."
-    tip: "Try removing type parameters from the generic function type, or using 'dynamic' as the type argument here."
+    problemMessage: "A generic function type can't be a type argument."
+    correctionMessage: "Try removing type parameters from the generic function type, or using 'dynamic' as the type argument here."
     comment: |-
       It is a compile-time error if a generic function type is used as an actual
       type argument.
   GENERIC_METHOD_TYPE_INSTANTIATION_ON_DYNAMIC:
-    template: "A method tear-off on a receiver whose type is 'dynamic' can't have type arguments."
-    tip: Specify the type of the receiver, or remove the type arguments from the method tear-off.
+    problemMessage: "A method tear-off on a receiver whose type is 'dynamic' can't have type arguments."
+    correctionMessage: Specify the type of the receiver, or remove the type arguments from the method tear-off.
     comment: No parameters.
     documentation: |-
       #### Description
@@ -4802,8 +4838,8 @@
       }
       ```
   GETTER_NOT_ASSIGNABLE_SETTER_TYPES:
-    template: "The return type of getter '{0}' is '{1}' which isn't assignable to the type '{2}' of its setter '{3}'."
-    tip: Try changing the types so that they are compatible.
+    problemMessage: "The return type of getter '{0}' is '{1}' which isn't assignable to the type '{2}' of its setter '{3}'."
+    correctionMessage: Try changing the types so that they are compatible.
     comment: |-
       Parameters:
       0: the name of the getter
@@ -4811,8 +4847,8 @@
       2: the type of the setter
       3: the name of the setter
   GETTER_NOT_SUBTYPE_SETTER_TYPES:
-    template: "The return type of getter '{0}' is '{1}' which isn't a subtype of the type '{2}' of its setter '{3}'."
-    tip: Try changing the types so that they are compatible.
+    problemMessage: "The return type of getter '{0}' is '{1}' which isn't a subtype of the type '{2}' of its setter '{3}'."
+    correctionMessage: Try changing the types so that they are compatible.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -4866,11 +4902,11 @@
       }
       ```
   IF_ELEMENT_CONDITION_FROM_DEFERRED_LIBRARY:
-    template: "Constant values from a deferred library can't be used as values in an if condition inside a const collection literal."
-    tip: Try making the deferred import non-deferred.
+    problemMessage: "Constant values from a deferred library can't be used as values in an if condition inside a const collection literal."
+    correctionMessage: Try making the deferred import non-deferred.
   ILLEGAL_ASYNC_GENERATOR_RETURN_TYPE:
-    template: "Functions marked 'async*' must have a return type that is a supertype of 'Stream<T>' for some type 'T'."
-    tip: "Try fixing the return type of the function, or removing the modifier 'async*' from the function body."
+    problemMessage: "Functions marked 'async*' must have a return type that is a supertype of 'Stream<T>' for some type 'T'."
+    correctionMessage: "Try fixing the return type of the function, or removing the modifier 'async*' from the function body."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -4905,8 +4941,8 @@
       int f() => 0;
       ```
   ILLEGAL_ASYNC_RETURN_TYPE:
-    template: "Functions marked 'async' must have a return type assignable to 'Future'."
-    tip: "Try fixing the return type of the function, or removing the modifier 'async' from the function body."
+    problemMessage: "Functions marked 'async' must have a return type assignable to 'Future'."
+    correctionMessage: "Try fixing the return type of the function, or removing the modifier 'async' from the function body."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -4945,8 +4981,8 @@
       int f() => 0;
       ```
   ILLEGAL_SYNC_GENERATOR_RETURN_TYPE:
-    template: "Functions marked 'sync*' must have a return type that is a supertype of 'Iterable<T>' for some type 'T'."
-    tip: "Try fixing the return type of the function, or removing the modifier 'sync*' from the function body."
+    problemMessage: "Functions marked 'sync*' must have a return type that is a supertype of 'Iterable<T>' for some type 'T'."
+    correctionMessage: "Try fixing the return type of the function, or removing the modifier 'sync*' from the function body."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -4982,8 +5018,8 @@
       int f() => 0;
       ```
   IMPLEMENTS_NON_CLASS:
-    template: Classes and mixins can only implement other classes and mixins.
-    tip: Try specifying a class or mixin, or remove the name from the list.
+    problemMessage: Classes and mixins can only implement other classes and mixins.
+    correctionMessage: Try specifying a class or mixin, or remove the name from the list.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -5019,8 +5055,8 @@
       of an existing class or mixin, or remove the name from the `implements`
       clause.
   IMPLEMENTS_REPEATED:
-    template: "'{0}' can only be implemented once."
-    tip: Try removing all but one occurrence of the class name.
+    problemMessage: "'{0}' can only be implemented once."
+    correctionMessage: Try removing all but one occurrence of the class name.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -5050,8 +5086,8 @@
       class B implements A {}
       ```
   IMPLEMENTS_SUPER_CLASS:
-    template: "'{0}' can't be used in both the 'extends' and 'implements' clauses."
-    tip: Try removing one of the occurrences.
+    problemMessage: "'{0}' can't be used in both the 'extends' and 'implements' clauses."
+    correctionMessage: Try removing one of the occurrences.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -5094,8 +5130,8 @@
       class B implements A {}
       ```
   IMPLICIT_THIS_REFERENCE_IN_INITIALIZER:
-    template: "The instance member '{0}' can't be accessed in an initializer."
-    tip: Try replacing the reference to the instance member with a different expression
+    problemMessage: "The instance member '{0}' can't be accessed in an initializer."
+    correctionMessage: Try replacing the reference to the instance member with a different expression
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -5148,7 +5184,7 @@
       }
       ```
   IMPORT_INTERNAL_LIBRARY:
-    template: "The library '{0}' is internal and can't be imported."
+    problemMessage: "The library '{0}' is internal and can't be imported."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -5172,8 +5208,8 @@
 
       Remove the import directive.
   IMPORT_OF_NON_LIBRARY:
-    template: "The imported library '{0}' can't have a part-of directive."
-    tip: Try importing the library that the part is a part of.
+    problemMessage: "The imported library '{0}' can't have a part-of directive."
+    correctionMessage: Try importing the library that the part is a part of.
     comment: |-
       14.1 Imports: It is a compile-time error if the specified URI of an
       immediate import does not refer to a library declaration.
@@ -5181,7 +5217,7 @@
       Parameters:
       0: the uri pointing to a non-library declaration
   INCONSISTENT_CASE_EXPRESSION_TYPES:
-    template: "Case expressions must have the same types, '{0}' isn't a '{1}'."
+    problemMessage: "Case expressions must have the same types, '{0}' isn't a '{1}'."
     comment: |-
       13.9 Switch: It is a compile-time error if values of the expressions
       <i>e<sub>k</sub></i> are not instances of the same class <i>C</i>, for all
@@ -5191,8 +5227,8 @@
       0: the expression source code that is the unexpected type
       1: the name of the expected type
   INCONSISTENT_INHERITANCE:
-    template: "Superinterfaces don't have a valid override for '{0}': {1}."
-    tip: Try adding an explicit override that is consistent with all of the inherited members.
+    problemMessage: "Superinterfaces don't have a valid override for '{0}': {1}."
+    correctionMessage: Try adding an explicit override that is consistent with all of the inherited members.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -5245,8 +5281,8 @@
       }
       ```
   INCONSISTENT_INHERITANCE_GETTER_AND_METHOD:
-    template: "'{0}' is inherited as a getter (from '{1}') and also a method (from '{2}')."
-    tip: Try adjusting the supertypes of this class to remove the inconsistency.
+    problemMessage: "'{0}' is inherited as a getter (from '{1}') and also a method (from '{2}')."
+    correctionMessage: Try adjusting the supertypes of this class to remove the inconsistency.
     comment: |-
       11.1.1 Inheritance and Overriding. Let `I` be the implicit interface of a
       class `C` declared in library `L`. `I` inherits all members of
@@ -5259,7 +5295,7 @@
       1: the name of the superinterface that declares the name as a getter.
       2: the name of the superinterface that declares the name as a method.
   INCONSISTENT_LANGUAGE_VERSION_OVERRIDE:
-    template: Parts must have exactly the same language version override as the library.
+    problemMessage: Parts must have exactly the same language version override as the library.
     comment: |-
       It is a compile-time error if a part file has a different language version
       override than its library.
@@ -5268,8 +5304,8 @@
       future-releases/language-versioning/feature-specification.md
       #individual-library-language-version-override
   INITIALIZER_FOR_NON_EXISTENT_FIELD:
-    template: "'{0}' isn't a field in the enclosing class."
-    tip: "Try correcting the name to match an existing field, or defining a field named '{0}'."
+    problemMessage: "'{0}' isn't a field in the enclosing class."
+    correctionMessage: "Try correcting the name to match an existing field, or defining a field named '{0}'."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -5323,8 +5359,8 @@
       }
       ```
   INITIALIZER_FOR_STATIC_FIELD:
-    template: "'{0}' is a static field in the enclosing class. Fields initialized in a constructor can't be static."
-    tip: Try removing the initialization.
+    problemMessage: "'{0}' is a static field in the enclosing class. Fields initialized in a constructor can't be static."
+    correctionMessage: Try removing the initialization.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -5383,8 +5419,8 @@
       }
       ```
   INITIALIZING_FORMAL_FOR_NON_EXISTENT_FIELD:
-    template: "'{0}' isn't a field in the enclosing class."
-    tip: "Try correcting the name to match an existing field, or defining a field named '{0}'."
+    problemMessage: "'{0}' isn't a field in the enclosing class."
+    correctionMessage: "Try correcting the name to match an existing field, or defining a field named '{0}'."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -5462,8 +5498,8 @@
       }
       ```
   INSTANCE_ACCESS_TO_STATIC_MEMBER:
-    template: "Static {1} '{0}' can't be accessed through an instance."
-    tip: "Try using the class '{2}' to access the {1}."
+    problemMessage: "Static {1} '{0}' can't be accessed through an instance."
+    correctionMessage: "Try using the class '{2}' to access the {1}."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -5505,8 +5541,8 @@
       }
       ```
   INSTANCE_MEMBER_ACCESS_FROM_FACTORY:
-    template: "Instance members can't be accessed from a factory constructor."
-    tip: Try removing the reference to the instance member.
+    problemMessage: "Instance members can't be accessed from a factory constructor."
+    correctionMessage: Try removing the reference to the instance member.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -5549,8 +5585,8 @@
       }
       ```
   INSTANCE_MEMBER_ACCESS_FROM_STATIC:
-    template: "Instance members can't be accessed from a static method."
-    tip: "Try removing the reference to the instance member, or removing the keyword 'static' from the method."
+    problemMessage: "Instance members can't be accessed from a static method."
+    correctionMessage: "Try removing the reference to the instance member, or removing the keyword 'static' from the method."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -5605,8 +5641,8 @@
       }
       ```
   INSTANTIATE_ABSTRACT_CLASS:
-    template: "Abstract classes can't be instantiated."
-    tip: Try creating an instance of a concrete subtype.
+    problemMessage: "Abstract classes can't be instantiated."
+    correctionMessage: Try creating an instance of a concrete subtype.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -5633,8 +5669,8 @@
       If there's a concrete subclass of the abstract class that can be used, then
       create an instance of the concrete subclass.
   INSTANTIATE_ENUM:
-    template: "Enums can't be instantiated."
-    tip: Try using one of the defined constants.
+    problemMessage: "Enums can't be instantiated."
+    correctionMessage: Try using one of the defined constants.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -5668,8 +5704,8 @@
 
       If you intend to use an instance of a class, then use the name of that class in place of the name of the enum.
   INSTANTIATE_TYPE_ALIAS_EXPANDS_TO_TYPE_PARAMETER:
-    template: "Type aliases that expand to a type parameter can't be instantiated."
-    tip: Try replacing it with a class.
+    problemMessage: "Type aliases that expand to a type parameter can't be instantiated."
+    correctionMessage: Try replacing it with a class.
     comment: No parameters.
     documentation: |-
       #### Description
@@ -5710,8 +5746,8 @@
       }
       ```
   INTEGER_LITERAL_IMPRECISE_AS_DOUBLE:
-    template: "The integer literal is being used as a double, but can't be represented as a 64-bit double without overflow or loss of precision: '{0}'."
-    tip: "Try using the class 'BigInt', or switch to the closest valid double: '{1}'."
+    problemMessage: "The integer literal is being used as a double, but can't be represented as a 64-bit double without overflow or loss of precision: '{0}'."
+    correctionMessage: "Try using the class 'BigInt', or switch to the closest valid double: '{1}'."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -5749,8 +5785,8 @@
       double x = 9223372036854775808;
       ```
   INTEGER_LITERAL_OUT_OF_RANGE:
-    template: "The integer literal {0} can't be represented in 64 bits."
-    tip: "Try using the 'BigInt' class if you need an integer larger than 9,223,372,036,854,775,807 or less than -9,223,372,036,854,775,808."
+    problemMessage: "The integer literal {0} can't be represented in 64 bits."
+    correctionMessage: "Try using the 'BigInt' class if you need an integer larger than 9,223,372,036,854,775,807 or less than -9,223,372,036,854,775,808."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -5778,7 +5814,7 @@
       var x = BigInt.parse('9223372036854775810');
       ```
   INVALID_ANNOTATION:
-    template: Annotation must be either a const variable reference or const constructor invocation.
+    problemMessage: Annotation must be either a const variable reference or const constructor invocation.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -5849,8 +5885,8 @@
       }
       ```
   INVALID_ANNOTATION_CONSTANT_VALUE_FROM_DEFERRED_LIBRARY:
-    template: "Constant values from a deferred library can't be used in annotations."
-    tip: "Try moving the constant from the deferred library, or removing 'deferred' from the import."
+    problemMessage: "Constant values from a deferred library can't be used in annotations."
+    correctionMessage: "Try moving the constant from the deferred library, or removing 'deferred' from the import."
     comment: No parameters.
     documentation: |-
       #### Description
@@ -5900,8 +5936,8 @@
       is appropriate, then use that constant in place of the constant from the
       deferred library.
   INVALID_ANNOTATION_FROM_DEFERRED_LIBRARY:
-    template: "Constant values from a deferred library can't be used as annotations."
-    tip: Try removing the annotation, or changing the import to not be deferred.
+    problemMessage: "Constant values from a deferred library can't be used as annotations."
+    correctionMessage: Try removing the annotation, or changing the import to not be deferred.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -5948,8 +5984,8 @@
       void f() {}
       ```
   INVALID_ASSIGNMENT:
-    template: "A value of type '{0}' can't be assigned to a variable of type '{1}'."
-    tip: "Try changing the type of the variable, or casting the right-hand type to '{1}'."
+    problemMessage: "A value of type '{0}' can't be assigned to a variable of type '{1}'."
+    correctionMessage: "Try changing the type of the variable, or casting the right-hand type to '{1}'."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -5994,55 +6030,55 @@
       int s = i;
       ```
   INVALID_CAST_FUNCTION:
-    template: "The function '{0}' has type '{1}' that isn't of expected type '{2}'. This means its parameter or return type doesn't match what is expected."
+    problemMessage: "The function '{0}' has type '{1}' that isn't of expected type '{2}'. This means its parameter or return type doesn't match what is expected."
     comment: |-
       Parameters:
       0: the type of the function
       1: the expected function type
   INVALID_CAST_FUNCTION_EXPR:
-    template: "The function expression type '{0}' isn't of type '{1}'. This means its parameter or return type doesn't match what is expected. Consider changing parameter type(s) or the returned type(s)."
+    problemMessage: "The function expression type '{0}' isn't of type '{1}'. This means its parameter or return type doesn't match what is expected. Consider changing parameter type(s) or the returned type(s)."
     comment: |-
       Parameters:
       0: the type of the torn-off function expression
       1: the expected function type
   INVALID_CAST_LITERAL:
-    template: "The literal '{0}' with type '{1}' isn't of expected type '{2}'."
+    problemMessage: "The literal '{0}' with type '{1}' isn't of expected type '{2}'."
     comment: |-
       Parameters:
       0: the type of the literal
       1: the expected type
   INVALID_CAST_LITERAL_LIST:
-    template: "The list literal type '{0}' isn't of expected type '{1}'. The list's type can be changed with an explicit generic type argument or by changing the element types."
+    problemMessage: "The list literal type '{0}' isn't of expected type '{1}'. The list's type can be changed with an explicit generic type argument or by changing the element types."
     comment: |-
       Parameters:
       0: the type of the list literal
       1: the expected type
   INVALID_CAST_LITERAL_MAP:
-    template: "The map literal type '{0}' isn't of expected type '{1}'. The maps's type can be changed with an explicit generic type arguments or by changing the key and value types."
+    problemMessage: "The map literal type '{0}' isn't of expected type '{1}'. The maps's type can be changed with an explicit generic type arguments or by changing the key and value types."
     comment: |-
       Parameters:
       0: the type of the map literal
       1: the expected type
   INVALID_CAST_LITERAL_SET:
-    template: "The set literal type '{0}' isn't of expected type '{1}'. The set's type can be changed with an explicit generic type argument or by changing the element types."
+    problemMessage: "The set literal type '{0}' isn't of expected type '{1}'. The set's type can be changed with an explicit generic type argument or by changing the element types."
     comment: |-
       Parameters:
       0: the type of the set literal
       1: the expected type
   INVALID_CAST_METHOD:
-    template: "The method tear-off '{0}' has type '{1}' that isn't of expected type '{2}'. This means its parameter or return type doesn't match what is expected."
+    problemMessage: "The method tear-off '{0}' has type '{1}' that isn't of expected type '{2}'. This means its parameter or return type doesn't match what is expected."
     comment: |-
       Parameters:
       0: the type of the torn-off method
       1: the expected function type
   INVALID_CAST_NEW_EXPR:
-    template: "The constructor returns type '{0}' that isn't of expected type '{1}'."
+    problemMessage: "The constructor returns type '{0}' that isn't of expected type '{1}'."
     comment: |-
       Parameters:
       0: the type of the instantiated object
       1: the expected type
   INVALID_CONSTANT:
-    template: Invalid constant value.
+    problemMessage: Invalid constant value.
     comment: |-
       TODO(brianwilkerson) Remove this when we have decided on how to report
       errors in compile-time constants. Until then, this acts as a placeholder
@@ -6050,13 +6086,13 @@
 
       See TODOs in ConstantVisitor
   INVALID_CONSTRUCTOR_NAME:
-    template: Invalid constructor name.
+    problemMessage: Invalid constructor name.
     comment: |-
       7.6 Constructors: It is a compile-time error if the name of a constructor
       is not a constructor name.
   INVALID_EXTENSION_ARGUMENT_COUNT:
-    template: "Extension overrides must have exactly one argument: the value of 'this' in the extension method."
-    tip: Try specifying exactly one argument.
+    problemMessage: "Extension overrides must have exactly one argument: the value of 'this' in the extension method."
+    correctionMessage: Try specifying exactly one argument.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -6108,7 +6144,7 @@
       }
       ```
   INVALID_FACTORY_NAME_NOT_A_CLASS:
-    template: The name of a factory constructor must be the same as the name of the immediately enclosing class.
+    problemMessage: The name of a factory constructor must be the same as the name of the immediately enclosing class.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -6166,7 +6202,7 @@
       }
       ```
   INVALID_IMPLEMENTATION_OVERRIDE:
-    template: "'{1}.{0}' ('{2}') isn't a valid concrete implementation of '{3}.{0}' ('{4}')."
+    problemMessage: "'{1}.{0}' ('{2}') isn't a valid concrete implementation of '{3}.{0}' ('{4}')."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -6260,8 +6296,8 @@
       }
       ```
   INVALID_INLINE_FUNCTION_TYPE:
-    template: "Inline function types can't be used for parameters in a generic function type."
-    tip: "Try using a generic function type (returnType 'Function(' parameters ')')."
+    problemMessage: "Inline function types can't be used for parameters in a generic function type."
+    correctionMessage: "Try using a generic function type (returnType 'Function(' parameters ')')."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -6289,8 +6325,8 @@
       typedef F = int Function(int Function(String));
       ```
   INVALID_MODIFIER_ON_CONSTRUCTOR:
-    template: "The modifier '{0}' can't be applied to the body of a constructor."
-    tip: Try removing the modifier.
+    problemMessage: "The modifier '{0}' can't be applied to the body of a constructor."
+    correctionMessage: Try removing the modifier.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -6335,8 +6371,8 @@
       }
       ```
   INVALID_MODIFIER_ON_SETTER:
-    template: "Setters can't use 'async', 'async*', or 'sync*'."
-    tip: Try removing the modifier.
+    problemMessage: "Setters can't use 'async', 'async*', or 'sync*'."
+    correctionMessage: Try removing the modifier.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -6378,7 +6414,7 @@
       }
       ```
   INVALID_OVERRIDE:
-    template: "'{1}.{0}' ('{2}') isn't a valid override of '{3}.{0}' ('{4}')."
+    problemMessage: "'{1}.{0}' ('{2}') isn't a valid override of '{3}.{0}' ('{4}')."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -6445,7 +6481,7 @@
       }
       ```
   INVALID_REFERENCE_TO_THIS:
-    template: "Invalid reference to 'this' expression."
+    problemMessage: "Invalid reference to 'this' expression."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -6478,7 +6514,7 @@
       class C {}
       ```
   INVALID_SUPER_INVOCATION:
-    template: "The superclass call must be last in an initializer list: '{0}'."
+    problemMessage: "The superclass call must be last in an initializer list: '{0}'."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -6519,8 +6555,8 @@
       ```
   INVALID_TYPE_ARGUMENT_IN_CONST_LIST:
     sharedName: INVALID_TYPE_ARGUMENT_IN_CONST_LITERAL
-    template: "Constant list literals can't include a type parameter as a type argument, such as '{0}'."
-    tip: Try replacing the type parameter with a different type.
+    problemMessage: "Constant list literals can't include a type parameter as a type argument, such as '{0}'."
+    correctionMessage: Try replacing the type parameter with a different type.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -6573,22 +6609,22 @@
       ```
   INVALID_TYPE_ARGUMENT_IN_CONST_MAP:
     sharedName: INVALID_TYPE_ARGUMENT_IN_CONST_LITERAL
-    template: "Constant map literals can't include a type parameter as a type argument, such as '{0}'."
-    tip: Try replacing the type parameter with a different type.
+    problemMessage: "Constant map literals can't include a type parameter as a type argument, such as '{0}'."
+    correctionMessage: Try replacing the type parameter with a different type.
     hasPublishedDocs: true
     comment: |-
       Parameters:
       0: the name of the type parameter
   INVALID_TYPE_ARGUMENT_IN_CONST_SET:
     sharedName: INVALID_TYPE_ARGUMENT_IN_CONST_LITERAL
-    template: "Constant set literals can't include a type parameter as a type argument, such as '{0}'."
-    tip: Try replacing the type parameter with a different type.
+    problemMessage: "Constant set literals can't include a type parameter as a type argument, such as '{0}'."
+    correctionMessage: Try replacing the type parameter with a different type.
     hasPublishedDocs: true
     comment: |-
       Parameters:
       0: the name of the type parameter
   INVALID_URI:
-    template: "Invalid URI syntax: '{0}'."
+    problemMessage: "Invalid URI syntax: '{0}'."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -6612,12 +6648,12 @@
 
       Replace the invalid URI with a valid URI.
   INVALID_USE_OF_COVARIANT:
-    template: "The 'covariant' keyword can only be used for parameters in instance methods or before non-final instance fields."
-    tip: "Try removing the 'covariant' keyword."
+    problemMessage: "The 'covariant' keyword can only be used for parameters in instance methods or before non-final instance fields."
+    correctionMessage: "Try removing the 'covariant' keyword."
     comment: "The 'covariant' keyword was found in an inappropriate location."
   INVALID_USE_OF_NULL_VALUE:
-    template: "An expression whose value is always 'null' can't be dereferenced."
-    tip: Try changing the type of the expression.
+    problemMessage: "An expression whose value is always 'null' can't be dereferenced."
+    correctionMessage: Try changing the type of the expression.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -6648,7 +6684,7 @@
       }
       ```
   INVOCATION_OF_EXTENSION_WITHOUT_CALL:
-    template: "The extension '{0}' doesn't define a 'call' method so the override can't be used in an invocation."
+    problemMessage: "The extension '{0}' doesn't define a 'call' method so the override can't be used in an invocation."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -6692,8 +6728,8 @@
       If the `call` method isn't defined, then rewrite the code so that it
       doesn't invoke the `call` method.
   INVOCATION_OF_NON_FUNCTION:
-    template: "'{0}' isn't a function."
-    tip: "Try correcting the name to match an existing function, or define a method or function named '{0}'."
+    problemMessage: "'{0}' isn't a function."
+    correctionMessage: "Try correcting the name to match an existing function, or define a method or function named '{0}'."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -6722,7 +6758,7 @@
 
       Replace the name with the name of a function.
   INVOCATION_OF_NON_FUNCTION_EXPRESSION:
-    template: "The expression doesn't evaluate to a function, so it can't be invoked."
+    problemMessage: "The expression doesn't evaluate to a function, so it can't be invoked."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -6769,7 +6805,7 @@
       var y = f();
       ```
   LABEL_IN_OUTER_SCOPE:
-    template: "Can't reference label '{0}' declared in an outer method."
+    problemMessage: "Can't reference label '{0}' declared in an outer method."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -6834,8 +6870,8 @@
       }
       ```
   LABEL_UNDEFINED:
-    template: "Can't reference an undefined label '{0}'."
-    tip: Try defining the label, or correcting the name to match an existing label.
+    problemMessage: "Can't reference an undefined label '{0}'."
+    correctionMessage: Try defining the label, or correcting the name to match an existing label.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -6889,8 +6925,8 @@
       }
       ```
   LATE_FINAL_FIELD_WITH_CONST_CONSTRUCTOR:
-    template: "Can't have a late final field in a class with a generative const constructor."
-    tip: "Try removing the 'late' modifier, or don't declare 'const' constructors."
+    problemMessage: "Can't have a late final field in a class with a generative const constructor."
+    correctionMessage: "Try removing the 'late' modifier, or don't declare 'const' constructors."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -6936,8 +6972,8 @@
       }
       ```
   LATE_FINAL_LOCAL_ALREADY_ASSIGNED:
-    template: The late final local variable is already assigned.
-    tip: "Try removing the 'final' modifier, or don't reassign the value."
+    problemMessage: The late final local variable is already assigned.
+    correctionMessage: "Try removing the 'final' modifier, or don't reassign the value."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -6989,7 +7025,7 @@
       }
       ```
   LIST_ELEMENT_TYPE_NOT_ASSIGNABLE:
-    template: "The element type '{0}' can't be assigned to the list type '{1}'."
+    problemMessage: "The element type '{0}' can't be assigned to the list type '{1}'."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -7032,8 +7068,8 @@
       List<num> x = [1, 2.5, 3];
       ```
   MAIN_FIRST_POSITIONAL_PARAMETER_TYPE:
-    template: "The type of the first positional parameter of the 'main' function must be a supertype of 'List<String>'."
-    tip: Try changing the type of the parameter.
+    problemMessage: "The type of the first positional parameter of the 'main' function must be a supertype of 'List<String>'."
+    correctionMessage: Try changing the type of the parameter.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -7066,8 +7102,8 @@
       void f(List<int> args) {}
       ```
   MAIN_HAS_REQUIRED_NAMED_PARAMETERS:
-    template: "The function 'main' can't have any required named parameters."
-    tip: "Try using a different name for the function, or removing the 'required' modifier."
+    problemMessage: "The function 'main' can't have any required named parameters."
+    correctionMessage: "Try using a different name for the function, or removing the 'required' modifier."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -7099,8 +7135,8 @@
       void f({required int x}) {}
       ```
   MAIN_HAS_TOO_MANY_REQUIRED_POSITIONAL_PARAMETERS:
-    template: "The function 'main' can't have more than two required positional parameters."
-    tip: Try using a different name for the function, or removing extra parameters.
+    problemMessage: "The function 'main' can't have more than two required positional parameters."
+    correctionMessage: Try using a different name for the function, or removing extra parameters.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -7141,8 +7177,8 @@
       void f(List<String> args, int x, int y) {}
       ```
   MAIN_IS_NOT_FUNCTION:
-    template: "The declaration named 'main' must be a function."
-    tip: Try using a different name for this declaration.
+    problemMessage: "The declaration named 'main' must be a function."
+    correctionMessage: Try using a different name for this declaration.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -7168,8 +7204,8 @@
       var mainIndex = 3;
       ```
   MAP_ENTRY_NOT_IN_MAP:
-    template: Map entries can only be used in a map literal.
-    tip: Try converting the collection to a map or removing the map entry.
+    problemMessage: Map entries can only be used in a map literal.
+    correctionMessage: Try converting the collection to a map or removing the map entry.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -7208,7 +7244,7 @@
       const collection = <String>{'a', 'b'};
       ```
   MAP_KEY_TYPE_NOT_ASSIGNABLE:
-    template: "The element type '{0}' can't be assigned to the map key type '{1}'."
+    problemMessage: "The element type '{0}' can't be assigned to the map key type '{1}'."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -7244,7 +7280,7 @@
       var m = <int, String>{2 : 'a'};
       ```
   MAP_VALUE_TYPE_NOT_ASSIGNABLE:
-    template: "The element type '{0}' can't be assigned to the map value type '{1}'."
+    problemMessage: "The element type '{0}' can't be assigned to the map value type '{1}'."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -7281,20 +7317,20 @@
       var m = <String, int>{'a' : 2};
       ```
   MISSING_CONST_IN_LIST_LITERAL:
-    template: "List literals must be prefixed with 'const' when used as a constant expression."
-    tip: "Try adding the keyword 'const' before the literal."
+    problemMessage: "List literals must be prefixed with 'const' when used as a constant expression."
+    correctionMessage: "Try adding the keyword 'const' before the literal."
     comment: "12.1 Constants: A constant expression is ... a constant list literal."
   MISSING_CONST_IN_MAP_LITERAL:
-    template: "Map literals must be prefixed with 'const' when used as a constant expression."
-    tip: "Try adding the keyword 'const' before the literal."
+    problemMessage: "Map literals must be prefixed with 'const' when used as a constant expression."
+    correctionMessage: "Try adding the keyword 'const' before the literal."
     comment: "12.1 Constants: A constant expression is ... a constant map literal."
   MISSING_CONST_IN_SET_LITERAL:
-    template: "Set literals must be prefixed with 'const' when used as a constant expression."
-    tip: "Try adding the keyword 'const' before the literal."
+    problemMessage: "Set literals must be prefixed with 'const' when used as a constant expression."
+    correctionMessage: "Try adding the keyword 'const' before the literal."
     comment: "12.1 Constants: A constant expression is ... a constant set literal."
   MISSING_DART_LIBRARY:
-    template: "Required library '{0}' is missing."
-    tip: Re-install the Dart or Flutter SDK.
+    problemMessage: "Required library '{0}' is missing."
+    correctionMessage: Re-install the Dart or Flutter SDK.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -7308,8 +7344,8 @@
 
       Reinstall the Dart or Flutter SDK.
   MISSING_DEFAULT_VALUE_FOR_PARAMETER:
-    template: "The parameter '{0}' can't have a value of 'null' because of its type, but the implicit default value is 'null'."
-    tip: "Try adding either an explicit non-'null' default value or the 'required' modifier."
+    problemMessage: "The parameter '{0}' can't have a value of 'null' because of its type, but the implicit default value is 'null'."
+    correctionMessage: "Try adding either an explicit non-'null' default value or the 'required' modifier."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -7361,8 +7397,8 @@
       void g({required int x}) {}
       ```
   MISSING_REQUIRED_ARGUMENT:
-    template: "The named parameter '{0}' is required, but there's no corresponding argument."
-    tip: Try adding the required argument.
+    problemMessage: "The named parameter '{0}' is required, but there's no corresponding argument."
+    correctionMessage: Try adding the required argument.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -7396,8 +7432,8 @@
       }
       ```
   MIXINS_SUPER_CLASS:
-    template: "'{0}' can't be used in both 'extends' and 'with' clauses."
-    tip: Try removing one of the occurrences.
+    problemMessage: "'{0}' can't be used in both 'extends' and 'with' clauses."
+    correctionMessage: Try removing one of the occurrences.
     comment: |-
       Technically this is [IMPLEMENTS_SUPER_CLASS].
       See https://github.com/dart-lang/sdk/issues/25765#issuecomment-307422593
@@ -7405,7 +7441,7 @@
       Parameters:
       0: the name of the class that appears in both "extends" and "with" clauses
   MIXIN_APPLICATION_CONCRETE_SUPER_INVOKED_MEMBER_TYPE:
-    template: "The super-invoked member '{0}' has the type '{1}', and the concrete member in the class has the type '{2}'."
+    problemMessage: "The super-invoked member '{0}' has the type '{1}', and the concrete member in the class has the type '{2}'."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -7509,8 +7545,8 @@
       abstract class C extends B with M {}
       ```
   MIXIN_APPLICATION_NOT_IMPLEMENTED_INTERFACE:
-    template: "'{0}' can't be mixed onto '{1}' because '{1}' doesn't implement '{2}'."
-    tip: "Try extending the class '{0}'."
+    problemMessage: "'{0}' can't be mixed onto '{1}' because '{1}' doesn't implement '{2}'."
+    correctionMessage: "Try extending the class '{0}'."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -7551,7 +7587,7 @@
       class X = A with M;
       ```
   MIXIN_APPLICATION_NO_CONCRETE_SUPER_INVOKED_MEMBER:
-    template: "The class doesn't have a concrete implementation of the super-invoked member '{0}'."
+    problemMessage: "The class doesn't have a concrete implementation of the super-invoked member '{0}'."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -7625,7 +7661,7 @@
       abstract class B extends A with M {}
       ```
   MIXIN_CLASS_DECLARES_CONSTRUCTOR:
-    template: "The class '{0}' can't be used as a mixin because it declares a constructor."
+    problemMessage: "The class '{0}' can't be used as a mixin because it declares a constructor."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -7681,18 +7717,18 @@
       class B extends A {}
       ```
   MIXIN_DECLARES_CONSTRUCTOR:
-    template: "Mixins can't declare constructors."
+    problemMessage: "Mixins can't declare constructors."
     comment: |-
       The <i>mixinMember</i> production allows the same instance or static
       members that a class would allow, but no constructors (for now).
   MIXIN_INFERENCE_INCONSISTENT_MATCHING_CLASSES:
-    template: "Type parameters couldn't be inferred for the mixin '{0}' because the base class implements the mixin's supertype constraint '{1}' in multiple conflicting ways"
+    problemMessage: "Type parameters couldn't be inferred for the mixin '{0}' because the base class implements the mixin's supertype constraint '{1}' in multiple conflicting ways"
   MIXIN_INFERENCE_NO_MATCHING_CLASS:
-    template: "Type parameters couldn't be inferred for the mixin '{0}' because the base class doesn't implement the mixin's supertype constraint '{1}'"
+    problemMessage: "Type parameters couldn't be inferred for the mixin '{0}' because the base class doesn't implement the mixin's supertype constraint '{1}'"
   MIXIN_INFERENCE_NO_POSSIBLE_SUBSTITUTION:
-    template: "Type parameters couldn't be inferred for the mixin '{0}' because no type parameter substitution could be found matching the mixin's supertype constraints"
+    problemMessage: "Type parameters couldn't be inferred for the mixin '{0}' because no type parameter substitution could be found matching the mixin's supertype constraints"
   MIXIN_INHERITS_FROM_NOT_OBJECT:
-    template: "The class '{0}' can't be used as a mixin because it extends a class other than 'Object'."
+    problemMessage: "The class '{0}' can't be used as a mixin because it extends a class other than 'Object'."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -7753,7 +7789,7 @@
       class C extends A with M {}
       ```
   MIXIN_INSTANTIATE:
-    template: "Mixins can't be instantiated."
+    problemMessage: "Mixins can't be instantiated."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -7777,7 +7813,7 @@
       If you intend to use an instance of a class, then use the name of that
       class in place of the name of the mixin.
   MIXIN_OF_NON_CLASS:
-    template: Classes can only mix in mixins and classes.
+    problemMessage: Classes can only mix in mixins and classes.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -7808,11 +7844,11 @@
       class C {}
       ```
   MIXIN_SUPER_CLASS_CONSTRAINT_DEFERRED_CLASS:
-    template: "Deferred classes can't be used as super-class constraints."
-    tip: Try changing the import to not be deferred.
+    problemMessage: "Deferred classes can't be used as super-class constraints."
+    correctionMessage: Try changing the import to not be deferred.
     comment: No parameters.
   MIXIN_SUPER_CLASS_CONSTRAINT_NON_INTERFACE:
-    template: Only classes and mixins can be used as superclass constraints.
+    problemMessage: Only classes and mixins can be used as superclass constraints.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -7839,19 +7875,19 @@
 
       Otherwise, remove the type from the `on` clause.
   MIXIN_WITH_NON_CLASS_SUPERCLASS:
-    template: Mixin can only be applied to class.
+    problemMessage: Mixin can only be applied to class.
     comment: |-
       9.1 Mixin Application: It is a compile-time error if <i>S</i> does not
       denote a class available in the immediately enclosing scope.
   MULTIPLE_REDIRECTING_CONSTRUCTOR_INVOCATIONS:
-    template: "Constructors can have at most one 'this' redirection."
-    tip: Try removing all but one of the redirections.
+    problemMessage: "Constructors can have at most one 'this' redirection."
+    correctionMessage: Try removing all but one of the redirections.
     comment: |-
       7.6.1 Generative Constructors: A generative constructor may be redirecting,
       in which case its only action is to invoke another generative constructor.
   MULTIPLE_SUPER_INITIALIZERS:
-    template: "A constructor can have at most one 'super' initializer."
-    tip: "Try removing all but one of the 'super' initializers."
+    problemMessage: "A constructor can have at most one 'super' initializer."
+    correctionMessage: "Try removing all but one of the 'super' initializers."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -7937,8 +7973,8 @@
       }
       ```
   NEW_WITH_UNDEFINED_CONSTRUCTOR:
-    template: "The class '{0}' doesn't have a constructor named '{1}'."
-    tip: "Try invoking a different constructor, or define a constructor named '{1}'."
+    problemMessage: "The class '{0}' doesn't have a constructor named '{1}'."
+    correctionMessage: "Try invoking a different constructor, or define a constructor named '{1}'."
     comment: |-
       12.11.1 New: If <i>T</i> is a class or parameterized type accessible in the
       current scope then:
@@ -7952,8 +7988,8 @@
       a<sub>n+kM/sub>)</i> it is a static warning if the type <i>T</i> does not
       declare a constructor with the same name as the declaration of <i>T</i>.
   NEW_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT:
-    template: "The class '{0}' doesn't have an unnamed constructor."
-    tip: "Try using one of the named constructors defined in '{0}'."
+    problemMessage: "The class '{0}' doesn't have an unnamed constructor."
+    correctionMessage: "Try using one of the named constructors defined in '{0}'."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -8003,8 +8039,8 @@
       ```
   NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FIVE_PLUS:
     sharedName: NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER
-    template: "Missing concrete implementations of '{0}', '{1}', '{2}', '{3}', and {4} more."
-    tip: Try implementing the missing methods, or make the class abstract.
+    problemMessage: "Missing concrete implementations of '{0}', '{1}', '{2}', '{3}', and {4} more."
+    correctionMessage: Try implementing the missing methods, or make the class abstract.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -8015,8 +8051,8 @@
       4: the number of additional missing members that aren't listed
   NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FOUR:
     sharedName: NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER
-    template: "Missing concrete implementations of '{0}', '{1}', '{2}', and '{3}'."
-    tip: Try implementing the missing methods, or make the class abstract.
+    problemMessage: "Missing concrete implementations of '{0}', '{1}', '{2}', and '{3}'."
+    correctionMessage: Try implementing the missing methods, or make the class abstract.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -8026,8 +8062,8 @@
       3: the name of the fourth member
   NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE:
     sharedName: NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER
-    template: "Missing concrete implementation of '{0}'."
-    tip: Try implementing the missing method, or make the class abstract.
+    problemMessage: "Missing concrete implementation of '{0}'."
+    correctionMessage: Try implementing the missing method, or make the class abstract.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -8094,8 +8130,8 @@
       ```
   NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_THREE:
     sharedName: NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER
-    template: "Missing concrete implementations of '{0}', '{1}', and '{2}'."
-    tip: Try implementing the missing methods, or make the class abstract.
+    problemMessage: "Missing concrete implementations of '{0}', '{1}', and '{2}'."
+    correctionMessage: Try implementing the missing methods, or make the class abstract.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -8104,16 +8140,16 @@
       2: the name of the third member
   NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_TWO:
     sharedName: NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER
-    template: "Missing concrete implementations of '{0}' and '{1}'."
-    tip: Try implementing the missing methods, or make the class abstract.
+    problemMessage: "Missing concrete implementations of '{0}' and '{1}'."
+    correctionMessage: Try implementing the missing methods, or make the class abstract.
     hasPublishedDocs: true
     comment: |-
       Parameters:
       0: the name of the first member
       1: the name of the second member
   NON_BOOL_CONDITION:
-    template: "Conditions must have a static type of 'bool'."
-    tip: Try changing the condition.
+    problemMessage: "Conditions must have a static type of 'bool'."
+    correctionMessage: Try changing the condition.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -8147,8 +8183,8 @@
       }
       ```
   NON_BOOL_EXPRESSION:
-    template: "The expression in an assert must be of type 'bool'."
-    tip: Try changing the expression.
+    problemMessage: "The expression in an assert must be of type 'bool'."
+    correctionMessage: Try changing the expression.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -8178,8 +8214,8 @@
       }
       ```
   NON_BOOL_NEGATION_EXPRESSION:
-    template: "A negation operand must have a static type of 'bool'."
-    tip: "Try changing the operand to the '!' operator."
+    problemMessage: "A negation operand must have a static type of 'bool'."
+    correctionMessage: "Try changing the operand to the '!' operator."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -8207,7 +8243,7 @@
       bool y = !(x > 0);
       ```
   NON_BOOL_OPERAND:
-    template: "The operands of the operator '{0}' must be assignable to 'bool'."
+    problemMessage: "The operands of the operator '{0}' must be assignable to 'bool'."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -8237,7 +8273,7 @@
       bool b = a == 0 || a > 1;
       ```
   NON_CONSTANT_ANNOTATION_CONSTRUCTOR:
-    template: Annotation creation can only call a const constructor.
+    problemMessage: Annotation creation can only call a const constructor.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -8280,7 +8316,7 @@
       If it isn't valid for the class to have a const constructor, then either
       remove the annotation or use a different class for the annotation.
   NON_CONSTANT_CASE_EXPRESSION:
-    template: Case expressions must be constant.
+    problemMessage: Case expressions must be constant.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -8316,8 +8352,8 @@
       }
       ```
   NON_CONSTANT_CASE_EXPRESSION_FROM_DEFERRED_LIBRARY:
-    template: "Constant values from a deferred library can't be used as a case expression."
-    tip: Try re-writing the switch as a series of if statements, or changing the import to not be deferred.
+    problemMessage: "Constant values from a deferred library can't be used as a case expression."
+    correctionMessage: Try re-writing the switch as a series of if statements, or changing the import to not be deferred.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -8401,7 +8437,7 @@
       }
       ```
   NON_CONSTANT_DEFAULT_VALUE:
-    template: The default value of an optional parameter must be constant.
+    problemMessage: The default value of an optional parameter must be constant.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -8445,8 +8481,8 @@
       }
       ```
   NON_CONSTANT_DEFAULT_VALUE_FROM_DEFERRED_LIBRARY:
-    template: "Constant values from a deferred library can't be used as a default parameter value."
-    tip: Try leaving the default as null and initializing the parameter inside the function body.
+    problemMessage: "Constant values from a deferred library can't be used as a default parameter value."
+    correctionMessage: Try leaving the default as null and initializing the parameter inside the function body.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -8496,8 +8532,8 @@
       void f({int x = 0}) {}
       ```
   NON_CONSTANT_LIST_ELEMENT:
-    template: The values in a const list literal must be constants.
-    tip: "Try removing the keyword 'const' from the list literal."
+    problemMessage: The values in a const list literal must be constants.
+    correctionMessage: "Try removing the keyword 'const' from the list literal."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -8539,8 +8575,8 @@
       var y = <int>[0, 1, x];
       ```
   NON_CONSTANT_MAP_ELEMENT:
-    template: The elements in a const map literal must be constant.
-    tip: "Try removing the keyword 'const' from the map literal."
+    problemMessage: The elements in a const map literal must be constant.
+    correctionMessage: "Try removing the keyword 'const' from the map literal."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -8586,8 +8622,8 @@
       var map = <int, int>{if (notConst) 1 : 2};
       ```
   NON_CONSTANT_MAP_KEY:
-    template: The keys in a const map literal must be constant.
-    tip: "Try removing the keyword 'const' from the map literal."
+    problemMessage: The keys in a const map literal must be constant.
+    correctionMessage: "Try removing the keyword 'const' from the map literal."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -8622,8 +8658,8 @@
       var m = {a: 0};
       ```
   NON_CONSTANT_MAP_VALUE:
-    template: The values in a const map literal must be constant.
-    tip: "Try removing the keyword 'const' from the map literal."
+    problemMessage: The values in a const map literal must be constant.
+    correctionMessage: "Try removing the keyword 'const' from the map literal."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -8658,8 +8694,8 @@
       var m = {0: a};
       ```
   NON_CONSTANT_SET_ELEMENT:
-    template: The values in a const set literal must be constants.
-    tip: "Try removing the keyword 'const' from the set literal."
+    problemMessage: The values in a const set literal must be constants.
+    correctionMessage: "Try removing the keyword 'const' from the set literal."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -8696,14 +8732,14 @@
       var s = {i};
       ```
   NON_CONST_MAP_AS_EXPRESSION_STATEMENT:
-    template: "A non-constant map or set literal without type arguments can't be used as an expression statement."
+    problemMessage: "A non-constant map or set literal without type arguments can't be used as an expression statement."
     comment: |-
       13.2 Expression Statements: It is a compile-time error if a non-constant
       map literal that has no explicit type arguments appears in a place where a
       statement is expected.
   NON_GENERATIVE_CONSTRUCTOR:
-    template: "The generative constructor '{0}' is expected, but a factory was found."
-    tip: Try calling a different constructor of the superclass, or making the called constructor not be a factory constructor.
+    problemMessage: "The generative constructor '{0}' is expected, but a factory was found."
+    correctionMessage: Try calling a different constructor of the superclass, or making the called constructor not be a factory constructor.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -8750,8 +8786,8 @@
       If the generative constructor is the unnamed constructor, and if there are
       no arguments being passed to it, then you can remove the super invocation.
   NON_GENERATIVE_IMPLICIT_CONSTRUCTOR:
-    template: "The unnamed constructor of superclass '{0}' (called by the default constructor of '{1}') must be a generative constructor, but factory found."
-    tip: "Try adding an explicit constructor that has a different superinitializer or changing the superclass constructor '{2}' to not be a factory constructor."
+    problemMessage: "The unnamed constructor of superclass '{0}' (called by the default constructor of '{1}') must be a generative constructor, but factory found."
+    correctionMessage: "Try adding an explicit constructor that has a different superinitializer or changing the superclass constructor '{2}' to not be a factory constructor."
     comment: |-
       An error code for when a class has no explicit constructor, and therefore
       a constructor is implicitly defined which uses a factory as a
@@ -8762,7 +8798,7 @@
       1: the name of the current class
       2: the implicitly called factory constructor of the superclass
   NON_SYNC_FACTORY:
-    template: "Factory bodies can't use 'async', 'async*', or 'sync*'."
+    problemMessage: "Factory bodies can't use 'async', 'async*', or 'sync*'."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -8813,8 +8849,8 @@
       }
       ```
   NON_TYPE_AS_TYPE_ARGUMENT:
-    template: "The name '{0}' isn't a type so it can't be used as a type argument."
-    tip: "Try correcting the name to an existing type, or defining a type named '{0}'."
+    problemMessage: "The name '{0}' isn't a type so it can't be used as a type argument."
+    correctionMessage: "Try correcting the name to an existing type, or defining a type named '{0}'."
     isUnresolvedIdentifier: true
     hasPublishedDocs: true
     comment: |-
@@ -8845,8 +8881,8 @@
       List<int> xList = [];
       ```
   NON_TYPE_IN_CATCH_CLAUSE:
-    template: "The name '{0}' isn't a type and can't be used in an on-catch clause."
-    tip: Try correcting the name to match an existing class.
+    problemMessage: "The name '{0}' isn't a type and can't be used in an on-catch clause."
+    correctionMessage: Try correcting the name to match an existing class.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -8888,8 +8924,8 @@
       }
       ```
   NON_VOID_RETURN_FOR_OPERATOR:
-    template: "The return type of the operator []= must be 'void'."
-    tip: "Try changing the return type to 'void'."
+    problemMessage: "The return type of the operator []= must be 'void'."
+    correctionMessage: "Try changing the return type to 'void'."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -8919,8 +8955,8 @@
       }
       ```
   NON_VOID_RETURN_FOR_SETTER:
-    template: "The return type of the setter must be 'void' or absent."
-    tip: Try removing the return type, or define a method rather than a setter.
+    problemMessage: "The return type of the setter must be 'void' or absent."
+    correctionMessage: Try removing the return type, or define a method rather than a setter.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -8950,8 +8986,8 @@
       }
       ```
   NOT_ASSIGNED_POTENTIALLY_NON_NULLABLE_LOCAL_VARIABLE:
-    template: "The non-nullable local variable '{0}' must be assigned before it can be used."
-    tip: "Try giving it an initializer expression, or ensure that it's assigned on every execution path."
+    problemMessage: "The non-nullable local variable '{0}' must be assigned before it can be used."
+    correctionMessage: "Try giving it an initializer expression, or ensure that it's assigned on every execution path."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -9067,8 +9103,8 @@
       }
       ```
   NOT_A_TYPE:
-    template: "{0} isn't a type."
-    tip: Try correcting the name to match an existing type.
+    problemMessage: "{0} isn't a type."
+    correctionMessage: Try correcting the name to match an existing type.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -9092,7 +9128,7 @@
 
       Replace the name with the name of a type.
   NOT_BINARY_OPERATOR:
-    template: "'{0}' isn't a binary operator."
+    problemMessage: "'{0}' isn't a binary operator."
     comment: |-
       Parameters:
       0: the name of the operator that is not a binary operator.
@@ -9119,8 +9155,8 @@
       var a = 5 - 3;
       ```
   NOT_ENOUGH_POSITIONAL_ARGUMENTS:
-    template: "{0} positional argument(s) expected, but {1} found."
-    tip: Try adding the missing arguments.
+    problemMessage: "{0} positional argument(s) expected, but {1} found."
+    correctionMessage: Try adding the missing arguments.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -9156,8 +9192,8 @@
       }
       ```
   NOT_INITIALIZED_NON_NULLABLE_INSTANCE_FIELD:
-    template: "Non-nullable instance field '{0}' must be initialized."
-    tip: "Try adding an initializer expression, or a generative constructor that initializes it, or mark it 'late'."
+    problemMessage: "Non-nullable instance field '{0}' must be initialized."
+    correctionMessage: "Try adding an initializer expression, or a generative constructor that initializes it, or mark it 'late'."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -9232,15 +9268,15 @@
       ```
   NOT_INITIALIZED_NON_NULLABLE_INSTANCE_FIELD_CONSTRUCTOR:
     sharedName: NOT_INITIALIZED_NON_NULLABLE_INSTANCE_FIELD
-    template: "Non-nullable instance field '{0}' must be initialized."
-    tip: "Try adding an initializer expression, or add a field initializer in this constructor, or mark it 'late'."
+    problemMessage: "Non-nullable instance field '{0}' must be initialized."
+    correctionMessage: "Try adding an initializer expression, or add a field initializer in this constructor, or mark it 'late'."
     hasPublishedDocs: true
     comment: |-
       Parameters:
       0: the name of the field that is not initialized
   NOT_INITIALIZED_NON_NULLABLE_VARIABLE:
-    template: "The non-nullable variable '{0}' must be initialized."
-    tip: Try adding an initializer expression.
+    problemMessage: "The non-nullable variable '{0}' must be initialized."
+    correctionMessage: Try adding an initializer expression.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -9299,11 +9335,11 @@
       }
       ```
   NOT_INSTANTIATED_BOUND:
-    template: Type parameter bound types must be instantiated.
-    tip: Try adding type arguments to the type parameter bound.
+    problemMessage: Type parameter bound types must be instantiated.
+    correctionMessage: Try adding type arguments to the type parameter bound.
     comment: No parameters.
   NOT_ITERABLE_SPREAD:
-    template: "Spread elements in list or set literals must implement 'Iterable'."
+    problemMessage: "Spread elements in list or set literals must implement 'Iterable'."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -9332,7 +9368,7 @@
       var s = <String>{...m.keys};
       ```
   NOT_MAP_SPREAD:
-    template: "Spread elements in map literals must implement 'Map'."
+    problemMessage: "Spread elements in map literals must implement 'Map'."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -9361,11 +9397,11 @@
       var m = <int, String>{...l.asMap()};
       ```
   NOT_NULL_AWARE_NULL_SPREAD:
-    template: "The Null typed expression can't be used with a non-null-aware spread."
+    problemMessage: "The Null typed expression can't be used with a non-null-aware spread."
     comment: No parameters.
   NO_ANNOTATION_CONSTRUCTOR_ARGUMENTS:
-    template: Annotation creation must have arguments.
-    tip: Try adding an empty argument list.
+    problemMessage: Annotation creation must have arguments.
+    correctionMessage: Try adding an empty argument list.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -9404,8 +9440,8 @@
       var x;
       ```
   NO_COMBINED_SUPER_SIGNATURE:
-    template: "Can't infer missing types in '{0}' from overridden methods: {1}."
-    tip: "Try providing explicit types for this method's parameters and return type."
+    problemMessage: "Can't infer missing types in '{0}' from overridden methods: {1}."
+    correctionMessage: "Try providing explicit types for this method's parameters and return type."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -9465,24 +9501,24 @@
       ```
   NO_DEFAULT_SUPER_CONSTRUCTOR_EXPLICIT:
     sharedName: NO_DEFAULT_SUPER_CONSTRUCTOR
-    template: "The superclass '{0}' doesn't have a zero argument constructor."
-    tip: "Try declaring a zero argument constructor in '{0}', or explicitly invoking a different constructor in '{0}'."
+    problemMessage: "The superclass '{0}' doesn't have a zero argument constructor."
+    correctionMessage: "Try declaring a zero argument constructor in '{0}', or explicitly invoking a different constructor in '{0}'."
     comment: |-
       Parameters:
       0: the name of the superclass that does not define an implicitly invoked
          constructor
   NO_DEFAULT_SUPER_CONSTRUCTOR_IMPLICIT:
     sharedName: NO_DEFAULT_SUPER_CONSTRUCTOR
-    template: "The superclass '{0}' doesn't have a zero argument constructor."
-    tip: "Try declaring a zero argument constructor in '{0}', or declaring a constructor in {1} that explicitly invokes a constructor in '{0}'."
+    problemMessage: "The superclass '{0}' doesn't have a zero argument constructor."
+    correctionMessage: "Try declaring a zero argument constructor in '{0}', or declaring a constructor in {1} that explicitly invokes a constructor in '{0}'."
     comment: |-
       Parameters:
       0: the name of the superclass that does not define an implicitly invoked
          constructor
       1: the name of the subclass that does not contain any explicit constructors
   NO_GENERATIVE_CONSTRUCTORS_IN_SUPERCLASS:
-    template: "The class '{0}' cannot extend '{1}' because '{1}' only has factory constructors (no generative constructors), and '{0}' has at least one generative constructor."
-    tip: "Try implementing the class instead, adding a generative (not factory) constructor to the superclass {0}, or a factory constructor to the subclass."
+    problemMessage: "The class '{0}' cannot extend '{1}' because '{1}' only has factory constructors (no generative constructors), and '{0}' has at least one generative constructor."
+    correctionMessage: "Try implementing the class instead, adding a generative (not factory) constructor to the superclass {0}, or a factory constructor to the subclass."
     comment: |-
       User friendly specialized error for [NON_GENERATIVE_CONSTRUCTOR]. This
       handles the case of `class E extends Exception` which will never work
@@ -9492,8 +9528,8 @@
       0: the name of the subclass
       1: the name of the superclass
   NULLABLE_TYPE_IN_EXTENDS_CLAUSE:
-    template: "A class can't extend a nullable type."
-    tip: Try removing the question mark.
+    problemMessage: "A class can't extend a nullable type."
+    correctionMessage: Try removing the question mark.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -9529,8 +9565,8 @@
       class B extends A {}
       ```
   NULLABLE_TYPE_IN_IMPLEMENTS_CLAUSE:
-    template: "A class or mixin can't implement a nullable type."
-    tip: Try removing the question mark.
+    problemMessage: "A class or mixin can't implement a nullable type."
+    correctionMessage: Try removing the question mark.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -9566,8 +9602,8 @@
       class B implements A {}
       ```
   NULLABLE_TYPE_IN_ON_CLAUSE:
-    template: "A mixin can't have a nullable type as a superclass constraint."
-    tip: Try removing the question mark.
+    problemMessage: "A mixin can't have a nullable type as a superclass constraint."
+    correctionMessage: Try removing the question mark.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -9604,8 +9640,8 @@
       mixin M on C {}
       ```
   NULLABLE_TYPE_IN_WITH_CLAUSE:
-    template: "A class or mixin can't mix in a nullable type."
-    tip: Try removing the question mark.
+    problemMessage: "A class or mixin can't mix in a nullable type."
+    correctionMessage: Try removing the question mark.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -9640,13 +9676,13 @@
       class C with M {}
       ```
   OBJECT_CANNOT_EXTEND_ANOTHER_CLASS:
-    template: "The class 'Object' can't extend any other class."
+    problemMessage: "The class 'Object' can't extend any other class."
     comment: |-
       7.9 Superclasses: It is a compile-time error to specify an extends clause
       for class Object.
   ON_REPEATED:
-    template: "The type '{0}' can be included in the superclass constraints only once."
-    tip: Try removing all except one occurrence of the type name.
+    problemMessage: "The type '{0}' can be included in the superclass constraints only once."
+    correctionMessage: Try removing all except one occurrence of the type name.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -9693,8 +9729,8 @@
       class B {}
       ```
   OPTIONAL_PARAMETER_IN_OPERATOR:
-    template: "Optional parameters aren't allowed when defining an operator."
-    tip: Try removing the optional parameters.
+    problemMessage: "Optional parameters aren't allowed when defining an operator."
+    correctionMessage: Try removing the optional parameters.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -9724,8 +9760,8 @@
       }
       ```
   PART_OF_DIFFERENT_LIBRARY:
-    template: "Expected this library to be part of '{0}', not '{1}'."
-    tip: "Try including a different part, or changing the name of the library in the part's part-of directive."
+    problemMessage: "Expected this library to be part of '{0}', not '{1}'."
+    correctionMessage: "Try including a different part, or changing the name of the library in the part's part-of directive."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -9764,8 +9800,8 @@
       library name) in the part-of directive to be the URI (or name) of the
       correct library.
   PART_OF_NON_PART:
-    template: "The included part '{0}' must have a part-of directive."
-    tip: "Try adding a part-of directive to '{0}'."
+    problemMessage: "The included part '{0}' must have a part-of directive."
+    correctionMessage: "Try adding a part-of directive to '{0}'."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -9810,8 +9846,8 @@
       import 'a.dart';
       ```
   PART_OF_UNNAMED_LIBRARY:
-    template: "The library is unnamed. A URI is expected, not a library name '{0}', in the part-of directive."
-    tip: Try changing the part-of directive to a URI, or try including a different part.
+    problemMessage: "The library is unnamed. A URI is expected, not a library name '{0}', in the part-of directive."
+    correctionMessage: Try changing the part-of directive to a URI, or try including a different part.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -9851,8 +9887,8 @@
       part of 'test.dart';
       ```
   PREFIX_COLLIDES_WITH_TOP_LEVEL_MEMBER:
-    template: "The name '{0}' is already used as an import prefix and can't be used to name a top-level element."
-    tip: Try renaming either the top-level element or the prefix.
+    problemMessage: "The name '{0}' is already used as an import prefix and can't be used to name a top-level element."
+    correctionMessage: Try renaming either the top-level element or the prefix.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -9894,8 +9930,8 @@
       int f() => math.min(0, 1);
       ```
   PREFIX_IDENTIFIER_NOT_FOLLOWED_BY_DOT:
-    template: "The name '{0}' refers to an import prefix, so it must be followed by '.'."
-    tip: Try correcting the name to refer to something other than a prefix, or renaming the prefix.
+    problemMessage: "The name '{0}' refers to an import prefix, so it must be followed by '.'."
+    correctionMessage: Try correcting the name to refer to something other than a prefix, or renaming the prefix.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -9936,8 +9972,8 @@
 
       If the name is wrong, then correct the name.
   PREFIX_SHADOWED_BY_LOCAL_DECLARATION:
-    template: "The prefix '{0}' can't be used here because it is shadowed by a local declaration."
-    tip: Try renaming either the prefix or the local declaration.
+    problemMessage: "The prefix '{0}' can't be used here because it is shadowed by a local declaration."
+    correctionMessage: Try renaming either the prefix or the local declaration.
     comment: |-
       From the `Static Types` section of the spec:
 
@@ -9948,8 +9984,8 @@
       In particular, this means that if an import prefix is shadowed by a local
       declaration, it is an error to try to use it as a prefix for a type name.
   PRIVATE_COLLISION_IN_MIXIN_APPLICATION:
-    template: "The private name '{0}', defined by '{1}', conflicts with the same name defined by '{2}'."
-    tip: "Try removing '{1}' from the 'with' clause."
+    problemMessage: "The private name '{0}', defined by '{1}', conflicts with the same name defined by '{2}'."
+    correctionMessage: "Try removing '{1}' from the 'with' clause."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -10001,7 +10037,7 @@
       If you need both of the mixins, then rename the conflicting member in one
       of the two mixins.
   PRIVATE_OPTIONAL_PARAMETER:
-    template: "Named parameters can't start with an underscore."
+    problemMessage: "Named parameters can't start with an underscore."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -10031,13 +10067,13 @@
       }
       ```
   PRIVATE_SETTER:
-    template: "The setter '{0}' is private and can't be accessed outside of the library that declares it."
-    tip: Try making it public.
+    problemMessage: "The setter '{0}' is private and can't be accessed outside of the library that declares it."
+    correctionMessage: Try making it public.
   READ_POTENTIALLY_UNASSIGNED_FINAL:
-    template: "The final variable '{0}' can't be read because it is potentially unassigned at this point."
-    tip: Ensure that it is assigned on necessary execution paths.
+    problemMessage: "The final variable '{0}' can't be read because it is potentially unassigned at this point."
+    correctionMessage: Ensure that it is assigned on necessary execution paths.
   RECURSIVE_COMPILE_TIME_CONSTANT:
-    template: The compile-time constant expression depends on itself.
+    problemMessage: The compile-time constant expression depends on itself.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -10067,8 +10103,8 @@
       const minutesPerHour = 60;
       ```
   RECURSIVE_CONSTRUCTOR_REDIRECT:
-    template: "Constructors can't redirect to themselves either directly or indirectly."
-    tip: Try changing one of the constructors in the loop to not redirect.
+    problemMessage: "Constructors can't redirect to themselves either directly or indirectly."
+    correctionMessage: Try changing one of the constructors in the loop to not redirect.
     hasPublishedDocs: true
     comment: |-
       No parameters.
@@ -10164,12 +10200,12 @@
       ```
   RECURSIVE_FACTORY_REDIRECT:
     sharedName: RECURSIVE_CONSTRUCTOR_REDIRECT
-    template: "Constructors can't redirect to themselves either directly or indirectly."
-    tip: Try changing one of the constructors in the loop to not redirect.
+    problemMessage: "Constructors can't redirect to themselves either directly or indirectly."
+    correctionMessage: Try changing one of the constructors in the loop to not redirect.
     hasPublishedDocs: true
     comment: No parameters.
   RECURSIVE_INTERFACE_INHERITANCE:
-    template: "'{0}' can't be a superinterface of itself: {1}."
+    problemMessage: "'{0}' can't be a superinterface of itself: {1}."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -10197,7 +10233,7 @@
       Change the type hierarchy so that there's no circularity.
   RECURSIVE_INTERFACE_INHERITANCE_EXTENDS:
     sharedName: RECURSIVE_INTERFACE_INHERITANCE
-    template: "'{0}' can't extend itself."
+    problemMessage: "'{0}' can't extend itself."
     hasPublishedDocs: true
     comment: |-
       7.10 Superinterfaces: It is a compile-time error if the interface of a
@@ -10213,7 +10249,7 @@
       0: the name of the class that implements itself recursively
   RECURSIVE_INTERFACE_INHERITANCE_IMPLEMENTS:
     sharedName: RECURSIVE_INTERFACE_INHERITANCE
-    template: "'{0}' can't implement itself."
+    problemMessage: "'{0}' can't implement itself."
     hasPublishedDocs: true
     comment: |-
       7.10 Superinterfaces: It is a compile-time error if the interface of a
@@ -10229,14 +10265,14 @@
       0: the name of the class that implements itself recursively
   RECURSIVE_INTERFACE_INHERITANCE_ON:
     sharedName: RECURSIVE_INTERFACE_INHERITANCE
-    template: "'{0}' can't use itself as a superclass constraint."
+    problemMessage: "'{0}' can't use itself as a superclass constraint."
     hasPublishedDocs: true
     comment: |-
       Parameters:
       0: the name of the mixin that constraints itself recursively
   RECURSIVE_INTERFACE_INHERITANCE_WITH:
     sharedName: RECURSIVE_INTERFACE_INHERITANCE
-    template: "'{0}' can't use itself as a mixin."
+    problemMessage: "'{0}' can't use itself as a mixin."
     hasPublishedDocs: true
     comment: |-
       7.10 Superinterfaces: It is a compile-time error if the interface of a
@@ -10251,8 +10287,8 @@
       Parameters:
       0: the name of the class that implements itself recursively
   REDIRECT_GENERATIVE_TO_MISSING_CONSTRUCTOR:
-    template: "The constructor '{0}' couldn't be found in '{1}'."
-    tip: "Try redirecting to a different constructor, or defining the constructor named '{0}'."
+    problemMessage: "The constructor '{0}' couldn't be found in '{1}'."
+    correctionMessage: "Try redirecting to a different constructor, or defining the constructor named '{0}'."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -10292,8 +10328,8 @@
       }
       ```
   REDIRECT_GENERATIVE_TO_NON_GENERATIVE_CONSTRUCTOR:
-    template: "Generative constructors can't redirect to a factory constructor."
-    tip: Try redirecting to a different constructor.
+    problemMessage: "Generative constructors can't redirect to a factory constructor."
+    correctionMessage: Try redirecting to a different constructor.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -10336,14 +10372,14 @@
       }
       ```
   REDIRECT_TO_ABSTRACT_CLASS_CONSTRUCTOR:
-    template: "The redirecting constructor '{0}' can't redirect to a constructor of the abstract class '{1}'."
-    tip: Try redirecting to a constructor of a different class.
+    problemMessage: "The redirecting constructor '{0}' can't redirect to a constructor of the abstract class '{1}'."
+    correctionMessage: Try redirecting to a constructor of a different class.
     comment: |-
       A factory constructor can't redirect to a non-generative constructor of an
       abstract class.
   REDIRECT_TO_INVALID_FUNCTION_TYPE:
-    template: "The redirected constructor '{0}' has incompatible parameters with '{1}'."
-    tip: Try redirecting to a different constructor.
+    problemMessage: "The redirected constructor '{0}' has incompatible parameters with '{1}'."
+    correctionMessage: Try redirecting to a different constructor.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -10417,8 +10453,8 @@
       }
       ```
   REDIRECT_TO_INVALID_RETURN_TYPE:
-    template: "The return type '{0}' of the redirected constructor isn't a subtype of '{1}'."
-    tip: Try redirecting to a different constructor.
+    problemMessage: "The return type '{0}' of the redirected constructor isn't a subtype of '{1}'."
+    correctionMessage: Try redirecting to a different constructor.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -10476,14 +10512,14 @@
       }
       ```
   REDIRECT_TO_MISSING_CONSTRUCTOR:
-    template: "The constructor '{0}' couldn't be found in '{1}'."
-    tip: "Try redirecting to a different constructor, or define the constructor named '{0}'."
+    problemMessage: "The constructor '{0}' couldn't be found in '{1}'."
+    correctionMessage: "Try redirecting to a different constructor, or define the constructor named '{0}'."
     comment: |-
       7.6.2 Factories: It is a compile-time error if <i>k</i> is prefixed with
       the const modifier but <i>k'</i> is not a constant constructor.
   REDIRECT_TO_NON_CLASS:
-    template: "The name '{0}' isn't a type and can't be used in a redirected constructor."
-    tip: Try redirecting to a different constructor.
+    problemMessage: "The name '{0}' isn't a type and can't be used in a redirected constructor."
+    correctionMessage: Try redirecting to a different constructor.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -10527,8 +10563,8 @@
       }
       ```
   REDIRECT_TO_NON_CONST_CONSTRUCTOR:
-    template: "A constant redirecting constructor can't redirect to a non-constant constructor."
-    tip: Try redirecting to a different constructor.
+    problemMessage: "A constant redirecting constructor can't redirect to a non-constant constructor."
+    correctionMessage: Try redirecting to a different constructor.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -10571,8 +10607,8 @@
       }
       ```
   REDIRECT_TO_TYPE_ALIAS_EXPANDS_TO_TYPE_PARAMETER:
-    template: "A redirecting constructor can't redirect to a type alias that expands to a type parameter."
-    tip: Try replacing it with a class.
+    problemMessage: "A redirecting constructor can't redirect to a type alias that expands to a type parameter."
+    correctionMessage: Try replacing it with a class.
     comment: No parameters.
     documentation: |-
       #### Description
@@ -10611,8 +10647,8 @@
       }
       ```
   REFERENCED_BEFORE_DECLARATION:
-    template: "Local variable '{0}' can't be referenced before it is declared."
-    tip: "Try moving the declaration to before the first use, or renaming the local variable so that it doesn't hide a name from an enclosing scope."
+    problemMessage: "Local variable '{0}' can't be referenced before it is declared."
+    correctionMessage: "Try moving the declaration to before the first use, or renaming the local variable so that it doesn't hide a name from an enclosing scope."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -10665,8 +10701,8 @@
       }
       ```
   RETHROW_OUTSIDE_CATCH:
-    template: A rethrow must be inside of a catch clause.
-    tip: "Try moving the expression into a catch clause, or using a 'throw' expression."
+    problemMessage: A rethrow must be inside of a catch clause.
+    correctionMessage: "Try moving the expression into a catch clause, or using a 'throw' expression."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -10712,8 +10748,8 @@
       }
       ```
   RETURN_IN_GENERATIVE_CONSTRUCTOR:
-    template: "Constructors can't return values."
-    tip: Try removing the return statement or using a factory constructor.
+    problemMessage: "Constructors can't return values."
+    correctionMessage: Try removing the return statement or using a factory constructor.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -10763,8 +10799,8 @@
       }
       ```
   RETURN_IN_GENERATOR:
-    template: "Can't return a value from a generator function that uses the 'async*' or 'sync*' modifier."
-    tip: "Try replacing 'return' with 'yield', using a block function body, or changing the method body modifier."
+    problemMessage: "Can't return a value from a generator function that uses the 'async*' or 'sync*' modifier."
+    correctionMessage: "Try replacing 'return' with 'yield', using a block function body, or changing the method body modifier."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -10823,7 +10859,7 @@
       ```
   RETURN_OF_INVALID_TYPE_FROM_CONSTRUCTOR:
     sharedName: RETURN_OF_INVALID_TYPE
-    template: "A value of type '{0}' can't be returned from the constructor '{2}' because it has a return type of '{1}'."
+    problemMessage: "A value of type '{0}' can't be returned from the constructor '{2}' because it has a return type of '{1}'."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -10832,7 +10868,7 @@
       2: the name of the constructor
   RETURN_OF_INVALID_TYPE_FROM_FUNCTION:
     sharedName: RETURN_OF_INVALID_TYPE
-    template: "A value of type '{0}' can't be returned from the function '{2}' because it has a return type of '{1}'."
+    problemMessage: "A value of type '{0}' can't be returned from the function '{2}' because it has a return type of '{1}'."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -10870,7 +10906,7 @@
       ```
   RETURN_OF_INVALID_TYPE_FROM_METHOD:
     sharedName: RETURN_OF_INVALID_TYPE
-    template: "A value of type '{0}' can't be returned from the method '{2}' because it has a return type of '{1}'."
+    problemMessage: "A value of type '{0}' can't be returned from the method '{2}' because it has a return type of '{1}'."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -10878,7 +10914,7 @@
       1: the expected return type as defined by the method
       2: the name of the method
   RETURN_OF_INVALID_TYPE_FROM_CLOSURE:
-    template: "The return type '{0}' isn't a '{1}', as required by the closure's context."
+    problemMessage: "The return type '{0}' isn't a '{1}', as required by the closure's context."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -10910,7 +10946,7 @@
       String Function(String) f = (s) => 3.toString();
       ```
   RETURN_WITHOUT_VALUE:
-    template: "The return value is missing after 'return'."
+    problemMessage: "The return value is missing after 'return'."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -10940,7 +10976,7 @@
       }
       ```
   SET_ELEMENT_TYPE_NOT_ASSIGNABLE:
-    template: "The element type '{0}' can't be assigned to the set type '{1}'."
+    problemMessage: "The element type '{0}' can't be assigned to the set type '{1}'."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -10977,8 +11013,8 @@
       var s = <int>{'0'.length};
       ```
   SHARED_DEFERRED_PREFIX:
-    template: "The prefix of a deferred import can't be used in other import directives."
-    tip: Try renaming one of the prefixes.
+    problemMessage: "The prefix of a deferred import can't be used in other import directives."
+    correctionMessage: Try renaming one of the prefixes.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -11021,10 +11057,10 @@
       var y = convert.json.encode(x.min(0, 1));
       ```
   SPREAD_EXPRESSION_FROM_DEFERRED_LIBRARY:
-    template: "Constant values from a deferred library can't be spread into a const literal."
-    tip: Try making the deferred import non-deferred.
+    problemMessage: "Constant values from a deferred library can't be spread into a const literal."
+    correctionMessage: Try making the deferred import non-deferred.
   STATIC_ACCESS_TO_INSTANCE_MEMBER:
-    template: "Instance member '{0}' can't be accessed using static access."
+    problemMessage: "Instance member '{0}' can't be accessed using static access."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -11083,20 +11119,20 @@
       ```
   IMPLEMENTS_DEFERRED_CLASS:
     sharedName: SUBTYPE_OF_DEFERRED_CLASS
-    template: "Classes and mixins can't implement deferred classes."
-    tip: Try specifying a different interface, removing the class from the list, or changing the import to not be deferred.
+    problemMessage: "Classes and mixins can't implement deferred classes."
+    correctionMessage: Try specifying a different interface, removing the class from the list, or changing the import to not be deferred.
     hasPublishedDocs: true
     comment: No parameters.
   MIXIN_DEFERRED_CLASS:
     sharedName: SUBTYPE_OF_DEFERRED_CLASS
-    template: "Classes can't mixin deferred classes."
-    tip: Try changing the import to not be deferred.
+    problemMessage: "Classes can't mixin deferred classes."
+    correctionMessage: Try changing the import to not be deferred.
     hasPublishedDocs: true
     comment: No parameters.
   EXTENDS_DEFERRED_CLASS:
     sharedName: SUBTYPE_OF_DEFERRED_CLASS
-    template: "Classes can't extend deferred classes."
-    tip: Try specifying a different superclass, or removing the extends clause.
+    problemMessage: "Classes can't extend deferred classes."
+    correctionMessage: Try specifying a different superclass, or removing the extends clause.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -11141,8 +11177,8 @@
       ```
   EXTENDS_DISALLOWED_CLASS:
     sharedName: SUBTYPE_OF_DISALLOWED_TYPE
-    template: "Classes can't extend '{0}'."
-    tip: Try specifying a different superclass, or removing the extends clause.
+    problemMessage: "Classes can't extend '{0}'."
+    correctionMessage: Try specifying a different superclass, or removing the extends clause.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -11202,32 +11238,32 @@
       ```
   MIXIN_OF_DISALLOWED_CLASS:
     sharedName: SUBTYPE_OF_DISALLOWED_TYPE
-    template: "Classes can't mixin '{0}'."
-    tip: Try specifying a different class or mixin, or remove the class or mixin from the list.
+    problemMessage: "Classes can't mixin '{0}'."
+    correctionMessage: Try specifying a different class or mixin, or remove the class or mixin from the list.
     hasPublishedDocs: true
     comment: |-
       Parameters:
       0: the name of the disallowed type
   MIXIN_SUPER_CLASS_CONSTRAINT_DISALLOWED_CLASS:
     sharedName: SUBTYPE_OF_DISALLOWED_TYPE
-    template: "''{0}' can't be used as a superclass constraint."
-    tip: "Try specifying a different super-class constraint, or remove the 'on' clause."
+    problemMessage: "''{0}' can't be used as a superclass constraint."
+    correctionMessage: "Try specifying a different super-class constraint, or remove the 'on' clause."
     hasPublishedDocs: true
     comment: |-
       Parameters:
       0: the name of the disallowed type
   IMPLEMENTS_DISALLOWED_CLASS:
     sharedName: SUBTYPE_OF_DISALLOWED_TYPE
-    template: "Classes and mixins can't implement '{0}'."
-    tip: Try specifying a different interface, or remove the class from the list.
+    problemMessage: "Classes and mixins can't implement '{0}'."
+    correctionMessage: Try specifying a different interface, or remove the class from the list.
     hasPublishedDocs: true
     comment: |-
       Parameters:
       0: the name of the disallowed type
   EXTENDS_TYPE_ALIAS_EXPANDS_TO_TYPE_PARAMETER:
     sharedName: SUPERTYPE_EXPANDS_TO_TYPE_PARAMETER
-    template: "A type alias that expands to a type parameter can't be used as a superclass."
-    tip: Try specifying a different superclass, or removing the extends clause.
+    problemMessage: "A type alias that expands to a type parameter can't be used as a superclass."
+    correctionMessage: Try specifying a different superclass, or removing the extends clause.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -11260,28 +11296,28 @@
       ```
   MIXIN_ON_TYPE_ALIAS_EXPANDS_TO_TYPE_PARAMETER:
     sharedName: SUPERTYPE_EXPANDS_TO_TYPE_PARAMETER
-    template: "A type alias that expands to a type parameter can't be used as a superclass constraint."
+    problemMessage: "A type alias that expands to a type parameter can't be used as a superclass constraint."
     hasPublishedDocs: true
     comment: No parameters.
   MIXIN_OF_TYPE_ALIAS_EXPANDS_TO_TYPE_PARAMETER:
     sharedName: SUPERTYPE_EXPANDS_TO_TYPE_PARAMETER
-    template: "A type alias that expands to a type parameter can't be mixed in."
+    problemMessage: "A type alias that expands to a type parameter can't be mixed in."
     hasPublishedDocs: true
     comment: No parameters.
   IMPLEMENTS_TYPE_ALIAS_EXPANDS_TO_TYPE_PARAMETER:
     sharedName: SUPERTYPE_EXPANDS_TO_TYPE_PARAMETER
-    template: "A type alias that expands to a type parameter can't be implemented."
-    tip: Try specifying a class or mixin, or removing the list.
+    problemMessage: "A type alias that expands to a type parameter can't be implemented."
+    correctionMessage: Try specifying a class or mixin, or removing the list.
     hasPublishedDocs: true
     comment: No parameters.
   SUPER_INITIALIZER_IN_OBJECT:
-    template: "The class 'Object' can't invoke a constructor from a superclass."
+    problemMessage: "The class 'Object' can't invoke a constructor from a superclass."
     comment: |-
       7.6.1 Generative Constructors: Let <i>k</i> be a generative constructor. It
       is a compile-time error if a generative constructor of class Object
       includes a superinitializer.
   SUPER_IN_EXTENSION:
-    template: "The 'super' keyword can't be used in an extension because an extension doesn't have a superclass."
+    problemMessage: "The 'super' keyword can't be used in an extension because an extension doesn't have a superclass."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -11312,7 +11348,7 @@
       }
       ```
   SUPER_IN_INVALID_CONTEXT:
-    template: "Invalid context for 'super' invocation."
+    problemMessage: "Invalid context for 'super' invocation."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -11336,7 +11372,7 @@
 
       Rewrite the code to not use `super`.
   SUPER_IN_REDIRECTING_CONSTRUCTOR:
-    template: "The redirecting constructor can't have a 'super' initializer."
+    problemMessage: "The redirecting constructor can't have a 'super' initializer."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -11370,8 +11406,8 @@
       }
       ```
   SWITCH_CASE_COMPLETES_NORMALLY:
-    template: "The 'case' should not complete normally."
-    tip: "Try adding 'break', or 'return', etc."
+    problemMessage: "The 'case' should not complete normally."
+    correctionMessage: "Try adding 'break', or 'return', etc."
     comment: |-
       It is an error if any case of a switch statement except the last case (the
       default case if present) may complete normally. The previous syntactic
@@ -11379,7 +11415,7 @@
       enumerated list of statements (break, continue, return, throw, or rethrow)
       is removed.
   SWITCH_EXPRESSION_NOT_ASSIGNABLE:
-    template: "Type '{0}' of the switch expression isn't assignable to the type '{1}' of case expressions."
+    problemMessage: "Type '{0}' of the switch expression isn't assignable to the type '{1}' of case expressions."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -11435,8 +11471,8 @@
       }
       ```
   TEAROFF_OF_GENERATIVE_CONSTRUCTOR_OF_ABSTRACT_CLASS:
-    template: "A generative constructor of an abstract class can't be torn off."
-    tip: Try tearing off a constructor of a concrete class, or a non-generative constructor.
+    problemMessage: "A generative constructor of an abstract class can't be torn off."
+    correctionMessage: Try tearing off a constructor of a concrete class, or a non-generative constructor.
     comment: No parameters.
     documentation: |-
       #### Description
@@ -11465,7 +11501,7 @@
 
       Tear off the constructor of a concrete class.
   THROW_OF_INVALID_TYPE:
-    template: "The type '{0}' of the thrown expression must be assignable to 'Object'."
+    problemMessage: "The type '{0}' of the thrown expression must be assignable to 'Object'."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -11498,8 +11534,8 @@
       }
       ```
   TOP_LEVEL_CYCLE:
-    template: "The type of '{0}' can't be inferred because it depends on itself through the cycle: {1}."
-    tip: Try adding an explicit type to one or more of the variables in the cycle in order to break the cycle.
+    problemMessage: "The type of '{0}' can't be inferred because it depends on itself through the cycle: {1}."
+    correctionMessage: Try adding an explicit type to one or more of the variables in the cycle in order to break the cycle.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -11546,7 +11582,7 @@
       variables is assigned a value that doesn't depend on the other variables
       before any of the variables in the cycle are referenced.
   TYPE_ALIAS_CANNOT_REFERENCE_ITSELF:
-    template: "Typedefs can't reference themselves directly or recursively via another typedef."
+    problemMessage: "Typedefs can't reference themselves directly or recursively via another typedef."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -11575,8 +11611,8 @@
       typedef G = void Function(int);
       ```
   TYPE_ANNOTATION_DEFERRED_CLASS:
-    template: "The deferred type '{0}' can't be used in a declaration, cast, or type test."
-    tip: Try using a different type, or changing the import to not be deferred.
+    problemMessage: "The deferred type '{0}' can't be used in a declaration, cast, or type test."
+    correctionMessage: Try using a different type, or changing the import to not be deferred.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -11619,8 +11655,8 @@
       appropriate, then use that type in place of the type from the deferred
       library.
   TYPE_ARGUMENT_NOT_MATCHING_BOUNDS:
-    template: "'{0}' doesn't conform to the bound '{2}' of the type parameter '{1}'."
-    tip: "Try using a type that is or is a subclass of '{2}'."
+    problemMessage: "'{0}' doesn't conform to the bound '{2}' of the type parameter '{1}'."
+    correctionMessage: "Try using a type that is or is a subclass of '{2}'."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -11655,8 +11691,8 @@
       var a = A<int>();
       ```
   TYPE_PARAMETER_REFERENCED_BY_STATIC:
-    template: "Static members can't reference type parameters of the class."
-    tip: Try removing the reference to the type parameter, or making the member an instance member.
+    problemMessage: "Static members can't reference type parameters of the class."
+    correctionMessage: Try removing the reference to the type parameter, or making the member an instance member.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -11698,8 +11734,8 @@
       Note, however, that there isn’t a relationship between `T` and `S`, so this
       second option changes the semantics from what was likely to be intended.
   TYPE_PARAMETER_SUPERTYPE_OF_ITS_BOUND:
-    template: "'{0}' can't be a supertype of its upper bound."
-    tip: "Try using a type that is the same as or a subclass of '{1}'."
+    problemMessage: "'{0}' can't be a supertype of its upper bound."
+    correctionMessage: "Try using a type that is the same as or a subclass of '{1}'."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -11748,8 +11784,8 @@
       class C<T> {}
       ```
   TYPE_TEST_WITH_NON_TYPE:
-    template: "The name '{0}' isn't a type and can't be used in an 'is' expression."
-    tip: Try correcting the name to match an existing type.
+    problemMessage: "The name '{0}' isn't a type and can't be used in an 'is' expression."
+    correctionMessage: Try correcting the name to match an existing type.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -11800,8 +11836,8 @@
       }
       ```
   TYPE_TEST_WITH_UNDEFINED_NAME:
-    template: "The name '{0}' isn't defined, so it can't be used in an 'is' expression."
-    tip: "Try changing the name to the name of an existing type, or creating a type with the name '{0}'."
+    problemMessage: "The name '{0}' isn't defined, so it can't be used in an 'is' expression."
+    correctionMessage: "Try changing the name to the name of an existing type, or creating a type with the name '{0}'."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -11836,33 +11872,33 @@
       ```
   UNCHECKED_USE_OF_NULLABLE_VALUE_IN_SPREAD:
     sharedName: UNCHECKED_USE_OF_NULLABLE_VALUE
-    template: "A nullable expression can't be used in a spread."
-    tip: "Try checking that the value isn't 'null' before using it in a spread, or use a null-aware spread."
+    problemMessage: "A nullable expression can't be used in a spread."
+    correctionMessage: "Try checking that the value isn't 'null' before using it in a spread, or use a null-aware spread."
     hasPublishedDocs: true
   UNCHECKED_INVOCATION_OF_NULLABLE_VALUE:
     sharedName: UNCHECKED_USE_OF_NULLABLE_VALUE
-    template: "The function can't be unconditionally invoked because it can be 'null'."
-    tip: "Try adding a null check ('!')."
+    problemMessage: "The function can't be unconditionally invoked because it can be 'null'."
+    correctionMessage: "Try adding a null check ('!')."
     hasPublishedDocs: true
   UNCHECKED_METHOD_INVOCATION_OF_NULLABLE_VALUE:
     sharedName: UNCHECKED_USE_OF_NULLABLE_VALUE
-    template: "The method '{0}' can't be unconditionally invoked because the receiver can be 'null'."
-    tip: "Try making the call conditional (using '?.') or adding a null check to the target ('!')."
+    problemMessage: "The method '{0}' can't be unconditionally invoked because the receiver can be 'null'."
+    correctionMessage: "Try making the call conditional (using '?.') or adding a null check to the target ('!')."
     hasPublishedDocs: true
   UNCHECKED_OPERATOR_INVOCATION_OF_NULLABLE_VALUE:
     sharedName: UNCHECKED_USE_OF_NULLABLE_VALUE
-    template: "The operator '{0}' can't be unconditionally invoked because the receiver can be 'null'."
-    tip: "Try adding a null check to the target ('!')."
+    problemMessage: "The operator '{0}' can't be unconditionally invoked because the receiver can be 'null'."
+    correctionMessage: "Try adding a null check to the target ('!')."
     hasPublishedDocs: true
   UNCHECKED_USE_OF_NULLABLE_VALUE_IN_YIELD_EACH:
     sharedName: UNCHECKED_USE_OF_NULLABLE_VALUE
-    template: "A nullable expression can't be used in a yield-each statement."
-    tip: "Try checking that the value isn't 'null' before using it in a yield-each statement."
+    problemMessage: "A nullable expression can't be used in a yield-each statement."
+    correctionMessage: "Try checking that the value isn't 'null' before using it in a yield-each statement."
     hasPublishedDocs: true
   UNCHECKED_USE_OF_NULLABLE_VALUE_AS_CONDITION:
     sharedName: UNCHECKED_USE_OF_NULLABLE_VALUE
-    template: "A nullable expression can't be used as a condition."
-    tip: "Try checking that the value isn't 'null' before using it as a condition."
+    problemMessage: "A nullable expression can't be used as a condition."
+    correctionMessage: "Try checking that the value isn't 'null' before using it as a condition."
     hasPublishedDocs: true
     documentation: |-
       #### Description
@@ -11922,17 +11958,17 @@
       ```
   UNCHECKED_USE_OF_NULLABLE_VALUE_AS_ITERATOR:
     sharedName: UNCHECKED_USE_OF_NULLABLE_VALUE
-    template: "A nullable expression can't be used as an iterator in a for-in loop."
-    tip: "Try checking that the value isn't 'null' before using it as an iterator."
+    problemMessage: "A nullable expression can't be used as an iterator in a for-in loop."
+    correctionMessage: "Try checking that the value isn't 'null' before using it as an iterator."
     hasPublishedDocs: true
   UNCHECKED_PROPERTY_ACCESS_OF_NULLABLE_VALUE:
     sharedName: UNCHECKED_USE_OF_NULLABLE_VALUE
-    template: "The property '{0}' can't be unconditionally accessed because the receiver can be 'null'."
-    tip: "Try making the access conditional (using '?.') or adding a null check to the target ('!')."
+    problemMessage: "The property '{0}' can't be unconditionally accessed because the receiver can be 'null'."
+    correctionMessage: "Try making the access conditional (using '?.') or adding a null check to the target ('!')."
     hasPublishedDocs: true
   UNDEFINED_ANNOTATION:
-    template: "Undefined name '{0}' used as an annotation."
-    tip: Try defining the name or importing it from another library.
+    problemMessage: "Undefined name '{0}' used as an annotation."
+    correctionMessage: Try defining the name or importing it from another library.
     isUnresolvedIdentifier: true
     hasPublishedDocs: true
     comment: No parameters.
@@ -11973,8 +12009,8 @@
 
       Otherwise, remove the annotation.
   UNDEFINED_CLASS:
-    template: "Undefined class '{0}'."
-    tip: "Try changing the name to the name of an existing class, or creating a class with the name '{0}'."
+    problemMessage: "Undefined class '{0}'."
+    correctionMessage: "Try changing the name to the name of an existing class, or creating a class with the name '{0}'."
     isUnresolvedIdentifier: true
     hasPublishedDocs: true
     comment: |-
@@ -12013,8 +12049,8 @@
       import.
   UNDEFINED_CLASS_BOOLEAN:
     sharedName: UNDEFINED_CLASS
-    template: "Undefined class '{0}'."
-    tip: "Try using the type 'bool'."
+    problemMessage: "Undefined class '{0}'."
+    correctionMessage: "Try using the type 'bool'."
     isUnresolvedIdentifier: true
     hasPublishedDocs: true
     comment: |-
@@ -12024,8 +12060,8 @@
       Parameters:
       0: the name of the undefined class
   UNDEFINED_CONSTRUCTOR_IN_INITIALIZER:
-    template: "The class '{0}' doesn't have a constructor named '{1}'."
-    tip: "Try defining a constructor named '{1}' in '{0}', or invoking a different constructor."
+    problemMessage: "The class '{0}' doesn't have a constructor named '{1}'."
+    correctionMessage: "Try defining a constructor named '{1}' in '{0}', or invoking a different constructor."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -12092,15 +12128,15 @@
       ```
   UNDEFINED_CONSTRUCTOR_IN_INITIALIZER_DEFAULT:
     sharedName: UNDEFINED_CONSTRUCTOR_IN_INITIALIZER
-    template: "The class '{0}' doesn't have an unnamed constructor."
-    tip: "Try defining an unnamed constructor in '{0}', or invoking a different constructor."
+    problemMessage: "The class '{0}' doesn't have an unnamed constructor."
+    correctionMessage: "Try defining an unnamed constructor in '{0}', or invoking a different constructor."
     hasPublishedDocs: true
     comment: |-
       Parameters:
       0: the name of the superclass that does not define the invoked constructor
   UNDEFINED_ENUM_CONSTANT:
-    template: "There's no constant named '{0}' in '{1}'."
-    tip: "Try correcting the name to the name of an existing constant, or defining a constant named '{0}'."
+    problemMessage: "There's no constant named '{0}' in '{1}'."
+    correctionMessage: "Try correcting the name to the name of an existing constant, or defining a constant named '{0}'."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -12144,8 +12180,8 @@
       var e = E.b;
       ```
   UNDEFINED_EXTENSION_GETTER:
-    template: "The getter '{0}' isn't defined for the extension '{1}'."
-    tip: "Try correcting the name to the name of an existing getter, or defining a getter named '{0}'."
+    problemMessage: "The getter '{0}' isn't defined for the extension '{1}'."
+    correctionMessage: "Try correcting the name to the name of an existing getter, or defining a getter named '{0}'."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -12241,8 +12277,8 @@
       }
       ```
   UNDEFINED_EXTENSION_METHOD:
-    template: "The method '{0}' isn't defined for the extension '{1}'."
-    tip: "Try correcting the name to the name of an existing method, or defining a method named '{0}'."
+    problemMessage: "The method '{0}' isn't defined for the extension '{1}'."
+    correctionMessage: "Try correcting the name to the name of an existing method, or defining a method named '{0}'."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -12338,8 +12374,8 @@
       }
       ```
   UNDEFINED_EXTENSION_OPERATOR:
-    template: "The operator '{0}' isn't defined for the extension '{1}'."
-    tip: "Try defining the operator '{0}'."
+    problemMessage: "The operator '{0}' isn't defined for the extension '{1}'."
+    correctionMessage: "Try defining the operator '{0}'."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -12387,8 +12423,8 @@
       extension E on String {}
       ```
   UNDEFINED_EXTENSION_SETTER:
-    template: "The setter '{0}' isn't defined for the extension '{1}'."
-    tip: "Try correcting the name to the name of an existing setter, or defining a setter named '{0}'."
+    problemMessage: "The setter '{0}' isn't defined for the extension '{1}'."
+    correctionMessage: "Try correcting the name to the name of an existing setter, or defining a setter named '{0}'."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -12486,8 +12522,8 @@
       }
       ```
   UNDEFINED_FUNCTION:
-    template: "The function '{0}' isn't defined."
-    tip: "Try importing the library that defines '{0}', correcting the name to the name of an existing function, or defining a function named '{0}'."
+    problemMessage: "The function '{0}' isn't defined."
+    correctionMessage: "Try importing the library that defines '{0}', correcting the name to the name of an existing function, or defining a function named '{0}'."
     isUnresolvedIdentifier: true
     hasPublishedDocs: true
     comment: |-
@@ -12530,8 +12566,8 @@
       If the function is defined but isn't visible, then you probably need to add
       an import or re-arrange your code to make the function visible.
   UNDEFINED_GETTER:
-    template: "The getter '{0}' isn't defined for the type '{1}'."
-    tip: "Try importing the library that defines '{0}', correcting the name to the name of an existing getter, or defining a getter or field named '{0}'."
+    problemMessage: "The getter '{0}' isn't defined for the type '{1}'."
+    correctionMessage: "Try importing the library that defines '{0}', correcting the name to the name of an existing getter, or defining a getter or field named '{0}'."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -12564,16 +12600,16 @@
       ```
   UNDEFINED_GETTER_ON_FUNCTION_TYPE:
     sharedName: UNDEFINED_GETTER
-    template: "The getter '{0}' isn't defined for the '{1}' function type."
-    tip: "Try wrapping the function type alias in parentheses in order to access '{0}' as an extension getter on 'Type'."
+    problemMessage: "The getter '{0}' isn't defined for the '{1}' function type."
+    correctionMessage: "Try wrapping the function type alias in parentheses in order to access '{0}' as an extension getter on 'Type'."
     hasPublishedDocs: true
     comment: |-
       Parameters:
       0: the name of the getter
       1: the name of the function type alias
   UNDEFINED_IDENTIFIER:
-    template: "Undefined name '{0}'."
-    tip: Try correcting the name to one that is defined, or defining the name.
+    problemMessage: "Undefined name '{0}'."
+    correctionMessage: Try correcting the name to one that is defined, or defining the name.
     isUnresolvedIdentifier: true
     hasPublishedDocs: true
     comment: |-
@@ -12608,8 +12644,8 @@
       If the identifier is defined but isn't visible, then you probably need to
       add an import or re-arrange your code to make the identifier visible.
   UNDEFINED_IDENTIFIER_AWAIT:
-    template: "Undefined name 'await' in function body not marked with 'async'."
-    tip: "Try correcting the name to one that is defined, defining the name, or adding 'async' to the enclosing function body."
+    problemMessage: "Undefined name 'await' in function body not marked with 'async'."
+    correctionMessage: "Try correcting the name to one that is defined, defining the name, or adding 'async' to the enclosing function body."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -12638,8 +12674,8 @@
       void f(p) async { await p; }
       ```
   UNDEFINED_METHOD:
-    template: "The method '{0}' isn't defined for the type '{1}'."
-    tip: "Try correcting the name to the name of an existing method, or defining a method named '{0}'."
+    problemMessage: "The method '{0}' isn't defined for the type '{1}'."
+    correctionMessage: "Try correcting the name to the name of an existing method, or defining a method named '{0}'."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -12672,16 +12708,16 @@
       ```
   UNDEFINED_METHOD_ON_FUNCTION_TYPE:
     sharedName: UNDEFINED_METHOD
-    template: "The method '{0}' isn't defined for the '{1}' function type."
-    tip: "Try wrapping the function type alias in parentheses in order to access '{0}' as an extension method on 'Type'."
+    problemMessage: "The method '{0}' isn't defined for the '{1}' function type."
+    correctionMessage: "Try wrapping the function type alias in parentheses in order to access '{0}' as an extension method on 'Type'."
     hasPublishedDocs: true
     comment: |-
       Parameters:
       0: the name of the method
       1: the name of the function type alias
   UNDEFINED_NAMED_PARAMETER:
-    template: "The named parameter '{0}' isn't defined."
-    tip: "Try correcting the name to an existing named parameter's name, or defining a named parameter with the name '{0}'."
+    problemMessage: "The named parameter '{0}' isn't defined."
+    correctionMessage: "Try correcting the name to an existing named parameter's name, or defining a named parameter with the name '{0}'."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -12756,8 +12792,8 @@
       }
       ```
   UNDEFINED_OPERATOR:
-    template: "The operator '{0}' isn't defined for the type '{1}'."
-    tip: "Try defining the operator '{0}'."
+    problemMessage: "The operator '{0}' isn't defined for the type '{1}'."
+    correctionMessage: "Try defining the operator '{0}'."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -12792,8 +12828,8 @@
       C f(C c) => c + 2;
       ```
   UNDEFINED_PREFIXED_NAME:
-    template: "The name '{0}' is being referenced through the prefix '{1}', but it isn't defined in any of the libraries imported using that prefix."
-    tip: "Try correcting the prefix or importing the library that defines '{0}'."
+    problemMessage: "The name '{0}' is being referenced through the prefix '{1}', but it isn't defined in any of the libraries imported using that prefix."
+    correctionMessage: "Try correcting the prefix or importing the library that defines '{0}'."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -12824,8 +12860,8 @@
       If the name is wrong, then change it to one of the names that's declared in
       the imported libraries.
   UNDEFINED_SETTER:
-    template: "The setter '{0}' isn't defined for the type '{1}'."
-    tip: "Try importing the library that defines '{0}', correcting the name to the name of an existing setter, or defining a setter or field named '{0}'."
+    problemMessage: "The setter '{0}' isn't defined for the type '{1}'."
+    correctionMessage: "Try importing the library that defines '{0}', correcting the name to the name of an existing setter, or defining a setter or field named '{0}'."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -12868,8 +12904,8 @@
       ```
   UNDEFINED_SETTER_ON_FUNCTION_TYPE:
     sharedName: UNDEFINED_SETTER
-    template: "The setter '{0}' isn't defined for the '{1}' function type."
-    tip: "Try wrapping the function type alias in parentheses in order to access '{0}' as an extension getter on 'Type'."
+    problemMessage: "The setter '{0}' isn't defined for the '{1}' function type."
+    correctionMessage: "Try wrapping the function type alias in parentheses in order to access '{0}' as an extension getter on 'Type'."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -12877,8 +12913,8 @@
       1: the name of the function type alias
   UNDEFINED_SUPER_GETTER:
     sharedName: UNDEFINED_SUPER_MEMBER
-    template: "The getter '{0}' isn't defined in a superclass of '{1}'."
-    tip: "Try correcting the name to the name of an existing getter, or defining a getter or field named '{0}' in a superclass."
+    problemMessage: "The getter '{0}' isn't defined in a superclass of '{1}'."
+    correctionMessage: "Try correcting the name to the name of an existing getter, or defining a getter or field named '{0}' in a superclass."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -12886,8 +12922,8 @@
       1: the name of the enclosing type where the getter is being looked for
   UNDEFINED_SUPER_METHOD:
     sharedName: UNDEFINED_SUPER_MEMBER
-    template: "The method '{0}' isn't defined in a superclass of '{1}'."
-    tip: "Try correcting the name to the name of an existing method, or defining a method named '{0}' in a superclass."
+    problemMessage: "The method '{0}' isn't defined in a superclass of '{1}'."
+    correctionMessage: "Try correcting the name to the name of an existing method, or defining a method named '{0}' in a superclass."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -12936,8 +12972,8 @@
       superclasses or remove the invocation.
   UNDEFINED_SUPER_OPERATOR:
     sharedName: UNDEFINED_SUPER_MEMBER
-    template: "The operator '{0}' isn't defined in a superclass of '{1}'."
-    tip: "Try defining the operator '{0}' in a superclass."
+    problemMessage: "The operator '{0}' isn't defined in a superclass of '{1}'."
+    correctionMessage: "Try defining the operator '{0}' in a superclass."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -12945,16 +12981,16 @@
       1: the name of the enclosing type where the operator is being looked for
   UNDEFINED_SUPER_SETTER:
     sharedName: UNDEFINED_SUPER_MEMBER
-    template: "The setter '{0}' isn't defined in a superclass of '{1}'."
-    tip: "Try correcting the name to the name of an existing setter, or defining a setter or field named '{0}' in a superclass."
+    problemMessage: "The setter '{0}' isn't defined in a superclass of '{1}'."
+    correctionMessage: "Try correcting the name to the name of an existing setter, or defining a setter or field named '{0}' in a superclass."
     hasPublishedDocs: true
     comment: |-
       Parameters:
       0: the name of the setter
       1: the name of the enclosing type where the setter is being looked for
   UNQUALIFIED_REFERENCE_TO_NON_LOCAL_STATIC_MEMBER:
-    template: Static members from supertypes must be qualified by the name of the defining type.
-    tip: "Try adding '{0}.' before the name."
+    problemMessage: Static members from supertypes must be qualified by the name of the defining type.
+    correctionMessage: "Try adding '{0}.' before the name."
     hasPublishedDocs: true
     comment: |-
       This is a specialization of [INSTANCE_ACCESS_TO_STATIC_MEMBER] that is used
@@ -13001,8 +13037,8 @@
       }
       ```
   UNQUALIFIED_REFERENCE_TO_STATIC_MEMBER_OF_EXTENDED_TYPE:
-    template: Static members from the extended type or one of its superclasses must be qualified by the name of the defining type.
-    tip: "Try adding '{0}.' before the name."
+    problemMessage: Static members from the extended type or one of its superclasses must be qualified by the name of the defining type.
+    correctionMessage: "Try adding '{0}.' before the name."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -13065,8 +13101,8 @@
       }
       ```
   URI_DOES_NOT_EXIST:
-    template: "Target of URI doesn't exist: '{0}'."
-    tip: Try creating the file referenced by the URI, or Try using a URI for a file that does exist.
+    problemMessage: "Target of URI doesn't exist: '{0}'."
+    correctionMessage: Try creating the file referenced by the URI, or Try using a URI for a file that does exist.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -13092,8 +13128,8 @@
 
       If the URI is correct, then create the file.
   URI_HAS_NOT_BEEN_GENERATED:
-    template: "Target of URI hasn't been generated: '{0}'."
-    tip: Try running the generator that will generate the file referenced by the URI.
+    problemMessage: "Target of URI hasn't been generated: '{0}'."
+    correctionMessage: Try running the generator that will generate the file referenced by the URI.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -13129,7 +13165,7 @@
       If the file isn't a generated file, then check the spelling of the URI or
       create the file.
   URI_WITH_INTERPOLATION:
-    template: "URIs can't use string interpolation."
+    problemMessage: "URIs can't use string interpolation."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -13162,8 +13198,8 @@
       var zero = min(0, 0);
       ```
   USE_OF_VOID_RESULT:
-    template: "This expression has a type of 'void' so its value can't be used."
-    tip: "Try checking to see if you're using the correct API; there might be a function or call that returns void you didn't expect. Also check type parameters and variables which might also be void."
+    problemMessage: "This expression has a type of 'void' so its value can't be used."
+    correctionMessage: "Try checking to see if you're using the correct API; there might be a function or call that returns void you didn't expect. Also check type parameters and variables which might also be void."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -13192,8 +13228,8 @@
       Either rewrite the code so that the expression has a value or rewrite the
       code so that it doesn't depend on the value.
   VARIABLE_TYPE_MISMATCH:
-    template: "A value of type '{0}' can't be assigned to a const variable of type '{1}'."
-    tip: "Try using a subtype, or removing the 'const' keyword"
+    problemMessage: "A value of type '{0}' can't be assigned to a const variable of type '{1}'."
+    correctionMessage: "Try using a subtype, or removing the 'const' keyword"
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -13236,8 +13272,8 @@
       const int y = x;
       ```
   WRONG_EXPLICIT_TYPE_PARAMETER_VARIANCE_IN_SUPERINTERFACE:
-    template: "'{0}' is an '{1}' type parameter and can't be used in an '{2}' position in '{3}'."
-    tip: "Try using 'in' type parameters in 'in' positions and 'out' type parameters in 'out' positions in the superinterface."
+    problemMessage: "'{0}' is an '{1}' type parameter and can't be used in an '{2}' position in '{3}'."
+    correctionMessage: "Try using 'in' type parameters in 'in' positions and 'out' type parameters in 'out' positions in the superinterface."
     comment: |-
       Let `C` be a generic class that declares a formal type parameter `X`, and
       assume that `T` is a direct superinterface of `C`.
@@ -13255,7 +13291,7 @@
          superinterface {3}
       3: the name of the superinterface
   WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR:
-    template: "Operator '{0}' should declare exactly {1} parameters, but {2} found."
+    problemMessage: "Operator '{0}' should declare exactly {1} parameters, but {2} found."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -13293,7 +13329,7 @@
        but I don't know what to link to.
   WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR_MINUS:
     sharedName: WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
-    template: "Operator '-' should declare 0 or 1 parameter, but {0} found."
+    problemMessage: "Operator '-' should declare 0 or 1 parameter, but {0} found."
     hasPublishedDocs: true
     comment: |-
       7.1.1 Operators: It is a compile time error if the arity of the
@@ -13302,7 +13338,7 @@
       Parameters:
       0: the number of parameters found in the operator declaration
   WRONG_NUMBER_OF_PARAMETERS_FOR_SETTER:
-    template: Setters must declare exactly one required positional parameter.
+    problemMessage: Setters must declare exactly one required positional parameter.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -13345,8 +13381,8 @@
       }
       ```
   WRONG_NUMBER_OF_TYPE_ARGUMENTS:
-    template: "The type '{0}' is declared with {1} type parameters, but {2} type arguments were given."
-    tip: Try adjusting the number of type arguments to match the number of type parameters.
+    problemMessage: "The type '{0}' is declared with {1} type parameters, but {2} type arguments were given."
+    correctionMessage: Try adjusting the number of type arguments to match the number of type parameters.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -13396,8 +13432,8 @@
       void f(C<int> x) {}
       ```
   WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR:
-    template: "The constructor '{0}.{1}' doesn't have type parameters."
-    tip: Try moving type arguments to after the type name.
+    problemMessage: "The constructor '{0}.{1}' doesn't have type parameters."
+    correctionMessage: Try moving type arguments to after the type name.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -13447,8 +13483,8 @@
       C f() => C.named();
       ```
   WRONG_NUMBER_OF_TYPE_ARGUMENTS_EXTENSION:
-    template: "The extension '{0}' is declared with {1} type parameters, but {2} type arguments were given."
-    tip: Try adjusting the number of type arguments.
+    problemMessage: "The extension '{0}' is declared with {1} type parameters, but {2} type arguments were given."
+    correctionMessage: Try adjusting the number of type arguments.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -13494,23 +13530,23 @@
       ```
   WRONG_NUMBER_OF_TYPE_ARGUMENTS_ANONYMOUS_FUNCTION:
     sharedName: WRONG_NUMBER_OF_TYPE_ARGUMENTS_FUNCTION
-    template: "This function is declared with {0} type parameters, but {1} type arguments were given."
-    tip: Try adjusting the number of type arguments to match the number of type parameters.
+    problemMessage: "This function is declared with {0} type parameters, but {1} type arguments were given."
+    correctionMessage: Try adjusting the number of type arguments to match the number of type parameters.
     comment: |-
       Parameters:
       0: the number of type parameters that were declared
       1: the number of type arguments provided
   WRONG_NUMBER_OF_TYPE_ARGUMENTS_FUNCTION:
-    template: "The function '{0}' is declared with {1} type parameters, but {2} type arguments were given."
-    tip: Try adjusting the number of type arguments to match the number of type parameters.
+    problemMessage: "The function '{0}' is declared with {1} type parameters, but {2} type arguments were given."
+    correctionMessage: Try adjusting the number of type arguments to match the number of type parameters.
     comment: |-
       Parameters:
       0: the name of the function being referenced
       1: the number of type parameters that were declared
       2: the number of type arguments provided
   WRONG_NUMBER_OF_TYPE_ARGUMENTS_METHOD:
-    template: "The method '{0}' is declared with {1} type parameters, but {2} type arguments are given."
-    tip: Try adjusting the number of type arguments.
+    problemMessage: "The method '{0}' is declared with {1} type parameters, but {2} type arguments are given."
+    correctionMessage: Try adjusting the number of type arguments.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -13562,15 +13598,15 @@
       int f(C c) => c.m(2);
       ```
   WRONG_TYPE_PARAMETER_VARIANCE_IN_SUPERINTERFACE:
-    template: "'{0}' can't be used contravariantly or invariantly in '{1}'."
-    tip: Try not using class type parameters in types of formal parameters of function types, nor in explicitly contravariant or invariant superinterfaces.
+    problemMessage: "'{0}' can't be used contravariantly or invariantly in '{1}'."
+    correctionMessage: Try not using class type parameters in types of formal parameters of function types, nor in explicitly contravariant or invariant superinterfaces.
     comment: |-
       Let `C` be a generic class that declares a formal type parameter `X`, and
       assume that `T` is a direct superinterface of `C`. It is a compile-time
       error if `X` occurs contravariantly or invariantly in `T`.
   WRONG_TYPE_PARAMETER_VARIANCE_POSITION:
-    template: "The '{0}' type parameter '{1}' can't be used in an '{2}' position."
-    tip: "Try removing the type parameter or change the explicit variance modifier declaration for the type parameter to another one of 'in', 'out', or 'inout'."
+    problemMessage: "The '{0}' type parameter '{1}' can't be used in an '{2}' position."
+    correctionMessage: "Try removing the type parameter or change the explicit variance modifier declaration for the type parameter to another one of 'in', 'out', or 'inout'."
     comment: |-
       Let `C` be a generic class that declares a formal type parameter `X`.
 
@@ -13590,8 +13626,8 @@
       2: the variance position that the type parameter {1} is in
   YIELD_EACH_IN_NON_GENERATOR:
     sharedName: YIELD_IN_NON_GENERATOR
-    template: "Yield-each statements must be in a generator function (one marked with either 'async*' or 'sync*')."
-    tip: "Try adding 'async*' or 'sync*' to the enclosing function."
+    problemMessage: "Yield-each statements must be in a generator function (one marked with either 'async*' or 'sync*')."
+    correctionMessage: "Try adding 'async*' or 'sync*' to the enclosing function."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -13633,8 +13669,8 @@
       }
       ```
   YIELD_IN_NON_GENERATOR:
-    template: "Yield statements must be in a generator function (one marked with either 'async*' or 'sync*')."
-    tip: "Try adding 'async*' or 'sync*' to the enclosing function."
+    problemMessage: "Yield statements must be in a generator function (one marked with either 'async*' or 'sync*')."
+    correctionMessage: "Try adding 'async*' or 'sync*' to the enclosing function."
     hasPublishedDocs: true
     comment: |-
       ?? Yield: It is a compile-time error if a yield statement appears in a
@@ -13642,7 +13678,7 @@
 
       No parameters.
   YIELD_OF_INVALID_TYPE:
-    template: "The type '{0}' implied by the 'yield' expression must be assignable to '{1}'."
+    problemMessage: "The type '{0}' implied by the 'yield' expression must be assignable to '{1}'."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -13689,202 +13725,202 @@
       ```
 FfiCode:
   ANNOTATION_ON_POINTER_FIELD:
-    template: "Fields in a struct class whose type is 'Pointer' should not have any annotations."
-    tip: Try removing the annotation.
+    problemMessage: "Fields in a struct class whose type is 'Pointer' should not have any annotations."
+    correctionMessage: Try removing the annotation.
     comment: No parameters.
   ARGUMENT_MUST_BE_A_CONSTANT:
-    template: "Argument '{0}' must be a constant."
-    tip: Try replacing the value with a literal or const.
+    problemMessage: "Argument '{0}' must be a constant."
+    correctionMessage: Try replacing the value with a literal or const.
     comment: |-
       Parameters:
       0: the name of the argument
   CREATION_OF_STRUCT_OR_UNION:
-    template: "Subclasses of 'Struct' and 'Union' are backed by native memory, and can't be instantiated by a generative constructor."
-    tip: "Try allocating it via allocation, or load from a 'Pointer'."
+    problemMessage: "Subclasses of 'Struct' and 'Union' are backed by native memory, and can't be instantiated by a generative constructor."
+    correctionMessage: "Try allocating it via allocation, or load from a 'Pointer'."
     comment: No parameters.
   EMPTY_STRUCT:
-    template: "Struct '{0}' is empty. Empty structs are undefined behavior."
-    tip: "Try adding a field to '{0}' or use a different Struct."
+    problemMessage: "Struct '{0}' is empty. Empty structs are undefined behavior."
+    correctionMessage: "Try adding a field to '{0}' or use a different Struct."
     comment: |-
       Parameters:
       0: the name of the struct class
   EXTRA_ANNOTATION_ON_STRUCT_FIELD:
-    template: Fields in a struct class must have exactly one annotation indicating the native type.
-    tip: Try removing the extra annotation.
+    problemMessage: Fields in a struct class must have exactly one annotation indicating the native type.
+    correctionMessage: Try removing the extra annotation.
     comment: No parameters.
   EXTRA_SIZE_ANNOTATION_CARRAY:
-    template: "'Array's must have exactly one 'Array' annotation."
-    tip: Try removing the extra annotation.
+    problemMessage: "'Array's must have exactly one 'Array' annotation."
+    correctionMessage: Try removing the extra annotation.
     comment: No parameters.
   FFI_NATIVE_ONLY_STATIC:
-    template: FfiNative annotations can only be used on static functions.
-    tip: Change the method to static.
+    problemMessage: FfiNative annotations can only be used on static functions.
+    correctionMessage: Change the method to static.
     comment: No parameters.
   FIELD_INITIALIZER_IN_STRUCT:
-    template: "Constructors in subclasses of 'Struct' and 'Union' can't have field initializers."
-    tip: Try removing the field initializer and marking the field as external.
+    problemMessage: "Constructors in subclasses of 'Struct' and 'Union' can't have field initializers."
+    correctionMessage: Try removing the field initializer and marking the field as external.
     comment: No parameters.
   FIELD_IN_STRUCT_WITH_INITIALIZER:
-    template: "Fields in subclasses of 'Struct' and 'Union' can't have initializers."
-    tip: Try removing the initializer and marking the field as external.
+    problemMessage: "Fields in subclasses of 'Struct' and 'Union' can't have initializers."
+    correctionMessage: Try removing the initializer and marking the field as external.
     comment: No parameters.
   FIELD_MUST_BE_EXTERNAL_IN_STRUCT:
-    template: "Fields of 'Struct' and 'Union' subclasses must be marked external."
-    tip: "Try adding the 'external' modifier."
+    problemMessage: "Fields of 'Struct' and 'Union' subclasses must be marked external."
+    correctionMessage: "Try adding the 'external' modifier."
     comment: No parameters.
   GENERIC_STRUCT_SUBCLASS:
-    template: "The class '{0}' can't extend 'Struct' or 'Union' because it is generic."
-    tip: "Try removing the type parameters from '{0}'."
+    problemMessage: "The class '{0}' can't extend 'Struct' or 'Union' because it is generic."
+    correctionMessage: "Try removing the type parameters from '{0}'."
     comment: |-
       Parameters:
       0: the name of the struct class
   INVALID_EXCEPTION_VALUE:
-    template: "The method 'Pointer.fromFunction' must not have an exceptional return value (the second argument) when the return type of the function is either 'void', 'Handle' or 'Pointer'."
-    tip: Try removing the exceptional return value.
+    problemMessage: "The method 'Pointer.fromFunction' must not have an exceptional return value (the second argument) when the return type of the function is either 'void', 'Handle' or 'Pointer'."
+    correctionMessage: Try removing the exceptional return value.
     comment: No parameters.
   INVALID_FIELD_TYPE_IN_STRUCT:
-    template: "Fields in struct classes can't have the type '{0}'. They can only be declared as 'int', 'double', 'Array', 'Pointer', or subtype of 'Struct' or 'Union'."
-    tip: "Try using 'int', 'double', 'Array', 'Pointer', or subtype of 'Struct' or 'Union'."
+    problemMessage: "Fields in struct classes can't have the type '{0}'. They can only be declared as 'int', 'double', 'Array', 'Pointer', or subtype of 'Struct' or 'Union'."
+    correctionMessage: "Try using 'int', 'double', 'Array', 'Pointer', or subtype of 'Struct' or 'Union'."
     comment: |-
       Parameters:
       0: the type of the field
   LEAF_CALL_MUST_NOT_RETURN_HANDLE:
-    template: FFI leaf call must not return a Handle.
-    tip: Try changing the return type to primitive or struct.
+    problemMessage: FFI leaf call must not return a Handle.
+    correctionMessage: Try changing the return type to primitive or struct.
     comment: No parameters.
   LEAF_CALL_MUST_NOT_TAKE_HANDLE:
-    template: FFI leaf call must not take arguments of type Handle.
-    tip: Try changing the argument type to primitive or struct.
+    problemMessage: FFI leaf call must not take arguments of type Handle.
+    correctionMessage: Try changing the argument type to primitive or struct.
     comment: No parameters.
   MISMATCHED_ANNOTATION_ON_STRUCT_FIELD:
-    template: The annotation does not match the declared type of the field.
-    tip: Try using a different annotation or changing the declared type to match.
+    problemMessage: The annotation does not match the declared type of the field.
+    correctionMessage: Try using a different annotation or changing the declared type to match.
     comment: No parameters.
   MISSING_ANNOTATION_ON_STRUCT_FIELD:
-    template: "Fields in a struct class must either have the type 'Pointer' or an annotation indicating the native type."
-    tip: Try adding an annotation.
+    problemMessage: "Fields in a struct class must either have the type 'Pointer' or an annotation indicating the native type."
+    correctionMessage: Try adding an annotation.
     comment: No parameters.
   MISSING_EXCEPTION_VALUE:
-    template: "The method 'Pointer.fromFunction' must have an exceptional return value (the second argument) when the return type of the function is neither 'void', 'Handle' or 'Pointer'."
-    tip: Try adding an exceptional return value.
+    problemMessage: "The method 'Pointer.fromFunction' must have an exceptional return value (the second argument) when the return type of the function is neither 'void', 'Handle' or 'Pointer'."
+    correctionMessage: Try adding an exceptional return value.
     comment: No parameters.
   MISSING_FIELD_TYPE_IN_STRUCT:
-    template: "Fields in struct classes must have an explicitly declared type of 'int', 'double' or 'Pointer'."
-    tip: "Try using 'int', 'double' or 'Pointer'."
+    problemMessage: "Fields in struct classes must have an explicitly declared type of 'int', 'double' or 'Pointer'."
+    correctionMessage: "Try using 'int', 'double' or 'Pointer'."
     comment: |-
       Parameters:
       0: the type of the field
   MISSING_SIZE_ANNOTATION_CARRAY:
-    template: "'Array's must have exactly one 'Array' annotation."
-    tip: "Try adding a 'Array' annotation."
+    problemMessage: "'Array's must have exactly one 'Array' annotation."
+    correctionMessage: "Try adding a 'Array' annotation."
     comment: No parameters.
   MUST_BE_A_NATIVE_FUNCTION_TYPE:
-    template: "The type '{0}' given to '{1}' must be a valid 'dart:ffi' native function type."
-    tip: "Try changing the type to only use members for 'dart:ffi'."
+    problemMessage: "The type '{0}' given to '{1}' must be a valid 'dart:ffi' native function type."
+    correctionMessage: "Try changing the type to only use members for 'dart:ffi'."
     comment: |-
       Parameters:
       0: the type that should be a valid dart:ffi native type.
       1: the name of the function whose invocation depends on this relationship
   MUST_BE_A_SUBTYPE:
-    template: "The type '{0}' must be a subtype of '{1}' for '{2}'."
-    tip: Try changing one or both of the type arguments.
+    problemMessage: "The type '{0}' must be a subtype of '{1}' for '{2}'."
+    correctionMessage: Try changing one or both of the type arguments.
     comment: |-
       Parameters:
       0: the type that should be a subtype
       1: the supertype that the subtype is compared to
       2: the name of the function whose invocation depends on this relationship
   NON_CONSTANT_TYPE_ARGUMENT:
-    template: "The type arguments to '{0}' must be compile time constants but type parameters are not constants."
-    tip: Try changing the type argument to be a constant type.
+    problemMessage: "The type arguments to '{0}' must be compile time constants but type parameters are not constants."
+    correctionMessage: Try changing the type argument to be a constant type.
     comment: |-
       Parameters:
       0: the name of the function, method, or constructor having type arguments
   NON_NATIVE_FUNCTION_TYPE_ARGUMENT_TO_POINTER:
-    template: "The type argument for the pointer '{0}' must be a 'NativeFunction' in order to use 'asFunction'."
-    tip: "Try changing the type argument to be a 'NativeFunction'."
+    problemMessage: "The type argument for the pointer '{0}' must be a 'NativeFunction' in order to use 'asFunction'."
+    correctionMessage: "Try changing the type argument to be a 'NativeFunction'."
     comment: |-
       Parameters:
       0: the type that should be a valid dart:ffi native type.
   NON_POSITIVE_ARRAY_DIMENSION:
-    template: Array dimensions must be positive numbers.
-    tip: Try changing the input to a positive number.
+    problemMessage: Array dimensions must be positive numbers.
+    correctionMessage: Try changing the input to a positive number.
     comment: No parameters.
   NON_SIZED_TYPE_ARGUMENT:
-    template: "Type arguments to '{0}' can't have the type '{1}'. They can only be declared as native integer, 'Float', 'Double', 'Pointer', or subtype of 'Struct' or 'Union'."
-    tip: "Try using a native integer, 'Float', 'Double', 'Pointer', or subtype of 'Struct' or 'Union'."
+    problemMessage: "Type arguments to '{0}' can't have the type '{1}'. They can only be declared as native integer, 'Float', 'Double', 'Pointer', or subtype of 'Struct' or 'Union'."
+    correctionMessage: "Try using a native integer, 'Float', 'Double', 'Pointer', or subtype of 'Struct' or 'Union'."
     comment: |-
       Parameters:
       0: the type of the field
   PACKED_ANNOTATION:
-    template: "Structs must have at most one 'Packed' annotation."
-    tip: "Try removing extra 'Packed' annotations."
+    problemMessage: "Structs must have at most one 'Packed' annotation."
+    correctionMessage: "Try removing extra 'Packed' annotations."
     comment: No parameters.
   PACKED_ANNOTATION_ALIGNMENT:
-    template: Only packing to 1, 2, 4, 8, and 16 bytes is supported.
-    tip: "Try changing the 'Packed' annotation alignment to 1, 2, 4, 8, or 16."
+    problemMessage: Only packing to 1, 2, 4, 8, and 16 bytes is supported.
+    correctionMessage: "Try changing the 'Packed' annotation alignment to 1, 2, 4, 8, or 16."
     comment: No parameters.
   PACKED_NESTING_NON_PACKED:
-    template: "Nesting the non-packed or less tightly packed struct '{0}' in a packed struct '{1}' is not supported."
-    tip: Try packing the nested struct or packing the nested struct more tightly.
+    problemMessage: "Nesting the non-packed or less tightly packed struct '{0}' in a packed struct '{1}' is not supported."
+    correctionMessage: Try packing the nested struct or packing the nested struct more tightly.
     comment: |-
       Parameters:
       0: the name of the outer struct
       1: the name of the struct being nested
   SIZE_ANNOTATION_DIMENSIONS:
-    template: "'Array's must have an 'Array' annotation that matches the dimensions."
-    tip: "Try adjusting the arguments in the 'Array' annotation."
+    problemMessage: "'Array's must have an 'Array' annotation that matches the dimensions."
+    correctionMessage: "Try adjusting the arguments in the 'Array' annotation."
     comment: No parameters.
   SUBTYPE_OF_FFI_CLASS_IN_EXTENDS:
     sharedName: SUBTYPE_OF_FFI_CLASS
-    template: "The class '{0}' can't extend '{1}'."
-    tip: "Try extending 'Struct' or 'Union'."
+    problemMessage: "The class '{0}' can't extend '{1}'."
+    correctionMessage: "Try extending 'Struct' or 'Union'."
     comment: |-
       Parameters:
       0: the name of the subclass
       1: the name of the class being extended, implemented, or mixed in
   SUBTYPE_OF_FFI_CLASS_IN_IMPLEMENTS:
     sharedName: SUBTYPE_OF_FFI_CLASS
-    template: "The class '{0}' can't implement '{1}'."
-    tip: "Try extending 'Struct' or 'Union'."
+    problemMessage: "The class '{0}' can't implement '{1}'."
+    correctionMessage: "Try extending 'Struct' or 'Union'."
     comment: |-
       Parameters:
       0: the name of the subclass
       1: the name of the class being extended, implemented, or mixed in
   SUBTYPE_OF_FFI_CLASS_IN_WITH:
     sharedName: SUBTYPE_OF_FFI_CLASS
-    template: "The class '{0}' can't mix in '{1}'."
-    tip: "Try extending 'Struct' or 'Union'."
+    problemMessage: "The class '{0}' can't mix in '{1}'."
+    correctionMessage: "Try extending 'Struct' or 'Union'."
     comment: |-
       Parameters:
       0: the name of the subclass
       1: the name of the class being extended, implemented, or mixed in
   SUBTYPE_OF_STRUCT_CLASS_IN_EXTENDS:
     sharedName: SUBTYPE_OF_STRUCT_CLASS
-    template: "The class '{0}' can't extend '{1}' because '{1}' is a subtype of 'Struct' or 'Union'."
-    tip: "Try extending 'Struct' or 'Union' directly."
+    problemMessage: "The class '{0}' can't extend '{1}' because '{1}' is a subtype of 'Struct' or 'Union'."
+    correctionMessage: "Try extending 'Struct' or 'Union' directly."
     comment: |-
       Parameters:
       0: the name of the subclass
       1: the name of the class being extended, implemented, or mixed in
   SUBTYPE_OF_STRUCT_CLASS_IN_IMPLEMENTS:
     sharedName: SUBTYPE_OF_STRUCT_CLASS
-    template: "The class '{0}' can't implement '{1}' because '{1}' is a subtype of 'Struct' or 'Union'."
-    tip: "Try extending 'Struct' or 'Union' directly."
+    problemMessage: "The class '{0}' can't implement '{1}' because '{1}' is a subtype of 'Struct' or 'Union'."
+    correctionMessage: "Try extending 'Struct' or 'Union' directly."
     comment: |-
       Parameters:
       0: the name of the subclass
       1: the name of the class being extended, implemented, or mixed in
   SUBTYPE_OF_STRUCT_CLASS_IN_WITH:
     sharedName: SUBTYPE_OF_STRUCT_CLASS
-    template: "The class '{0}' can't mix in '{1}' because '{1}' is a subtype of 'Struct' or 'Union'."
-    tip: "Try extending 'Struct' or 'Union' directly."
+    problemMessage: "The class '{0}' can't mix in '{1}' because '{1}' is a subtype of 'Struct' or 'Union'."
+    correctionMessage: "Try extending 'Struct' or 'Union' directly."
     comment: |-
       Parameters:
       0: the name of the subclass
       1: the name of the class being extended, implemented, or mixed in
 HintCode:
   ARGUMENT_TYPE_NOT_ASSIGNABLE_TO_ERROR_HANDLER:
-    template: "The argument type '{0}' can't be assigned to the parameter type '{1} Function(Object)' or '{1} Function(Object, StackTrace)'."
+    problemMessage: "The argument type '{0}' can't be assigned to the parameter type '{1} Function(Object)' or '{1} Function(Object, StackTrace)'."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -13944,18 +13980,18 @@
       }
       ```
   ASSIGNMENT_OF_DO_NOT_STORE:
-    template: "'{0}' is marked 'doNotStore' and shouldn't be assigned to a field or top-level variable."
-    tip: Try removing the assignment.
+    problemMessage: "'{0}' is marked 'doNotStore' and shouldn't be assigned to a field or top-level variable."
+    correctionMessage: Try removing the assignment.
     comment: Users should not assign values marked `@doNotStore`.
   CAN_BE_NULL_AFTER_NULL_AWARE:
-    template: "The receiver uses '?.', so its value can be null."
-    tip: "Replace the '.' with a '?.' in the invocation."
+    problemMessage: "The receiver uses '?.', so its value can be null."
+    correctionMessage: "Replace the '.' with a '?.' in the invocation."
     comment: |-
       When the target expression uses '?.' operator, it can be `null`, so all the
       subsequent invocations should also use '?.' operator.
   DEAD_CODE:
-    template: Dead code.
-    tip: Try removing the code, or fixing the code before it so that it can be reached.
+    problemMessage: Dead code.
+    correctionMessage: Try removing the code, or fixing the code before it so that it can be reached.
     hasPublishedDocs: true
     comment: |-
       Dead code is code that is never reached, this can happen for instance if a
@@ -14011,8 +14047,8 @@
       }
       ```
   DEAD_CODE_CATCH_FOLLOWING_CATCH:
-    template: "Dead code: Catch clauses after a 'catch (e)' or an 'on Object catch (e)' are never reached."
-    tip: Try reordering the catch clauses so that they can be reached, or removing the unreachable catch clauses.
+    problemMessage: "Dead code: Catch clauses after a 'catch (e)' or an 'on Object catch (e)' are never reached."
+    correctionMessage: Try reordering the catch clauses so that they can be reached, or removing the unreachable catch clauses.
     hasPublishedDocs: true
     comment: |-
       Dead code is code that is never reached. This case covers cases where the
@@ -14065,8 +14101,8 @@
       }
       ```
   DEAD_CODE_ON_CATCH_SUBTYPE:
-    template: "Dead code: This on-catch block won’t be executed because '{0}' is a subtype of '{1}' and hence will have been caught already."
-    tip: Try reordering the catch clauses so that this block can be reached, or removing the unreachable catch clause.
+    problemMessage: "Dead code: This on-catch block won’t be executed because '{0}' is a subtype of '{1}' and hence will have been caught already."
+    correctionMessage: Try reordering the catch clauses so that this block can be reached, or removing the unreachable catch clause.
     hasPublishedDocs: true
     comment: |-
       Dead code is code that is never reached. This case covers cases where the
@@ -14123,12 +14159,12 @@
       }
       ```
   DEPRECATED_FUNCTION_CLASS_DECLARATION:
-    template: "Declaring a class named 'Function' is deprecated."
-    tip: Try renaming the class.
+    problemMessage: "Declaring a class named 'Function' is deprecated."
+    correctionMessage: Try renaming the class.
     comment: Users should not create a class named `Function` anymore.
   DEPRECATED_MEMBER_USE:
-    template: "'{0}' is deprecated and shouldn't be used."
-    tip: Try replacing the use of the deprecated member with the replacement.
+    problemMessage: "'{0}' is deprecated and shouldn't be used."
+    correctionMessage: Try replacing the use of the deprecated member with the replacement.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -14156,16 +14192,16 @@
       should indicate what code to use in place of the deprecated code.
   DEPRECATED_MEMBER_USE_WITH_MESSAGE:
     sharedName: DEPRECATED_MEMBER_USE
-    template: "'{0}' is deprecated and shouldn't be used. {1}."
-    tip: Try replacing the use of the deprecated member with the replacement.
+    problemMessage: "'{0}' is deprecated and shouldn't be used. {1}."
+    correctionMessage: Try replacing the use of the deprecated member with the replacement.
     hasPublishedDocs: true
     comment: |-
       Parameters:
       0: the name of the member
       1: message details
   DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE:
-    template: "'{0}' is deprecated and shouldn't be used."
-    tip: Try replacing the use of the deprecated member with the replacement.
+    problemMessage: "'{0}' is deprecated and shouldn't be used."
+    correctionMessage: Try replacing the use of the deprecated member with the replacement.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -14193,8 +14229,8 @@
       in place of the deprecated code.
   DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE_WITH_MESSAGE:
     sharedName: DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE
-    template: "'{0}' is deprecated and shouldn't be used. {1}."
-    tip: Try replacing the use of the deprecated member with the replacement.
+    problemMessage: "'{0}' is deprecated and shouldn't be used. {1}."
+    correctionMessage: Try replacing the use of the deprecated member with the replacement.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -14202,20 +14238,20 @@
       1: message details
   DEPRECATED_MIXIN_FUNCTION:
     sharedName: DEPRECATED_SUBTYPE_OF_FUNCTION
-    template: "Mixing in 'Function' is deprecated."
-    tip: "Try removing 'Function' from the 'with' clause."
+    problemMessage: "Mixing in 'Function' is deprecated."
+    correctionMessage: "Try removing 'Function' from the 'with' clause."
     hasPublishedDocs: true
     comment: No parameters.
   DEPRECATED_IMPLEMENTS_FUNCTION:
     sharedName: DEPRECATED_SUBTYPE_OF_FUNCTION
-    template: "Implementing 'Function' has no effect."
-    tip: "Try removing 'Function' from the 'implements' clause."
+    problemMessage: "Implementing 'Function' has no effect."
+    correctionMessage: "Try removing 'Function' from the 'implements' clause."
     hasPublishedDocs: true
     comment: No parameters.
   DEPRECATED_EXTENDS_FUNCTION:
     sharedName: DEPRECATED_SUBTYPE_OF_FUNCTION
-    template: "Extending 'Function' is deprecated."
-    tip: "Try removing 'Function' from the 'extends' clause."
+    problemMessage: "Extending 'Function' is deprecated."
+    correctionMessage: "Try removing 'Function' from the 'extends' clause."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -14244,12 +14280,12 @@
       class F {}
       ```
   DIVISION_OPTIMIZATION:
-    template: The operator x ~/ y is more efficient than (x / y).toInt().
-    tip: "Try re-writing the expression to use the '~/' operator."
+    problemMessage: The operator x ~/ y is more efficient than (x / y).toInt().
+    correctionMessage: "Try re-writing the expression to use the '~/' operator."
     comment: Hint to use the ~/ operator.
   DUPLICATE_HIDDEN_NAME:
-    template: Duplicate hidden name.
-    tip: Try removing the repeated name from the list of hidden members.
+    problemMessage: Duplicate hidden name.
+    correctionMessage: Try removing the repeated name from the list of hidden members.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -14289,8 +14325,8 @@
       var x = pi;
       ```
   DUPLICATE_IGNORE:
-    template: "The diagnostic '{0}' doesn't need to be ignored here because it's already being ignored."
-    tip: Try removing the name from the list, or removing the whole comment if this is the only name in the list.
+    problemMessage: "The diagnostic '{0}' doesn't need to be ignored here because it's already being ignored."
+    correctionMessage: Try removing the name from the list, or removing the whole comment if this is the only name in the list.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -14339,8 +14375,8 @@
       }
       ```
   DUPLICATE_IMPORT:
-    template: Duplicate import.
-    tip: Try removing all but one import of the library.
+    problemMessage: Duplicate import.
+    correctionMessage: Try removing all but one import of the library.
     hasPublishedDocs: true
     comment: |-
       Duplicate imports.
@@ -14374,8 +14410,8 @@
       @sealed class C {}
       ```
   DUPLICATE_SHOWN_NAME:
-    template: Duplicate shown name.
-    tip: Try removing the repeated name from the list of shown members.
+    problemMessage: Duplicate shown name.
+    correctionMessage: Try removing the repeated name from the list of shown members.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -14415,8 +14451,8 @@
       var x = min(2, min(0, 1));
       ```
   EQUAL_ELEMENTS_IN_SET:
-    template: "Two elements in a set literal shouldn't be equal."
-    tip: Change or remove the duplicate element.
+    problemMessage: "Two elements in a set literal shouldn't be equal."
+    correctionMessage: Change or remove the duplicate element.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -14461,8 +14497,8 @@
       of which element to remove might affect the order in which elements are
       returned by an iterator.
   EQUAL_KEYS_IN_MAP:
-    template: "Two keys in a map literal shouldn't be equal."
-    tip: Change or remove the duplicate key.
+    problemMessage: "Two keys in a map literal shouldn't be equal."
+    correctionMessage: Change or remove the duplicate key.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -14506,8 +14542,8 @@
       of which entry to remove might affect the order in which the keys and
       values are returned by an iterator.
   FILE_IMPORT_INSIDE_LIB_REFERENCES_FILE_OUTSIDE:
-    template: "A file in the 'lib' directory shouldn't import a file outside the 'lib' directory."
-    tip: "Try removing the import, or moving the imported file inside the 'lib' directory."
+    problemMessage: "A file in the 'lib' directory shouldn't import a file outside the 'lib' directory."
+    correctionMessage: "Try removing the import, or moving the imported file inside the 'lib' directory."
     comment: |-
       It is a bad practice for a source file in a package "lib" directory
       hierarchy to traverse outside that directory hierarchy. For example, a
@@ -14515,8 +14551,8 @@
       `import '../web/some.dart'` which references a file outside the lib
       directory.
   FILE_IMPORT_OUTSIDE_LIB_REFERENCES_FILE_INSIDE:
-    template: "A file outside the 'lib' directory shouldn't reference a file inside the 'lib' directory using a relative path."
-    tip: "Try using a package: URI instead."
+    problemMessage: "A file outside the 'lib' directory shouldn't reference a file inside the 'lib' directory using a relative path."
+    correctionMessage: "Try using a package: URI instead."
     comment: |-
       It is a bad practice for a source file ouside a package "lib" directory
       hierarchy to traverse into that directory hierarchy. For example, a source
@@ -14524,8 +14560,8 @@
       `import '../lib/some.dart'` which references a file inside the lib
       directory.
   IMPORT_DEFERRED_LIBRARY_WITH_LOAD_FUNCTION:
-    template: "The imported library defines a top-level function named 'loadLibrary' that is hidden by deferring this library."
-    tip: Try changing the import to not be deferred, or rename the function in the imported library.
+    problemMessage: "The imported library defines a top-level function named 'loadLibrary' that is hidden by deferring this library."
+    correctionMessage: Try changing the import to not be deferred, or rename the function in the imported library.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -14600,24 +14636,24 @@
       If type arguments shouldn't be required for the class, then mark the class
       with the `@optionalTypeArgs` annotation (from `package:meta`):
   IMPORT_OF_LEGACY_LIBRARY_INTO_NULL_SAFE:
-    template: "The library '{0}' is legacy, and should not be imported into a null safe library."
-    tip: Try migrating the imported library.
+    problemMessage: "The library '{0}' is legacy, and should not be imported into a null safe library."
+    correctionMessage: Try migrating the imported library.
     comment: "https://github.com/dart-lang/sdk/issues/44063"
   INFERENCE_FAILURE_ON_COLLECTION_LITERAL:
-    template: "The type argument(s) of '{0}' can't be inferred."
-    tip: "Use explicit type argument(s) for '{0}'."
+    problemMessage: "The type argument(s) of '{0}' can't be inferred."
+    correctionMessage: "Use explicit type argument(s) for '{0}'."
     comment: |-
       When "strict-inference" is enabled, collection literal types must be
       inferred via the context type, or have type arguments.
   INFERENCE_FAILURE_ON_FUNCTION_INVOCATION:
-    template: "The type argument(s) of the function '{0}' can't be inferred."
-    tip: "Use explicit type argument(s) for '{0}'."
+    problemMessage: "The type argument(s) of the function '{0}' can't be inferred."
+    correctionMessage: "Use explicit type argument(s) for '{0}'."
     comment: |-
       When "strict-inference" is enabled, types in function invocations must be
       inferred via the context type, or have type arguments.
   INFERENCE_FAILURE_ON_FUNCTION_RETURN_TYPE:
-    template: "The return type of '{0}' cannot be inferred."
-    tip: "Declare the return type of '{0}'."
+    problemMessage: "The return type of '{0}' cannot be inferred."
+    correctionMessage: "Declare the return type of '{0}'."
     comment: |-
       When "strict-inference" is enabled, recursive local functions, top-level
       functions, methods, and function-typed function parameters must all
@@ -14625,39 +14661,39 @@
 
       https://github.com/dart-lang/language/blob/master/resources/type-system/strict-inference.md
   INFERENCE_FAILURE_ON_GENERIC_INVOCATION:
-    template: "The type argument(s) of the generic function type '{0}' can't be inferred."
-    tip: "Use explicit type argument(s) for '{0}'."
+    problemMessage: "The type argument(s) of the generic function type '{0}' can't be inferred."
+    correctionMessage: "Use explicit type argument(s) for '{0}'."
     comment: |-
       When "strict-inference" is enabled, types in function invocations must be
       inferred via the context type, or have type arguments.
   INFERENCE_FAILURE_ON_INSTANCE_CREATION:
-    template: "The type argument(s) of the constructor '{0}' can't be inferred."
-    tip: "Use explicit type argument(s) for '{0}'."
+    problemMessage: "The type argument(s) of the constructor '{0}' can't be inferred."
+    correctionMessage: "Use explicit type argument(s) for '{0}'."
     comment: |-
       When "strict-inference" is enabled, types in instance creation
       (constructor calls) must be inferred via the context type, or have type
       arguments.
   INFERENCE_FAILURE_ON_UNINITIALIZED_VARIABLE:
-    template: "The type of {0} can't be inferred without either a type or initializer."
-    tip: Try specifying the type of the variable.
+    problemMessage: "The type of {0} can't be inferred without either a type or initializer."
+    correctionMessage: Try specifying the type of the variable.
     comment: |-
       When "strict-inference" in enabled, uninitialized variables must be
       declared with a specific type.
   INFERENCE_FAILURE_ON_UNTYPED_PARAMETER:
-    template: "The type of {0} can't be inferred; a type must be explicitly provided."
-    tip: Try specifying the type of the parameter.
+    problemMessage: "The type of {0} can't be inferred; a type must be explicitly provided."
+    correctionMessage: Try specifying the type of the parameter.
     comment: |-
       When "strict-inference" in enabled, function parameters must be
       declared with a specific type, or inherit a type.
   INVALID_ANNOTATION_TARGET:
-    template: "The annotation '{0}' can only be used on {1}"
+    problemMessage: "The annotation '{0}' can only be used on {1}"
     comment: |-
       Parameters:
       0: the name of the annotation
       1: the list of valid targets
   INVALID_EXPORT_OF_INTERNAL_ELEMENT:
-    template: "The member '{0}' can't be exported as a part of a package's public API."
-    tip: "Try using a hide clause to hide '{0}'."
+    problemMessage: "The member '{0}' can't be exported as a part of a package's public API."
+    correctionMessage: "Try using a hide clause to hide '{0}'."
     comment: |-
       This hint is generated anywhere where an element annotated with `@internal`
       is exported as a part of a package's public API.
@@ -14665,8 +14701,8 @@
       Parameters:
       0: the name of the element
   INVALID_EXPORT_OF_INTERNAL_ELEMENT_INDIRECTLY:
-    template: "The member '{0}' can't be exported as a part of a package's public API, but is indirectly exported as part of the signature of '{1}'."
-    tip: "Try using a hide clause to hide '{0}'."
+    problemMessage: "The member '{0}' can't be exported as a part of a package's public API, but is indirectly exported as part of the signature of '{1}'."
+    correctionMessage: "Try using a hide clause to hide '{0}'."
     comment: |-
       This hint is generated anywhere where an element annotated with `@internal`
       is exported indirectly as a part of a package's public API.
@@ -14674,17 +14710,17 @@
       Parameters:
       0: the name of the element
   INVALID_FACTORY_ANNOTATION:
-    template: Only methods can be annotated as factories.
+    problemMessage: Only methods can be annotated as factories.
     comment: |-
       This hint is generated anywhere a @factory annotation is associated with
       anything other than a method.
   INVALID_FACTORY_METHOD_DECL:
-    template: "Factory method '{0}' must have a return type."
+    problemMessage: "Factory method '{0}' must have a return type."
     comment: |-
       This hint is generated anywhere a @factory annotation is associated with
       a method that does not declare a return type.
   INVALID_FACTORY_METHOD_IMPL:
-    template: "Factory method '{0}' doesn't return a newly allocated object."
+    problemMessage: "Factory method '{0}' doesn't return a newly allocated object."
     comment: |-
       This hint is generated anywhere a @factory annotation is associated with
       a non-abstract method that can return anything other than a newly allocated
@@ -14693,23 +14729,23 @@
       Parameters:
       0: the name of the method
   INVALID_IMMUTABLE_ANNOTATION:
-    template: Only classes can be annotated as being immutable.
+    problemMessage: Only classes can be annotated as being immutable.
     comment: |-
       This hint is generated anywhere an @immutable annotation is associated with
       anything other than a class.
   INVALID_INTERNAL_ANNOTATION:
-    template: "Only public elements in a package's private API can be annotated as being internal."
+    problemMessage: "Only public elements in a package's private API can be annotated as being internal."
     comment: |-
       This hint is generated anywhere a @internal annotation is associated with
       an element found in a package's public API.
   INVALID_LANGUAGE_VERSION_OVERRIDE_GREATER:
     sharedName: INVALID_LANGUAGE_VERSION_OVERRIDE
-    template: "The language version override can't specify a version greater than the latest known language version: {0}.{1}"
-    tip: Try removing the language version override.
+    problemMessage: "The language version override can't specify a version greater than the latest known language version: {0}.{1}"
+    correctionMessage: Try removing the language version override.
   INVALID_LANGUAGE_VERSION_OVERRIDE_AT_SIGN:
     sharedName: INVALID_LANGUAGE_VERSION_OVERRIDE
-    template: "The Dart language version override number must begin with '@dart'"
-    tip: "Specify a Dart language version override with a comment like '// @dart = 2.0'."
+    problemMessage: "The Dart language version override number must begin with '@dart'"
+    correctionMessage: "Specify a Dart language version override with a comment like '// @dart = 2.0'."
     comment: |-
       Invalid Dart language version comments don't follow the specification [1].
       If a comment begins with "@dart" or "dart" (letters in any case),
@@ -14723,12 +14759,12 @@
       [1] https://github.com/dart-lang/language/blob/master/accepted/future-releases/language-versioning/feature-specification.md#individual-library-language-version-override
   INVALID_LANGUAGE_VERSION_OVERRIDE_LOCATION:
     sharedName: INVALID_LANGUAGE_VERSION_OVERRIDE
-    template: The language version override must be before any declaration or directive.
-    tip: Try moving the language version override to the top of the file.
+    problemMessage: The language version override must be before any declaration or directive.
+    correctionMessage: Try moving the language version override to the top of the file.
   INVALID_LANGUAGE_VERSION_OVERRIDE_LOWER_CASE:
     sharedName: INVALID_LANGUAGE_VERSION_OVERRIDE
-    template: "The Dart language version override comment must be specified with the word 'dart' in all lower case"
-    tip: "Specify a Dart language version override with a comment like '// @dart = 2.0'."
+    problemMessage: "The Dart language version override comment must be specified with the word 'dart' in all lower case"
+    correctionMessage: "Specify a Dart language version override with a comment like '// @dart = 2.0'."
     comment: |-
       Invalid Dart language version comments don't follow the specification [1].
       If a comment begins with "@dart" or "dart" (letters in any case),
@@ -14742,8 +14778,8 @@
       [1] https://github.com/dart-lang/language/blob/master/accepted/future-releases/language-versioning/feature-specification.md#individual-library-language-version-override
   INVALID_LANGUAGE_VERSION_OVERRIDE_NUMBER:
     sharedName: INVALID_LANGUAGE_VERSION_OVERRIDE
-    template: "The Dart language version override comment must be specified with a version number, like '2.0', after the '=' character."
-    tip: "Specify a Dart language version override with a comment like '// @dart = 2.0'."
+    problemMessage: "The Dart language version override comment must be specified with a version number, like '2.0', after the '=' character."
+    correctionMessage: "Specify a Dart language version override with a comment like '// @dart = 2.0'."
     comment: |-
       Invalid Dart language version comments don't follow the specification [1].
       If a comment begins with "@dart" or "dart" (letters in any case),
@@ -14757,8 +14793,8 @@
       [1] https://github.com/dart-lang/language/blob/master/accepted/future-releases/language-versioning/feature-specification.md#individual-library-language-version-override
   INVALID_LANGUAGE_VERSION_OVERRIDE_PREFIX:
     sharedName: INVALID_LANGUAGE_VERSION_OVERRIDE
-    template: "The Dart language version override number can't be prefixed with a letter"
-    tip: "Specify a Dart language version override with a comment like '// @dart = 2.0'."
+    problemMessage: "The Dart language version override number can't be prefixed with a letter"
+    correctionMessage: "Specify a Dart language version override with a comment like '// @dart = 2.0'."
     comment: |-
       Invalid Dart language version comments don't follow the specification [1].
       If a comment begins with "@dart" or "dart" (letters in any case),
@@ -14772,8 +14808,8 @@
       [1] https://github.com/dart-lang/language/blob/master/accepted/future-releases/language-versioning/feature-specification.md#individual-library-language-version-override
   INVALID_LANGUAGE_VERSION_OVERRIDE_TRAILING_CHARACTERS:
     sharedName: INVALID_LANGUAGE_VERSION_OVERRIDE
-    template: "The Dart language version override comment can't be followed by any non-whitespace characters"
-    tip: "Specify a Dart language version override with a comment like '// @dart = 2.0'."
+    problemMessage: "The Dart language version override comment can't be followed by any non-whitespace characters"
+    correctionMessage: "Specify a Dart language version override with a comment like '// @dart = 2.0'."
     comment: |-
       Invalid Dart language version comments don't follow the specification [1].
       If a comment begins with "@dart" or "dart" (letters in any case),
@@ -14787,8 +14823,8 @@
       [1] https://github.com/dart-lang/language/blob/master/accepted/future-releases/language-versioning/feature-specification.md#individual-library-language-version-override
   INVALID_LANGUAGE_VERSION_OVERRIDE_TWO_SLASHES:
     sharedName: INVALID_LANGUAGE_VERSION_OVERRIDE
-    template: The Dart language version override comment must be specified with exactly two slashes.
-    tip: "Specify a Dart language version override with a comment like '// @dart = 2.0'."
+    problemMessage: The Dart language version override comment must be specified with exactly two slashes.
+    correctionMessage: "Specify a Dart language version override with a comment like '// @dart = 2.0'."
     comment: |-
       Invalid Dart language version comments don't follow the specification [1].
       If a comment begins with "@dart" or "dart" (letters in any case),
@@ -14802,8 +14838,8 @@
       [1] https://github.com/dart-lang/language/blob/master/accepted/future-releases/language-versioning/feature-specification.md#individual-library-language-version-override
   INVALID_LANGUAGE_VERSION_OVERRIDE_EQUALS:
     sharedName: INVALID_LANGUAGE_VERSION_OVERRIDE
-    template: "The Dart language version override comment must be specified with an '=' character"
-    tip: "Specify a Dart language version override with a comment like '// @dart = 2.0'."
+    problemMessage: "The Dart language version override comment must be specified with an '=' character"
+    correctionMessage: "Specify a Dart language version override with a comment like '// @dart = 2.0'."
     comment: |-
       Invalid Dart language version comments don't follow the specification [1].
       If a comment begins with "@dart" or "dart" (letters in any case),
@@ -14816,7 +14852,7 @@
 
       [1] https://github.com/dart-lang/language/blob/master/accepted/future-releases/language-versioning/feature-specification.md#individual-library-language-version-override
   INVALID_LITERAL_ANNOTATION:
-    template: Only const constructors can have the `@literal` annotation.
+    problemMessage: Only const constructors can have the `@literal` annotation.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -14873,8 +14909,8 @@
       var x;
       ```
   INVALID_NON_VIRTUAL_ANNOTATION:
-    template: "The member '{0}' can't be '@nonVirtual' because it isn't a concrete instance member."
-    tip: Try removing @nonVirtual.
+    problemMessage: "The member '{0}' can't be '@nonVirtual' because it isn't a concrete instance member."
+    correctionMessage: Try removing @nonVirtual.
     comment: |-
       This hint is generated anywhere where `@nonVirtual` annotates something
       other than a non-abstract instance member in a class or mixin.
@@ -14882,7 +14918,7 @@
       Parameters:
       0: the name of the member
   INVALID_OVERRIDE_OF_NON_VIRTUAL_MEMBER:
-    template: "The member '{0}' is declared non-virtual in '{1}' and can't be overridden in subclasses."
+    problemMessage: "The member '{0}' is declared non-virtual in '{1}' and can't be overridden in subclasses."
     comment: |-
       This hint is generated anywhere where an instance member annotated with
       `@nonVirtual` is overridden in a subclass.
@@ -14891,8 +14927,8 @@
       0: the name of the member
       1: the name of the defining class
   INVALID_REQUIRED_NAMED_PARAM:
-    template: "The type parameter '{0}' is annotated with @required but only named parameters without a default value can be annotated with it."
-    tip: Remove @required.
+    problemMessage: "The type parameter '{0}' is annotated with @required but only named parameters without a default value can be annotated with it."
+    correctionMessage: Remove @required.
     comment: |-
       This hint is generated anywhere where `@required` annotates a named
       parameter with a default value.
@@ -14900,8 +14936,8 @@
       Parameters:
       0: the name of the member
   INVALID_REQUIRED_OPTIONAL_POSITIONAL_PARAM:
-    template: "Incorrect use of the annotation @required on the optional positional parameter '{0}'. Optional positional parameters cannot be required."
-    tip: Remove @required.
+    problemMessage: "Incorrect use of the annotation @required on the optional positional parameter '{0}'. Optional positional parameters cannot be required."
+    correctionMessage: Remove @required.
     comment: |-
       This hint is generated anywhere where `@required` annotates an optional
       positional parameter.
@@ -14909,8 +14945,8 @@
       Parameters:
       0: the name of the member
   INVALID_REQUIRED_POSITIONAL_PARAM:
-    template: "Redundant use of the annotation @required on the required positional parameter '{0}'."
-    tip: Remove @required.
+    problemMessage: "Redundant use of the annotation @required on the required positional parameter '{0}'."
+    correctionMessage: Remove @required.
     comment: |-
       This hint is generated anywhere where `@required` annotates a non optional
       positional parameter.
@@ -14919,7 +14955,7 @@
       0: the name of the member
   RETURN_TYPE_INVALID_FOR_CATCH_ERROR:
     sharedName: INVALID_RETURN_TYPE_FOR_CATCH_ERROR
-    template: "The return type '{0}' isn't assignable to '{1}', as required by 'Future.catchError'."
+    problemMessage: "The return type '{0}' isn't assignable to '{1}', as required by 'Future.catchError'."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -14927,7 +14963,7 @@
       1: the expected return type as defined by the type of the Future
   RETURN_OF_INVALID_TYPE_FROM_CATCH_ERROR:
     sharedName: INVALID_RETURN_TYPE_FOR_CATCH_ERROR
-    template: "A value of type '{0}' can't be returned by the 'onError' handler because it must be assignable to '{1}'."
+    problemMessage: "A value of type '{0}' can't be returned by the 'onError' handler because it must be assignable to '{1}'."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -14984,8 +15020,8 @@
       }
       ```
   INVALID_SEALED_ANNOTATION:
-    template: "The member '{0}' is annotated with '@sealed' but only classes can be annotated with it."
-    tip: Remove @sealed.
+    problemMessage: "The member '{0}' is annotated with '@sealed' but only classes can be annotated with it."
+    correctionMessage: Remove @sealed.
     comment: |-
       This hint is generated anywhere where `@sealed` annotates something other
       than a class.
@@ -14993,7 +15029,7 @@
       Parameters:
       0: the name of the member
   INVALID_USE_OF_INTERNAL_MEMBER:
-    template: "The member '{0}' can only be used within its package."
+    problemMessage: "The member '{0}' can only be used within its package."
     comment: |-
       This hint is generated anywhere where a member annotated with `@internal`
       is used outside of the package in which it is declared.
@@ -15001,7 +15037,7 @@
       Parameters:
       0: the name of the member
   INVALID_USE_OF_PROTECTED_MEMBER:
-    template: "The member '{0}' can only be used within instance members of subclasses of '{1}'."
+    problemMessage: "The member '{0}' can only be used within instance members of subclasses of '{1}'."
     comment: |-
       This hint is generated anywhere where a member annotated with `@protected`
       is used outside of an instance member of a subclass.
@@ -15010,7 +15046,7 @@
       0: the name of the member
       1: the name of the defining class
   INVALID_USE_OF_VISIBLE_FOR_OVERRIDING_MEMBER:
-    template: "The member '{0}' can only be used for overriding."
+    problemMessage: "The member '{0}' can only be used for overriding."
     comment: |-
       Parameters:
       0: the name of the member
@@ -15053,7 +15089,7 @@
 
       Remove the invalid use of the member.
   INVALID_USE_OF_VISIBLE_FOR_TEMPLATE_MEMBER:
-    template: "The member '{0}' can only be used within '{1}' or a template library."
+    problemMessage: "The member '{0}' can only be used within '{1}' or a template library."
     comment: |-
       This hint is generated anywhere where a member annotated with
       `@visibleForTemplate` is used outside of a "template" Dart file.
@@ -15062,7 +15098,7 @@
       0: the name of the member
       1: the name of the defining class
   INVALID_USE_OF_VISIBLE_FOR_TESTING_MEMBER:
-    template: "The member '{0}' can only be used within '{1}' or a test."
+    problemMessage: "The member '{0}' can only be used within '{1}' or a test."
     comment: |-
       This hint is generated anywhere where a member annotated with
       `@visibleForTesting` is used outside the defining library, or a test.
@@ -15071,7 +15107,7 @@
       0: the name of the member
       1: the name of the defining class
   INVALID_VISIBILITY_ANNOTATION:
-    template: "The member '{0}' is annotated with '{1}', but this annotation is only meaningful on declarations of public members."
+    problemMessage: "The member '{0}' is annotated with '{1}', but this annotation is only meaningful on declarations of public members."
     hasPublishedDocs: true
     comment: |-
       This hint is generated anywhere where a private declaration is annotated
@@ -15121,7 +15157,7 @@
       void f() => someFunction();
       ```
   INVALID_VISIBLE_FOR_OVERRIDING_ANNOTATION:
-    template: "The declaration '{0}' is annotated with 'visibleForOverriding'. Because '{0}' isn't an interface member that could be overridden, the annotation is meaningless."
+    problemMessage: "The declaration '{0}' is annotated with 'visibleForOverriding'. Because '{0}' isn't an interface member that could be overridden, the annotation is meaningless."
     comment: No parameters.
     documentation: |-
       #### Description
@@ -15151,13 +15187,13 @@
       class C {}
       ```
   MISSING_JS_LIB_ANNOTATION:
-    template: The @JS() annotation can only be used if it is also declared on the library directive.
-    tip: Try adding the annotation to the library directive.
+    problemMessage: The @JS() annotation can only be used if it is also declared on the library directive.
+    correctionMessage: Try adding the annotation to the library directive.
     comment: |-
       Generate a hint for an element that is annotated with `@JS(...)` whose
       library declaration is not similarly annotated.
   MISSING_REQUIRED_PARAM:
-    template: "The parameter '{0}' is required."
+    problemMessage: "The parameter '{0}' is required."
     hasPublishedDocs: true
     comment: |-
       Generate a hint for a constructor, function or method invocation where a
@@ -15204,7 +15240,7 @@
       ```
   MISSING_REQUIRED_PARAM_WITH_DETAILS:
     sharedName: MISSING_REQUIRED_PARAM
-    template: "The parameter '{0}' is required. {1}."
+    problemMessage: "The parameter '{0}' is required. {1}."
     hasPublishedDocs: true
     comment: |-
       Generate a hint for a constructor, function or method invocation where a
@@ -15214,8 +15250,8 @@
       0: the name of the parameter
       1: message details
   MISSING_RETURN:
-    template: "This function has a return type of '{0}', but doesn't end with a return statement."
-    tip: "Try adding a return statement, or changing the return type to 'void'."
+    problemMessage: "This function has a return type of '{0}', but doesn't end with a return statement."
+    correctionMessage: "Try adding a return statement, or changing the return type to 'void'."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -15246,8 +15282,8 @@
       Add a `return` statement that makes the return value explicit, even if
       `null` is the appropriate value.
   MIXIN_ON_SEALED_CLASS:
-    template: "The class '{0}' shouldn't be used as a mixin constraint because it is sealed, and any class mixing in this mixin must have '{0}' as a superclass."
-    tip: Try composing with this class, or refer to its documentation for more information.
+    problemMessage: "The class '{0}' shouldn't be used as a mixin constraint because it is sealed, and any class mixing in this mixin must have '{0}' as a superclass."
+    correctionMessage: Try composing with this class, or refer to its documentation for more information.
     hasPublishedDocs: true
     comment: |-
       This hint is generated anywhere where a `@sealed` class is used as a
@@ -15290,7 +15326,7 @@
       class, then consider adding a field and delegating to the wrapped instance
       of the sealed class.
   MUST_BE_IMMUTABLE:
-    template: "This class (or a class that this class inherits from) is marked as '@immutable', but one or more of its instance fields aren't final: {0}"
+    problemMessage: "This class (or a class that this class inherits from) is marked as '@immutable', but one or more of its instance fields aren't final: {0}"
     hasPublishedDocs: true
     comment: |-
       Generate a hint for classes that inherit from classes annotated with
@@ -15347,7 +15383,7 @@
       }
       ```
   MUST_CALL_SUPER:
-    template: "This method overrides a method annotated as '@mustCallSuper' in '{0}', but doesn't invoke the overridden method."
+    problemMessage: "This method overrides a method annotated as '@mustCallSuper' in '{0}', but doesn't invoke the overridden method."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -15399,8 +15435,8 @@
       ```
   NON_CONST_CALL_TO_LITERAL_CONSTRUCTOR_USING_NEW:
     sharedName: NON_CONST_CALL_TO_LITERAL_CONSTRUCTOR
-    template: "This instance creation must be 'const', because the {0} constructor is marked as '@literal'."
-    tip: "Try replacing the 'new' keyword with 'const'."
+    problemMessage: "This instance creation must be 'const', because the {0} constructor is marked as '@literal'."
+    correctionMessage: "Try replacing the 'new' keyword with 'const'."
     hasPublishedDocs: true
     comment: |-
       Generate a hint for non-const instance creation (with the `new` keyword)
@@ -15409,8 +15445,8 @@
       Parameters:
       0: the name of the class defining the annotated constructor
   NON_CONST_CALL_TO_LITERAL_CONSTRUCTOR:
-    template: "This instance creation must be 'const', because the {0} constructor is marked as '@literal'."
-    tip: "Try adding a 'const' keyword."
+    problemMessage: "This instance creation must be 'const', because the {0} constructor is marked as '@literal'."
+    correctionMessage: "Try adding a 'const' keyword."
     hasPublishedDocs: true
     comment: |-
       Generate a hint for non-const instance creation using a constructor
@@ -15457,8 +15493,8 @@
       void f() => const C();
       ```
   NULLABLE_TYPE_IN_CATCH_CLAUSE:
-    template: "A potentially nullable type can't be used in an 'on' clause because it isn't valid to throw a nullable expression."
-    tip: Try using a non-nullable type.
+    problemMessage: "A potentially nullable type can't be used in an 'on' clause because it isn't valid to throw a nullable expression."
+    correctionMessage: Try using a non-nullable type.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -15496,8 +15532,8 @@
       }
       ```
   NULL_ARGUMENT_TO_NON_NULL_TYPE:
-    template: "'{0}' shouldn't be called with a null argument for the non-nullable type argument '{1}'."
-    tip: Try adding a non-null argument.
+    problemMessage: "'{0}' shouldn't be called with a null argument for the non-nullable type argument '{1}'."
+    correctionMessage: Try adding a non-null argument.
     comment: |-
       Parameters:
       0: the name of the method being invoked
@@ -15533,30 +15569,30 @@
       }
       ```
   NULL_AWARE_BEFORE_OPERATOR:
-    template: "The left operand uses '?.', so its value can be null."
+    problemMessage: "The left operand uses '?.', so its value can be null."
     comment: |-
       When the left operand of a binary expression uses '?.' operator, it can be
       `null`.
   NULL_AWARE_IN_CONDITION:
-    template: "The value of the '?.' operator can be 'null', which isn't appropriate in a condition."
-    tip: "Try replacing the '?.' with a '.', testing the left-hand side for null if necessary."
+    problemMessage: "The value of the '?.' operator can be 'null', which isn't appropriate in a condition."
+    correctionMessage: "Try replacing the '?.' with a '.', testing the left-hand side for null if necessary."
     comment: |-
       A condition in a control flow statement could evaluate to `null` because it
       uses the null-aware '?.' operator.
   NULL_AWARE_IN_LOGICAL_OPERATOR:
-    template: "The value of the '?.' operator can be 'null', which isn't appropriate as an operand of a logical operator."
+    problemMessage: "The value of the '?.' operator can be 'null', which isn't appropriate as an operand of a logical operator."
     comment: |-
       A condition in operands of a logical operator could evaluate to `null`
       because it uses the null-aware '?.' operator.
   NULL_CHECK_ALWAYS_FAILS:
-    template: "This null-check will always throw an exception because the expression will always evaluate to 'null'."
+    problemMessage: "This null-check will always throw an exception because the expression will always evaluate to 'null'."
     comment: |-
       This hint indicates that a null literal is null-checked with `!`, but null
       is never not null.
   OVERRIDE_ON_NON_OVERRIDING_FIELD:
     sharedName: OVERRIDE_ON_NON_OVERRIDING_MEMBER
-    template: "The field doesn't override an inherited getter or setter."
-    tip: Try updating this class to match the superclass, or removing the override annotation.
+    problemMessage: "The field doesn't override an inherited getter or setter."
+    correctionMessage: Try updating this class to match the superclass, or removing the override annotation.
     hasPublishedDocs: true
     comment: |-
       A field with the override annotation does not override a getter or setter.
@@ -15564,8 +15600,8 @@
       No parameters.
   OVERRIDE_ON_NON_OVERRIDING_GETTER:
     sharedName: OVERRIDE_ON_NON_OVERRIDING_MEMBER
-    template: "The getter doesn't override an inherited getter."
-    tip: Try updating this class to match the superclass, or removing the override annotation.
+    problemMessage: "The getter doesn't override an inherited getter."
+    correctionMessage: Try updating this class to match the superclass, or removing the override annotation.
     hasPublishedDocs: true
     comment: |-
       A getter with the override annotation does not override an existing getter.
@@ -15573,8 +15609,8 @@
       No parameters.
   OVERRIDE_ON_NON_OVERRIDING_METHOD:
     sharedName: OVERRIDE_ON_NON_OVERRIDING_MEMBER
-    template: "The method doesn't override an inherited method."
-    tip: Try updating this class to match the superclass, or removing the override annotation.
+    problemMessage: "The method doesn't override an inherited method."
+    correctionMessage: Try updating this class to match the superclass, or removing the override annotation.
     hasPublishedDocs: true
     comment: |-
       A method with the override annotation does not override an existing method.
@@ -15617,23 +15653,23 @@
       If the member can't be removed, then remove the annotation.
   OVERRIDE_ON_NON_OVERRIDING_SETTER:
     sharedName: OVERRIDE_ON_NON_OVERRIDING_MEMBER
-    template: "The setter doesn't override an inherited setter."
-    tip: Try updating this class to match the superclass, or removing the override annotation.
+    problemMessage: "The setter doesn't override an inherited setter."
+    correctionMessage: Try updating this class to match the superclass, or removing the override annotation.
     hasPublishedDocs: true
     comment: |-
       A setter with the override annotation does not override an existing setter.
 
       No parameters.
   PACKAGE_IMPORT_CONTAINS_DOT_DOT:
-    template: "A package import shouldn't contain '..'."
+    problemMessage: "A package import shouldn't contain '..'."
     comment: |-
       It is a bad practice for a package import to reference anything outside the
       given package, or more generally, it is bad practice for a package import
       to contain a "..". For example, a source file should not contain a
       directive such as `import 'package:foo/../some.dart'`.
   RECEIVER_OF_TYPE_NEVER:
-    template: "The receiver is of type 'Never', and will never complete with a value."
-    tip: Try checking for throw expressions or type errors in the receiver
+    problemMessage: "The receiver is of type 'Never', and will never complete with a value."
+    correctionMessage: Try checking for throw expressions or type errors in the receiver
     comment: |-
       It is not an error to call or tear-off a method, setter, or getter, or to
       read or write a field, on a receiver of static type `Never`.
@@ -15648,14 +15684,14 @@
 
       Parameters: none
   RETURN_OF_DO_NOT_STORE:
-    template: "'{0}' is annotated with 'doNotStore' and shouldn't be returned unless '{1}' is also annotated."
-    tip: "Annotate '{1}' with 'doNotStore'."
+    problemMessage: "'{0}' is annotated with 'doNotStore' and shouldn't be returned unless '{1}' is also annotated."
+    correctionMessage: "Annotate '{1}' with 'doNotStore'."
     comment: |-
       Users should not return values marked `@doNotStore` from functions,
       methods or getters not marked `@doNotStore`.
   SDK_VERSION_ASYNC_EXPORTED_FROM_CORE:
-    template: "The class '{0}' wasn't exported from 'dart:core' until version 2.1, but this code is required to be able to run on earlier versions."
-    tip: "Try either importing 'dart:async' or updating the SDK constraints."
+    problemMessage: "The class '{0}' wasn't exported from 'dart:core' until version 2.1, but this code is required to be able to run on earlier versions."
+    correctionMessage: "Try either importing 'dart:async' or updating the SDK constraints."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -15704,8 +15740,8 @@
       void f(Future f) {}
       ```
   SDK_VERSION_AS_EXPRESSION_IN_CONST_CONTEXT:
-    template: "The use of an as expression in a constant expression wasn't supported until version 2.3.2, but this code is required to be able to run on earlier versions."
-    tip: Try updating the SDK constraints.
+    problemMessage: "The use of an as expression in a constant expression wasn't supported until version 2.3.2, but this code is required to be able to run on earlier versions."
+    correctionMessage: Try updating the SDK constraints.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -15755,8 +15791,8 @@
       int y = x as int;
       ```
   SDK_VERSION_BOOL_OPERATOR_IN_CONST_CONTEXT:
-    template: "The use of the operator '{0}' for 'bool' operands in a constant context wasn't supported until version 2.3.2, but this code is required to be able to run on earlier versions."
-    tip: Try updating the SDK constraints.
+    problemMessage: "The use of the operator '{0}' for 'bool' operands in a constant context wasn't supported until version 2.3.2, but this code is required to be able to run on earlier versions."
+    correctionMessage: Try updating the SDK constraints.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -15809,8 +15845,8 @@
       bool c = a & b;
       ```
   SDK_VERSION_CONSTRUCTOR_TEAROFFS:
-    template: "Tearing off a constructor requires the 'constructor-tearoffs' language feature."
-    tip: "Try updating your pubspec.yaml to set the minimum SDK constraint to 2.15 or higher, and running 'pub get'."
+    problemMessage: "Tearing off a constructor requires the 'constructor-tearoffs' language feature."
+    correctionMessage: "Try updating your pubspec.yaml to set the minimum SDK constraint to 2.15 or higher, and running 'pub get'."
     comment: |-
       No parameters.
 
@@ -15863,8 +15899,8 @@
       var setConstructor = () => Set.identity();
       ```
   SDK_VERSION_EQ_EQ_OPERATOR_IN_CONST_CONTEXT:
-    template: "Using the operator '==' for non-primitive types wasn't supported until version 2.3.2, but this code is required to be able to run on earlier versions."
-    tip: Try updating the SDK constraints.
+    problemMessage: "Using the operator '==' for non-primitive types wasn't supported until version 2.3.2, but this code is required to be able to run on earlier versions."
+    correctionMessage: Try updating the SDK constraints.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -15920,8 +15956,8 @@
       bool same = a == b;
       ```
   SDK_VERSION_EXTENSION_METHODS:
-    template: "Extension methods weren't supported until version 2.6.0, but this code is required to be able to run on earlier versions."
-    tip: Try updating the SDK constraints.
+    problemMessage: "Extension methods weren't supported until version 2.6.0, but this code is required to be able to run on earlier versions."
+    correctionMessage: Try updating the SDK constraints.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -15976,8 +16012,8 @@
       }
       ```
   SDK_VERSION_GT_GT_GT_OPERATOR:
-    template: "The operator '>>>' wasn't supported until version 2.14.0, but this code is required to be able to run on earlier versions."
-    tip: Try updating the SDK constraints.
+    problemMessage: "The operator '>>>' wasn't supported until version 2.14.0, but this code is required to be able to run on earlier versions."
+    correctionMessage: Try updating the SDK constraints.
     comment: No parameters.
     documentation: |-
       #### Description
@@ -16030,8 +16066,8 @@
       }
       ```
   SDK_VERSION_IS_EXPRESSION_IN_CONST_CONTEXT:
-    template: "The use of an is expression in a constant context wasn't supported until version 2.3.2, but this code is required to be able to run on earlier versions."
-    tip: Try updating the SDK constraints.
+    problemMessage: "The use of an is expression in a constant context wasn't supported until version 2.3.2, but this code is required to be able to run on earlier versions."
+    correctionMessage: Try updating the SDK constraints.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -16082,8 +16118,8 @@
       var y = x is int ? 0 : 1;
       ```
   SDK_VERSION_NEVER:
-    template: "The type 'Never' wasn't supported until version 2.12.0, but this code is required to be able to run on earlier versions."
-    tip: Try updating the SDK constraints.
+    problemMessage: "The type 'Never' wasn't supported until version 2.12.0, but this code is required to be able to run on earlier versions."
+    correctionMessage: Try updating the SDK constraints.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -16130,8 +16166,8 @@
       dynamic x;
       ```
   SDK_VERSION_SET_LITERAL:
-    template: "Set literals weren't supported until version 2.2, but this code is required to be able to run on earlier versions."
-    tip: Try updating the SDK constraints.
+    problemMessage: "Set literals weren't supported until version 2.2, but this code is required to be able to run on earlier versions."
+    correctionMessage: Try updating the SDK constraints.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -16177,8 +16213,8 @@
       var s = new Set<int>();
       ```
   SDK_VERSION_UI_AS_CODE:
-    template: "The for, if, and spread elements weren't supported until version 2.3.0, but this code is required to be able to run on earlier versions."
-    tip: Try updating the SDK constraints.
+    problemMessage: "The for, if, and spread elements weren't supported until version 2.3.0, but this code is required to be able to run on earlier versions."
+    correctionMessage: Try updating the SDK constraints.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -16233,8 +16269,8 @@
       }
       ```
   SDK_VERSION_UI_AS_CODE_IN_CONST_CONTEXT:
-    template: "The if and spread elements weren't supported in constant expressions until version 2.5.0, but this code is required to be able to run on earlier versions."
-    tip: Try updating the SDK constraints.
+    problemMessage: "The if and spread elements weren't supported in constant expressions until version 2.5.0, but this code is required to be able to run on earlier versions."
+    correctionMessage: Try updating the SDK constraints.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -16291,16 +16327,16 @@
       var b = [...a];
       ```
   STRICT_RAW_TYPE:
-    template: "The generic type '{0}' should have explicit type arguments but doesn't."
-    tip: "Use explicit type arguments for '{0}'."
+    problemMessage: "The generic type '{0}' should have explicit type arguments but doesn't."
+    correctionMessage: "Use explicit type arguments for '{0}'."
     comment: |-
       When "strict-raw-types" is enabled, "raw types" must have type arguments.
 
       A "raw type" is a type name that does not use inference to fill in missing
       type arguments; instead, each type argument is instantiated to its bound.
   SUBTYPE_OF_SEALED_CLASS:
-    template: "The class '{0}' shouldn't be extended, mixed in, or implemented because it's sealed."
-    tip: "Try composing instead of inheriting, or refer to the documentation of '{0}' for more information."
+    problemMessage: "The class '{0}' shouldn't be extended, mixed in, or implemented because it's sealed."
+    correctionMessage: "Try composing instead of inheriting, or refer to the documentation of '{0}' for more information."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -16354,8 +16390,8 @@
       the same package as the sealed class.
   TYPE_CHECK_IS_NOT_NULL:
     sharedName: TYPE_CHECK_WITH_NULL
-    template: "Tests for non-null should be done with '!= null'."
-    tip: "Try replacing the 'is! Null' check with '!= null'."
+    problemMessage: "Tests for non-null should be done with '!= null'."
+    correctionMessage: "Try replacing the 'is! Null' check with '!= null'."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -16406,13 +16442,13 @@
       ```
   TYPE_CHECK_IS_NULL:
     sharedName: TYPE_CHECK_WITH_NULL
-    template: "Tests for null should be done with '== null'."
-    tip: "Try replacing the 'is Null' check with '== null'."
+    problemMessage: "Tests for null should be done with '== null'."
+    correctionMessage: "Try replacing the 'is Null' check with '== null'."
     hasPublishedDocs: true
     comment: No parameters.
   UNDEFINED_HIDDEN_NAME:
-    template: "The library '{0}' doesn't export a member with the hidden name '{1}'."
-    tip: Try removing the name from the list of hidden members.
+    problemMessage: "The library '{0}' doesn't export a member with the hidden name '{1}'."
+    correctionMessage: Try removing the name from the list of hidden members.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -16446,7 +16482,7 @@
       var x = min(0, 1);
       ```
   UNDEFINED_REFERENCED_PARAMETER:
-    template: "The parameter '{0}' is not defined by '{1}'."
+    problemMessage: "The parameter '{0}' is not defined by '{1}'."
     comment: |-
       Parameters:
       0: the name of the undefined parameter
@@ -16482,8 +16518,8 @@
       int f([int? a]) => a ?? 0;
       ```
   UNDEFINED_SHOWN_NAME:
-    template: "The library '{0}' doesn't export a member with the shown name '{1}'."
-    tip: Try removing the name from the list of shown members.
+    problemMessage: "The library '{0}' doesn't export a member with the shown name '{1}'."
+    correctionMessage: Try removing the name from the list of shown members.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -16517,14 +16553,14 @@
       var x = min(0, 1);
       ```
   UNIGNORABLE_IGNORE:
-    template: "The diagnostic '{0}' can't be ignored."
-    tip: Try removing the name from the list, or removing the whole comment if this is the only name in the list.
+    problemMessage: "The diagnostic '{0}' can't be ignored."
+    correctionMessage: Try removing the name from the list, or removing the whole comment if this is the only name in the list.
     comment: |-
       Parameters:
       0: the name of the non-diagnostic being ignored
   UNNECESSARY_CAST:
-    template: Unnecessary cast.
-    tip: Try removing the cast.
+    problemMessage: Unnecessary cast.
+    correctionMessage: Try removing the cast.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -16558,14 +16594,14 @@
       }
       ```
   UNNECESSARY_IGNORE:
-    template: "The diagnostic '{0}' isn't produced at this location so it doesn't need to be ignored."
-    tip: Try removing the name from the list, or removing the whole comment if this is the only name in the list.
+    problemMessage: "The diagnostic '{0}' isn't produced at this location so it doesn't need to be ignored."
+    correctionMessage: Try removing the name from the list, or removing the whole comment if this is the only name in the list.
     comment: |-
       Parameters:
       0: the name of the diagnostic being ignored
   UNNECESSARY_IMPORT:
-    template: "The import of '{0}' is unnecessary because all of the used elements are also provided by the import of '{1}'."
-    tip: Try removing the import directive.
+    problemMessage: "The import of '{0}' is unnecessary because all of the used elements are also provided by the import of '{1}'."
+    correctionMessage: Try removing the import directive.
     comment: |-
       Parameters:
       0: the uri that is not necessary
@@ -16614,8 +16650,8 @@
       aren't yet, and if those names aren't imported by other imports, then add
       the missing references to those names.
   UNNECESSARY_NO_SUCH_METHOD:
-    template: "Unnecessary 'noSuchMethod' declaration."
-    tip: "Try removing the declaration of 'noSuchMethod'."
+    problemMessage: "Unnecessary 'noSuchMethod' declaration."
+    correctionMessage: "Try removing the declaration of 'noSuchMethod'."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -16664,8 +16700,8 @@
       ```
   UNNECESSARY_NULL_COMPARISON_FALSE:
     sharedName: UNNECESSARY_NULL_COMPARISON
-    template: "The operand can't be null, so the condition is always false."
-    tip: Try removing the condition, an enclosing condition, or the whole conditional statement.
+    problemMessage: "The operand can't be null, so the condition is always false."
+    correctionMessage: Try removing the condition, an enclosing condition, or the whole conditional statement.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -16722,12 +16758,12 @@
       ```
   UNNECESSARY_NULL_COMPARISON_TRUE:
     sharedName: UNNECESSARY_NULL_COMPARISON
-    template: "The operand can't be null, so the condition is always true."
-    tip: Remove the condition.
+    problemMessage: "The operand can't be null, so the condition is always true."
+    correctionMessage: Remove the condition.
     hasPublishedDocs: true
     comment: No parameters.
   UNNECESSARY_QUESTION_MARK:
-    template: "The '?' is unnecessary because '{0}' is nullable without it."
+    problemMessage: "The '?' is unnecessary because '{0}' is nullable without it."
     comment: |-
       Parameters:
       0: the name of the type
@@ -16756,8 +16792,8 @@
       ```
   UNNECESSARY_TYPE_CHECK_FALSE:
     sharedName: UNNECESSARY_TYPE_CHECK
-    template: "Unnecessary type check; the result is always 'false'."
-    tip: Try correcting the type check, or removing the type check.
+    problemMessage: "Unnecessary type check; the result is always 'false'."
+    correctionMessage: Try correcting the type check, or removing the type check.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -16792,13 +16828,13 @@
       ```
   UNNECESSARY_TYPE_CHECK_TRUE:
     sharedName: UNNECESSARY_TYPE_CHECK
-    template: "Unnecessary type check; the result is always 'true'."
-    tip: Try correcting the type check, or removing the type check.
+    problemMessage: "Unnecessary type check; the result is always 'true'."
+    correctionMessage: Try correcting the type check, or removing the type check.
     hasPublishedDocs: true
     comment: No parameters.
   UNUSED_CATCH_CLAUSE:
-    template: "The exception variable '{0}' isn't used, so the 'catch' clause can be removed."
-    tip: Try removing the catch clause.
+    problemMessage: "The exception variable '{0}' isn't used, so the 'catch' clause can be removed."
+    correctionMessage: Try removing the catch clause.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -16838,8 +16874,8 @@
       }
       ```
   UNUSED_CATCH_STACK:
-    template: "The stack trace variable '{0}' isn't used and can be removed."
-    tip: Try removing the stack trace variable, or using it.
+    problemMessage: "The stack trace variable '{0}' isn't used and can be removed."
+    correctionMessage: Try removing the stack trace variable, or using it.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -16880,8 +16916,8 @@
       }
       ```
   UNUSED_ELEMENT:
-    template: "The declaration '{0}' isn't referenced."
-    tip: "Try removing the declaration of '{0}'."
+    problemMessage: "The declaration '{0}' isn't referenced."
+    correctionMessage: "Try removing the declaration of '{0}'."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -16934,15 +16970,15 @@
       If the declaration is intended to be used, then add the code to use it.
   UNUSED_ELEMENT_PARAMETER:
     sharedName: UNUSED_ELEMENT
-    template: "A value for optional parameter '{0}' isn't ever given."
-    tip: Try removing the unused parameter.
+    problemMessage: "A value for optional parameter '{0}' isn't ever given."
+    correctionMessage: Try removing the unused parameter.
     hasPublishedDocs: true
     comment: |-
       Parameters:
       0: the name of the parameter that is declared but not used
   UNUSED_FIELD:
-    template: "The value of the field '{0}' isn't used."
-    tip: Try removing the field, or using it.
+    problemMessage: "The value of the field '{0}' isn't used."
+    correctionMessage: Try removing the field, or using it.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -16979,8 +17015,8 @@
 
       If the field was intended to be used, then add the missing code.
   UNUSED_IMPORT:
-    template: "Unused import: '{0}'."
-    tip: Try removing the import directive.
+    problemMessage: "Unused import: '{0}'."
+    correctionMessage: Try removing the import directive.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -17010,8 +17046,8 @@
       If some of the imported names are intended to be used, then add the missing
       code.
   UNUSED_LABEL:
-    template: "The label '{0}' isn't used."
-    tip: "Try removing the label, or using it in either a 'break' or 'continue' statement."
+    problemMessage: "The label '{0}' isn't used."
+    correctionMessage: "Try removing the label, or using it in either a 'break' or 'continue' statement."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -17059,8 +17095,8 @@
       ```
       TODO(brianwilkerson) Highlight the identifier without the colon.
   UNUSED_LOCAL_VARIABLE:
-    template: "The value of the local variable '{0}' isn't used."
-    tip: Try removing the variable or using it.
+    problemMessage: "The value of the local variable '{0}' isn't used."
+    correctionMessage: Try removing the variable or using it.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -17088,8 +17124,8 @@
 
       If the variable was intended to be used, then add the missing code.
   UNUSED_RESULT:
-    template: "The value of '{0}' should be used."
-    tip: Try using the result by invoking a member, passing it to a function, or returning it from this function.
+    problemMessage: "The value of '{0}' should be used."
+    correctionMessage: Try using the result by invoking a member, passing it to a function, or returning it from this function.
     comment: |-
       Parameters:
       0: the name of the annotated method, property or function
@@ -17162,8 +17198,8 @@
       ```
   UNUSED_RESULT_WITH_MESSAGE:
     sharedName: UNUSED_RESULT
-    template: "'{0}' should be used. {1}."
-    tip: Try using the result by invoking a member, passing it to a function, or returning it from this function.
+    problemMessage: "'{0}' should be used. {1}."
+    correctionMessage: Try using the result by invoking a member, passing it to a function, or returning it from this function.
     comment: |-
       The result of invoking a method, property, or function annotated with
       `@useResult` must be used (assigned, passed to a function as an argument,
@@ -17173,8 +17209,8 @@
       0: the name of the annotated method, property or function
       1: message details
   UNUSED_SHOWN_NAME:
-    template: "The name {0} is shown, but isn’t used."
-    tip: Try removing the name from the list of shown members.
+    problemMessage: "The name {0} is shown, but isn’t used."
+    correctionMessage: Try removing the name from the list of shown members.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -17207,8 +17243,8 @@
       var x = min(0, 1);
       ```
   USE_OF_NATIVE_EXTENSION:
-    template: Dart native extensions are deprecated and aren’t available in Dart 2.15.
-    tip: "Try using dart:ffi for C interop."
+    problemMessage: Dart native extensions are deprecated and aren’t available in Dart 2.15.
+    correctionMessage: "Try using dart:ffi for C interop."
     comment: No parameters.
     documentation: |-
       #### Description
@@ -17232,69 +17268,69 @@
       native library.
 LanguageCode:
   IMPLICIT_DYNAMIC_FIELD:
-    template: "Missing field type for '{0}'."
-    tip: Try adding an explicit type, or remove implicit-dynamic from your analysis options file.
+    problemMessage: "Missing field type for '{0}'."
+    correctionMessage: Try adding an explicit type, or remove implicit-dynamic from your analysis options file.
   IMPLICIT_DYNAMIC_FUNCTION:
-    template: "Missing type arguments for generic function '{0}<{1}>'."
-    tip: Try adding an explicit type, or remove implicit-dynamic from your analysis options file.
+    problemMessage: "Missing type arguments for generic function '{0}<{1}>'."
+    correctionMessage: Try adding an explicit type, or remove implicit-dynamic from your analysis options file.
   IMPLICIT_DYNAMIC_INVOKE:
-    template: "Missing type arguments for calling generic function type '{0}'."
-    tip: Try adding an explicit type, or remove implicit-dynamic from your analysis options file.
+    problemMessage: "Missing type arguments for calling generic function type '{0}'."
+    correctionMessage: Try adding an explicit type, or remove implicit-dynamic from your analysis options file.
   IMPLICIT_DYNAMIC_LIST_LITERAL:
-    template: Missing type argument for list literal.
-    tip: Try adding an explicit type, or remove implicit-dynamic from your analysis options file.
+    problemMessage: Missing type argument for list literal.
+    correctionMessage: Try adding an explicit type, or remove implicit-dynamic from your analysis options file.
   IMPLICIT_DYNAMIC_MAP_LITERAL:
-    template: Missing type arguments for map literal.
-    tip: Try adding an explicit type, or remove implicit-dynamic from your analysis options file.
+    problemMessage: Missing type arguments for map literal.
+    correctionMessage: Try adding an explicit type, or remove implicit-dynamic from your analysis options file.
   IMPLICIT_DYNAMIC_METHOD:
-    template: "Missing type arguments for generic method '{0}<{1}>'."
-    tip: Try adding an explicit type, or remove implicit-dynamic from your analysis options file.
+    problemMessage: "Missing type arguments for generic method '{0}<{1}>'."
+    correctionMessage: Try adding an explicit type, or remove implicit-dynamic from your analysis options file.
   IMPLICIT_DYNAMIC_PARAMETER:
-    template: "Missing parameter type for '{0}'."
-    tip: Try adding an explicit type, or remove implicit-dynamic from your analysis options file.
+    problemMessage: "Missing parameter type for '{0}'."
+    correctionMessage: Try adding an explicit type, or remove implicit-dynamic from your analysis options file.
   IMPLICIT_DYNAMIC_RETURN:
-    template: "Missing return type for '{0}'."
-    tip: Try adding an explicit type, or remove implicit-dynamic from your analysis options file.
+    problemMessage: "Missing return type for '{0}'."
+    correctionMessage: Try adding an explicit type, or remove implicit-dynamic from your analysis options file.
   IMPLICIT_DYNAMIC_TYPE:
-    template: "Missing type arguments for generic type '{0}'."
-    tip: Try adding an explicit type, or remove implicit-dynamic from your analysis options file.
+    problemMessage: "Missing type arguments for generic type '{0}'."
+    correctionMessage: Try adding an explicit type, or remove implicit-dynamic from your analysis options file.
   IMPLICIT_DYNAMIC_VARIABLE:
-    template: "Missing variable type for '{0}'."
-    tip: Try adding an explicit type, or remove implicit-dynamic from your analysis options file.
+    problemMessage: "Missing variable type for '{0}'."
+    correctionMessage: Try adding an explicit type, or remove implicit-dynamic from your analysis options file.
 ManifestWarningCode:
   CAMERA_PERMISSIONS_INCOMPATIBLE:
-    template: Camera permissions make app incompatible for Chrome OS, consider adding optional features "android.hardware.camera" and "android.hardware.camera.autofocus".
-    tip: "Try adding `<uses-feature android:name=\"android.hardware.camera\"  android:required=\"false\">` `<uses-feature android:name=\"android.hardware.camera.autofocus\"  android:required=\"false\">`."
+    problemMessage: Camera permissions make app incompatible for Chrome OS, consider adding optional features "android.hardware.camera" and "android.hardware.camera.autofocus".
+    correctionMessage: "Try adding `<uses-feature android:name=\"android.hardware.camera\"  android:required=\"false\">` `<uses-feature android:name=\"android.hardware.camera.autofocus\"  android:required=\"false\">`."
     comment: |-
       A code indicating that the camera permissions is not supported on Chrome
       OS.
   NON_RESIZABLE_ACTIVITY:
-    template: The `<activity>` element should be allowed to be resized to allow users to take advantage of the multi-window environment on Chrome OS
-    tip: Consider declaring the corresponding activity element with `resizableActivity="true"` attribute.
+    problemMessage: The `<activity>` element should be allowed to be resized to allow users to take advantage of the multi-window environment on Chrome OS
+    correctionMessage: Consider declaring the corresponding activity element with `resizableActivity="true"` attribute.
     comment: A code indicating that the activity is set to be non resizable.
   NO_TOUCHSCREEN_FEATURE:
-    template: "The default \"android.hardware.touchscreen\" needs to be optional for Chrome OS. "
-    tip: "Consider adding <uses-feature android:name=\"android.hardware.touchscreen\" android:required=\"false\" /> to the manifest."
+    problemMessage: "The default \"android.hardware.touchscreen\" needs to be optional for Chrome OS. "
+    correctionMessage: "Consider adding <uses-feature android:name=\"android.hardware.touchscreen\" android:required=\"false\" /> to the manifest."
     comment: |-
       A code indicating that the touchscreen feature is not specified in the
       manifest.
   PERMISSION_IMPLIES_UNSUPPORTED_HARDWARE:
-    template: "Permission makes app incompatible for Chrome OS, consider adding optional {0} feature tag, "
-    tip: " Try adding `<uses-feature android:name=\"{0}\"  android:required=\"false\">`."
+    problemMessage: "Permission makes app incompatible for Chrome OS, consider adding optional {0} feature tag, "
+    correctionMessage: " Try adding `<uses-feature android:name=\"{0}\"  android:required=\"false\">`."
     comment: |-
       A code indicating that a specified permission is not supported on Chrome
       OS.
   SETTING_ORIENTATION_ON_ACTIVITY:
-    template: The `<activity>` element should not be locked to any orientation so that users can take advantage of the multi-window environments and larger screens on Chrome OS
-    tip: Consider declaring the corresponding activity element with `screenOrientation="unspecified"` or `"fullSensor"` attribute.
+    problemMessage: The `<activity>` element should not be locked to any orientation so that users can take advantage of the multi-window environments and larger screens on Chrome OS
+    correctionMessage: Consider declaring the corresponding activity element with `screenOrientation="unspecified"` or `"fullSensor"` attribute.
     comment: A code indicating that the activity is locked to an orientation.
   UNSUPPORTED_CHROME_OS_FEATURE:
-    template: "The feature {0} is not supported on Chrome OS, consider making it optional."
-    tip: "Try changing to `android:required=\"false\"` for this feature."
+    problemMessage: "The feature {0} is not supported on Chrome OS, consider making it optional."
+    correctionMessage: "Try changing to `android:required=\"false\"` for this feature."
     comment: A code indicating that a specified feature is not supported on Chrome OS.
   UNSUPPORTED_CHROME_OS_HARDWARE:
-    template: "The feature {0} is not supported on Chrome OS, consider making it optional."
-    tip: "Try adding `android:required=\"false\"` for this feature."
+    problemMessage: "The feature {0} is not supported on Chrome OS, consider making it optional."
+    correctionMessage: "Try adding `android:required=\"false\"` for this feature."
     comment: |-
       A code indicating that a specified hardware feature is not supported on
       Chrome OS.
@@ -17302,8 +17338,8 @@
   ABSTRACT_CLASS_MEMBER:
     copyFromCfe: true
   ABSTRACT_ENUM:
-    template: "Enums can't be declared to be 'abstract'."
-    tip: "Try removing the keyword 'abstract'."
+    problemMessage: "Enums can't be declared to be 'abstract'."
+    correctionMessage: "Try removing the keyword 'abstract'."
   ABSTRACT_EXTERNAL_FIELD:
     copyFromCfe: true
   ABSTRACT_LATE_FIELD:
@@ -17311,17 +17347,17 @@
   ABSTRACT_STATIC_FIELD:
     copyFromCfe: true
   ABSTRACT_STATIC_METHOD:
-    template: "Static methods can't be declared to be 'abstract'."
-    tip: "Try removing the keyword 'abstract'."
+    problemMessage: "Static methods can't be declared to be 'abstract'."
+    correctionMessage: "Try removing the keyword 'abstract'."
   ABSTRACT_TOP_LEVEL_FUNCTION:
-    template: "Top-level functions can't be declared to be 'abstract'."
-    tip: "Try removing the keyword 'abstract'."
+    problemMessage: "Top-level functions can't be declared to be 'abstract'."
+    correctionMessage: "Try removing the keyword 'abstract'."
   ABSTRACT_TOP_LEVEL_VARIABLE:
-    template: "Top-level variables can't be declared to be 'abstract'."
-    tip: "Try removing the keyword 'abstract'."
+    problemMessage: "Top-level variables can't be declared to be 'abstract'."
+    correctionMessage: "Try removing the keyword 'abstract'."
   ABSTRACT_TYPEDEF:
-    template: "Typedefs can't be declared to be 'abstract'."
-    tip: "Try removing the keyword 'abstract'."
+    problemMessage: "Typedefs can't be declared to be 'abstract'."
+    correctionMessage: "Try removing the keyword 'abstract'."
   ANNOTATION_ON_TYPE_ARGUMENT:
     copyFromCfe: true
   ANNOTATION_WITH_TYPE_ARGUMENTS:
@@ -17329,7 +17365,7 @@
   ANNOTATION_WITH_TYPE_ARGUMENTS_UNINSTANTIATED:
     copyFromCfe: true
   ASYNC_KEYWORD_USED_AS_IDENTIFIER:
-    template: "The keywords 'await' and 'yield' can't be used as identifiers in an asynchronous or generator function."
+    problemMessage: "The keywords 'await' and 'yield' can't be used as identifiers in an asynchronous or generator function."
     comment: |-
       16.32 Identifier Reference: It is a compile-time error if any of the
       identifiers async, await, or yield is used as an identifier in a function
@@ -17357,18 +17393,18 @@
   CONST_CLASS:
     copyFromCfe: true
   CONST_CONSTRUCTOR_WITH_BODY:
-    template: "Const constructors can't have a body."
-    tip: "Try removing either the 'const' keyword or the body."
+    problemMessage: "Const constructors can't have a body."
+    correctionMessage: "Try removing either the 'const' keyword or the body."
   CONST_ENUM:
-    template: "Enums can't be declared to be 'const'."
-    tip: "Try removing the 'const' keyword."
+    problemMessage: "Enums can't be declared to be 'const'."
+    correctionMessage: "Try removing the 'const' keyword."
   CONST_FACTORY:
     copyFromCfe: true
   CONST_METHOD:
     copyFromCfe: true
   CONST_TYPEDEF:
-    template: "Type aliases can't be declared to be 'const'."
-    tip: "Try removing the 'const' keyword."
+    problemMessage: "Type aliases can't be declared to be 'const'."
+    correctionMessage: "Try removing the 'const' keyword."
   CONTINUE_OUTSIDE_OF_LOOP:
     copyFromCfe: true
   CONTINUE_WITHOUT_LABEL_IN_CASE:
@@ -17376,16 +17412,16 @@
   COVARIANT_AND_STATIC:
     copyFromCfe: true
   COVARIANT_CONSTRUCTOR:
-    template: "A constructor can't be declared to be 'covariant'."
-    tip: "Try removing the keyword 'covariant'."
+    problemMessage: "A constructor can't be declared to be 'covariant'."
+    correctionMessage: "Try removing the keyword 'covariant'."
   COVARIANT_MEMBER:
     copyFromCfe: true
   COVARIANT_TOP_LEVEL_DECLARATION:
-    template: "Top-level declarations can't be declared to be covariant."
-    tip: "Try removing the keyword 'covariant'."
+    problemMessage: "Top-level declarations can't be declared to be covariant."
+    correctionMessage: "Try removing the keyword 'covariant'."
   DEFAULT_VALUE_IN_FUNCTION_TYPE:
-    template: "Parameters in a function type can't have default values."
-    tip: Try removing the default value.
+    problemMessage: "Parameters in a function type can't have default values."
+    correctionMessage: Try removing the default value.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -17433,8 +17469,8 @@
   DUPLICATE_PREFIX:
     copyFromCfe: true
   EMPTY_ENUM_BODY:
-    template: An enum must declare at least one constant name.
-    tip: Try declaring a constant.
+    problemMessage: An enum must declare at least one constant name.
+    correctionMessage: Try declaring a constant.
   ENUM_IN_CLASS:
     copyFromCfe: true
   EQUALITY_CANNOT_BE_EQUALITY_OPERAND:
@@ -17442,32 +17478,32 @@
   EXPECTED_BODY:
     copyFromCfe: true
   EXPECTED_CASE_OR_DEFAULT:
-    template: "Expected 'case' or 'default'."
-    tip: Try placing this code inside a case clause.
+    problemMessage: "Expected 'case' or 'default'."
+    correctionMessage: Try placing this code inside a case clause.
   EXPECTED_CLASS_MEMBER:
-    template: Expected a class member.
-    tip: Try placing this code inside a class member.
+    problemMessage: Expected a class member.
+    correctionMessage: Try placing this code inside a class member.
   EXPECTED_ELSE_OR_COMMA:
     copyFromCfe: true
   EXPECTED_EXECUTABLE:
-    template: Expected a method, getter, setter or operator declaration.
-    tip: This appears to be incomplete code. Try removing it or completing it.
+    problemMessage: Expected a method, getter, setter or operator declaration.
+    correctionMessage: This appears to be incomplete code. Try removing it or completing it.
   EXPECTED_IDENTIFIER_BUT_GOT_KEYWORD:
     copyFromCfe: true
   EXPECTED_INSTEAD:
     copyFromCfe: true
   EXPECTED_LIST_OR_MAP_LITERAL:
-    template: Expected a list or map literal.
-    tip: Try inserting a list or map literal, or remove the type arguments.
+    problemMessage: Expected a list or map literal.
+    correctionMessage: Try inserting a list or map literal, or remove the type arguments.
   EXPECTED_STRING_LITERAL:
-    template: Expected a string literal.
+    problemMessage: Expected a string literal.
   EXPECTED_TOKEN:
-    template: "Expected to find '{0}'."
+    problemMessage: "Expected to find '{0}'."
     comment: |-
       Parameters:
       0: the token that was expected but not found
   EXPECTED_TYPE_NAME:
-    template: Expected a type name.
+    problemMessage: Expected a type name.
   EXPERIMENT_NOT_ENABLED:
     copyFromCfe: true
   EXPORT_DIRECTIVE_AFTER_PART_DIRECTIVE:
@@ -17561,18 +17597,18 @@
   EXTERNAL_FIELD:
     copyFromCfe: true
   EXTERNAL_GETTER_WITH_BODY:
-    template: "External getters can't have a body."
-    tip: "Try removing the body of the getter, or removing the keyword 'external'."
+    problemMessage: "External getters can't have a body."
+    correctionMessage: "Try removing the body of the getter, or removing the keyword 'external'."
   EXTERNAL_LATE_FIELD:
     copyFromCfe: true
   EXTERNAL_METHOD_WITH_BODY:
     copyFromCfe: true
   EXTERNAL_OPERATOR_WITH_BODY:
-    template: "External operators can't have a body."
-    tip: "Try removing the body of the operator, or removing the keyword 'external'."
+    problemMessage: "External operators can't have a body."
+    correctionMessage: "Try removing the body of the operator, or removing the keyword 'external'."
   EXTERNAL_SETTER_WITH_BODY:
-    template: "External setters can't have a body."
-    tip: "Try removing the body of the setter, or removing the keyword 'external'."
+    problemMessage: "External setters can't have a body."
+    correctionMessage: "Try removing the body of the setter, or removing the keyword 'external'."
   EXTERNAL_TYPEDEF:
     copyFromCfe: true
   EXTRANEOUS_MODIFIER:
@@ -17580,11 +17616,11 @@
   FACTORY_TOP_LEVEL_DECLARATION:
     copyFromCfe: true
   FACTORY_WITHOUT_BODY:
-    template: "A non-redirecting 'factory' constructor must have a body."
-    tip: Try adding a body to the constructor.
+    problemMessage: "A non-redirecting 'factory' constructor must have a body."
+    correctionMessage: Try adding a body to the constructor.
   FACTORY_WITH_INITIALIZERS:
-    template: "A 'factory' constructor can't have initializers."
-    tip: "Try removing the 'factory' keyword to make this a generative constructor, or removing the initializers."
+    problemMessage: "A 'factory' constructor can't have initializers."
+    correctionMessage: "Try removing the 'factory' keyword to make this a generative constructor, or removing the initializers."
   FIELD_INITIALIZED_OUTSIDE_DECLARING_CLASS:
     copyFromCfe: true
   FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR:
@@ -17596,31 +17632,31 @@
   FINAL_AND_VAR:
     copyFromCfe: true
   FINAL_CLASS:
-    template: "Classes can't be declared to be 'final'."
-    tip: "Try removing the keyword 'final'."
+    problemMessage: "Classes can't be declared to be 'final'."
+    correctionMessage: "Try removing the keyword 'final'."
   FINAL_CONSTRUCTOR:
-    template: "A constructor can't be declared to be 'final'."
-    tip: "Try removing the keyword 'final'."
+    problemMessage: "A constructor can't be declared to be 'final'."
+    correctionMessage: "Try removing the keyword 'final'."
   FINAL_ENUM:
-    template: "Enums can't be declared to be 'final'."
-    tip: "Try removing the keyword 'final'."
+    problemMessage: "Enums can't be declared to be 'final'."
+    correctionMessage: "Try removing the keyword 'final'."
   FINAL_METHOD:
-    template: "Getters, setters and methods can't be declared to be 'final'."
-    tip: "Try removing the keyword 'final'."
+    problemMessage: "Getters, setters and methods can't be declared to be 'final'."
+    correctionMessage: "Try removing the keyword 'final'."
   FINAL_TYPEDEF:
-    template: "Typedefs can't be declared to be 'final'."
-    tip: "Try removing the keyword 'final'."
+    problemMessage: "Typedefs can't be declared to be 'final'."
+    correctionMessage: "Try removing the keyword 'final'."
   FUNCTION_TYPED_PARAMETER_VAR:
-    template: "Function-typed parameters can't specify 'const', 'final' or 'var' in place of a return type."
-    tip: Try replacing the keyword with a return type.
+    problemMessage: "Function-typed parameters can't specify 'const', 'final' or 'var' in place of a return type."
+    correctionMessage: Try replacing the keyword with a return type.
   GETTER_CONSTRUCTOR:
     copyFromCfe: true
   GETTER_IN_FUNCTION:
-    template: "Getters can't be defined within methods or functions."
-    tip: Try moving the getter outside the method or function, or converting the getter to a function.
+    problemMessage: "Getters can't be defined within methods or functions."
+    correctionMessage: Try moving the getter outside the method or function, or converting the getter to a function.
   GETTER_WITH_PARAMETERS:
-    template: Getters must be declared without a parameter list.
-    tip: "Try removing the parameter list, or removing the keyword 'get' to define a method rather than a getter."
+    problemMessage: Getters must be declared without a parameter list.
+    correctionMessage: "Try removing the parameter list, or removing the keyword 'get' to define a method rather than a getter."
   ILLEGAL_ASSIGNMENT_TO_NON_ASSIGNABLE:
     copyFromCfe: true
   IMPLEMENTS_BEFORE_EXTENDS:
@@ -17636,31 +17672,31 @@
   INVALID_AWAIT_IN_FOR:
     copyFromCfe: true
   INVALID_CODE_POINT:
-    template: "The escape sequence '{0}' isn't a valid code point."
+    problemMessage: "The escape sequence '{0}' isn't a valid code point."
     comment: |-
       Parameters:
       0: the invalid escape sequence
   INVALID_COMMENT_REFERENCE:
-    template: "Comment references should contain a possibly prefixed identifier and can start with 'new', but shouldn't contain anything else."
+    problemMessage: "Comment references should contain a possibly prefixed identifier and can start with 'new', but shouldn't contain anything else."
   INVALID_CONSTRUCTOR_NAME:
     copyFromCfe: true
   INVALID_GENERIC_FUNCTION_TYPE:
-    template: Invalid generic function type.
-    tip: "Try using a generic function type (returnType 'Function(' parameters ')')."
+    problemMessage: Invalid generic function type.
+    correctionMessage: "Try using a generic function type (returnType 'Function(' parameters ')')."
   INVALID_HEX_ESCAPE:
     copyFromCfe: true
   INVALID_INITIALIZER:
     copyFromCfe: true
   INVALID_LITERAL_IN_CONFIGURATION:
-    template: "The literal in a configuration can't contain interpolation."
-    tip: Try removing the interpolation expressions.
+    problemMessage: "The literal in a configuration can't contain interpolation."
+    correctionMessage: Try removing the interpolation expressions.
   INVALID_OPERATOR:
     copyFromCfe: true
     comment: |-
       Parameters:
       0: the operator that is invalid
   INVALID_OPERATOR_FOR_SUPER:
-    template: "The operator '{0}' can't be used with 'super'."
+    problemMessage: "The operator '{0}' can't be used with 'super'."
     comment: |-
       Parameters:
       0: the operator being applied to 'super'
@@ -17670,13 +17706,13 @@
   INVALID_OPERATOR_QUESTIONMARK_PERIOD_FOR_SUPER:
     copyFromCfe: true
   INVALID_STAR_AFTER_ASYNC:
-    template: "The modifier 'async*' isn't allowed for an expression function body."
-    tip: Try converting the body to a block.
+    problemMessage: "The modifier 'async*' isn't allowed for an expression function body."
+    correctionMessage: Try converting the body to a block.
   INVALID_SUPER_IN_INITIALIZER:
     copyFromCfe: true
   INVALID_SYNC:
-    template: "The modifier 'sync' isn't allowed for an expression function body."
-    tip: Try converting the body to a block.
+    problemMessage: "The modifier 'sync' isn't allowed for an expression function body."
+    correctionMessage: Try converting the body to a block.
   INVALID_THIS_IN_INITIALIZER:
     copyFromCfe: true
   INVALID_UNICODE_ESCAPE:
@@ -17721,8 +17757,8 @@
   LITERAL_WITH_NEW:
     copyFromCfe: true
   LOCAL_FUNCTION_DECLARATION_MODIFIER:
-    template: "Local function declarations can't specify any modifiers."
-    tip: Try removing the modifier.
+    problemMessage: "Local function declarations can't specify any modifiers."
+    correctionMessage: Try removing the modifier.
   MEMBER_WITH_CLASS_NAME:
     copyFromCfe: true
   MISSING_ASSIGNABLE_SELECTOR:
@@ -17732,70 +17768,70 @@
   MISSING_CATCH_OR_FINALLY:
     copyFromCfe: true
   MISSING_CLOSING_PARENTHESIS:
-    template: The closing parenthesis is missing.
-    tip: Try adding the closing parenthesis.
+    problemMessage: The closing parenthesis is missing.
+    correctionMessage: Try adding the closing parenthesis.
   MISSING_CONST_FINAL_VAR_OR_TYPE:
     copyFromCfe: true
   MISSING_ENUM_BODY:
-    template: An enum definition must have a body with at least one constant name.
-    tip: Try adding a body and defining at least one constant.
+    problemMessage: An enum definition must have a body with at least one constant name.
+    correctionMessage: Try adding a body and defining at least one constant.
   MISSING_EXPRESSION_IN_INITIALIZER:
-    template: Expected an expression after the assignment operator.
-    tip: Try adding the value to be assigned, or remove the assignment operator.
+    problemMessage: Expected an expression after the assignment operator.
+    correctionMessage: Try adding the value to be assigned, or remove the assignment operator.
   MISSING_EXPRESSION_IN_THROW:
     copyFromCfe: true
   MISSING_FUNCTION_BODY:
-    template: A function body must be provided.
-    tip: Try adding a function body.
+    problemMessage: A function body must be provided.
+    correctionMessage: Try adding a function body.
   MISSING_FUNCTION_KEYWORD:
-    template: "Function types must have the keyword 'Function' before the parameter list."
-    tip: "Try adding the keyword 'Function'."
+    problemMessage: "Function types must have the keyword 'Function' before the parameter list."
+    correctionMessage: "Try adding the keyword 'Function'."
   MISSING_FUNCTION_PARAMETERS:
-    template: Functions must have an explicit list of parameters.
-    tip: Try adding a parameter list.
+    problemMessage: Functions must have an explicit list of parameters.
+    correctionMessage: Try adding a parameter list.
   MISSING_GET:
-    template: "Getters must have the keyword 'get' before the getter name."
-    tip: "Try adding the keyword 'get'."
+    problemMessage: "Getters must have the keyword 'get' before the getter name."
+    correctionMessage: "Try adding the keyword 'get'."
   MISSING_IDENTIFIER:
-    template: Expected an identifier.
+    problemMessage: Expected an identifier.
   MISSING_INITIALIZER:
     copyFromCfe: true
   MISSING_KEYWORD_OPERATOR:
     copyFromCfe: true
   MISSING_METHOD_PARAMETERS:
-    template: Methods must have an explicit list of parameters.
-    tip: Try adding a parameter list.
+    problemMessage: Methods must have an explicit list of parameters.
+    correctionMessage: Try adding a parameter list.
   MISSING_NAME_FOR_NAMED_PARAMETER:
-    template: Named parameters in a function type must have a name
-    tip: Try providing a name for the parameter or removing the curly braces.
+    problemMessage: Named parameters in a function type must have a name
+    correctionMessage: Try providing a name for the parameter or removing the curly braces.
   MISSING_NAME_IN_LIBRARY_DIRECTIVE:
-    template: Library directives must include a library name.
-    tip: "Try adding a library name after the keyword 'library', or remove the library directive if the library doesn't have any parts."
+    problemMessage: Library directives must include a library name.
+    correctionMessage: "Try adding a library name after the keyword 'library', or remove the library directive if the library doesn't have any parts."
   MISSING_NAME_IN_PART_OF_DIRECTIVE:
-    template: Part-of directives must include a library name.
-    tip: "Try adding a library name after the 'of'."
+    problemMessage: Part-of directives must include a library name.
+    correctionMessage: "Try adding a library name after the 'of'."
   MISSING_PREFIX_IN_DEFERRED_IMPORT:
     copyFromCfe: true
   MISSING_STAR_AFTER_SYNC:
-    template: "The modifier 'sync' must be followed by a star ('*')."
-    tip: Try removing the modifier, or add a star.
+    problemMessage: "The modifier 'sync' must be followed by a star ('*')."
+    correctionMessage: Try removing the modifier, or add a star.
   MISSING_STATEMENT:
     copyFromCfe: true
   MISSING_TERMINATOR_FOR_PARAMETER_GROUP:
-    template: "There is no '{0}' to close the parameter group."
-    tip: "Try inserting a '{0}' at the end of the group."
+    problemMessage: "There is no '{0}' to close the parameter group."
+    correctionMessage: "Try inserting a '{0}' at the end of the group."
     comment: |-
       Parameters:
       0: the terminator that is missing
   MISSING_TYPEDEF_PARAMETERS:
-    template: Typedefs must have an explicit list of parameters.
-    tip: Try adding a parameter list.
+    problemMessage: Typedefs must have an explicit list of parameters.
+    correctionMessage: Try adding a parameter list.
   MISSING_VARIABLE_IN_FOR_EACH:
-    template: "A loop variable must be declared in a for-each loop before the 'in', but none was found."
-    tip: Try declaring a loop variable.
+    problemMessage: "A loop variable must be declared in a for-each loop before the 'in', but none was found."
+    correctionMessage: Try declaring a loop variable.
   MIXED_PARAMETER_GROUPS:
-    template: "Can't have both positional and named parameters in a single parameter list."
-    tip: Try choosing a single style of optional parameters.
+    problemMessage: "Can't have both positional and named parameters in a single parameter list."
+    correctionMessage: Try choosing a single style of optional parameters.
   MIXIN_DECLARES_CONSTRUCTOR:
     copyFromCfe: true
   MODIFIER_OUT_OF_ORDER:
@@ -17803,23 +17839,23 @@
   MULTIPLE_EXTENDS_CLAUSES:
     copyFromCfe: true
   MULTIPLE_IMPLEMENTS_CLAUSES:
-    template: Each class or mixin definition can have at most one implements clause.
-    tip: Try combining all of the implements clauses into a single clause.
+    problemMessage: Each class or mixin definition can have at most one implements clause.
+    correctionMessage: Try combining all of the implements clauses into a single clause.
   MULTIPLE_LIBRARY_DIRECTIVES:
     copyFromCfe: true
   MULTIPLE_NAMED_PARAMETER_GROUPS:
-    template: "Can't have multiple groups of named parameters in a single parameter list."
-    tip: Try combining all of the groups into a single group.
+    problemMessage: "Can't have multiple groups of named parameters in a single parameter list."
+    correctionMessage: Try combining all of the groups into a single group.
   MULTIPLE_ON_CLAUSES:
     copyFromCfe: true
   MULTIPLE_PART_OF_DIRECTIVES:
     copyFromCfe: true
   MULTIPLE_POSITIONAL_PARAMETER_GROUPS:
-    template: "Can't have multiple groups of positional parameters in a single parameter list."
-    tip: Try combining all of the groups into a single group.
+    problemMessage: "Can't have multiple groups of positional parameters in a single parameter list."
+    correctionMessage: Try combining all of the groups into a single group.
   MULTIPLE_VARIABLES_IN_FOR_EACH:
-    template: "A single loop variable must be declared in a for-each loop before the 'in', but {0} were found."
-    tip: Try moving all but one of the declarations inside the loop body.
+    problemMessage: "A single loop variable must be declared in a for-each loop before the 'in', but {0} were found."
+    correctionMessage: Try moving all but one of the declarations inside the loop body.
     comment: |-
       Parameters:
       0: the number of variables being declared
@@ -17828,50 +17864,50 @@
   MULTIPLE_WITH_CLAUSES:
     copyFromCfe: true
   NAMED_FUNCTION_EXPRESSION:
-    template: "Function expressions can't be named."
-    tip: Try removing the name, or moving the function expression to a function declaration statement.
+    problemMessage: "Function expressions can't be named."
+    correctionMessage: Try removing the name, or moving the function expression to a function declaration statement.
   NAMED_FUNCTION_TYPE:
-    template: "Function types can't be named."
-    tip: "Try replacing the name with the keyword 'Function'."
+    problemMessage: "Function types can't be named."
+    correctionMessage: "Try replacing the name with the keyword 'Function'."
   NAMED_PARAMETER_OUTSIDE_GROUP:
-    template: "Named parameters must be enclosed in curly braces ('{' and '}')."
-    tip: Try surrounding the named parameters in curly braces.
+    problemMessage: "Named parameters must be enclosed in curly braces ('{' and '}')."
+    correctionMessage: Try surrounding the named parameters in curly braces.
   NATIVE_CLAUSE_IN_NON_SDK_CODE:
-    template: Native clause can only be used in the SDK and code that is loaded through native extensions.
-    tip: Try removing the native clause.
+    problemMessage: Native clause can only be used in the SDK and code that is loaded through native extensions.
+    correctionMessage: Try removing the native clause.
   NATIVE_CLAUSE_SHOULD_BE_ANNOTATION:
     copyFromCfe: true
   NATIVE_FUNCTION_BODY_IN_NON_SDK_CODE:
-    template: Native functions can only be declared in the SDK and code that is loaded through native extensions.
-    tip: "Try removing the word 'native'."
+    problemMessage: Native functions can only be declared in the SDK and code that is loaded through native extensions.
+    correctionMessage: "Try removing the word 'native'."
   NON_CONSTRUCTOR_FACTORY:
-    template: Only a constructor can be declared to be a factory.
-    tip: "Try removing the keyword 'factory'."
+    problemMessage: Only a constructor can be declared to be a factory.
+    correctionMessage: "Try removing the keyword 'factory'."
   NON_IDENTIFIER_LIBRARY_NAME:
-    template: The name of a library must be an identifier.
-    tip: Try using an identifier as the name of the library.
+    problemMessage: The name of a library must be an identifier.
+    correctionMessage: Try using an identifier as the name of the library.
   NON_PART_OF_DIRECTIVE_IN_PART:
-    template: The part-of directive must be the only directive in a part.
-    tip: Try removing the other directives, or moving them to the library for which this is a part.
+    problemMessage: The part-of directive must be the only directive in a part.
+    correctionMessage: Try removing the other directives, or moving them to the library for which this is a part.
   NON_STRING_LITERAL_AS_URI:
-    template: The URI must be a string literal.
-    tip: Try enclosing the URI in either single or double quotes.
+    problemMessage: The URI must be a string literal.
+    correctionMessage: Try enclosing the URI in either single or double quotes.
   NON_USER_DEFINABLE_OPERATOR:
-    template: "The operator '{0}' isn't user definable."
+    problemMessage: "The operator '{0}' isn't user definable."
     comment: |-
       Parameters:
       0: the operator that the user is trying to define
   NORMAL_BEFORE_OPTIONAL_PARAMETERS:
-    template: Normal parameters must occur before optional parameters.
-    tip: Try moving all of the normal parameters before the optional parameters.
+    problemMessage: Normal parameters must occur before optional parameters.
+    correctionMessage: Try moving all of the normal parameters before the optional parameters.
   NULL_AWARE_CASCADE_OUT_OF_ORDER:
     copyFromCfe: true
   POSITIONAL_AFTER_NAMED_ARGUMENT:
-    template: Positional arguments must occur before named arguments.
-    tip: Try moving all of the positional arguments before the named arguments.
+    problemMessage: Positional arguments must occur before named arguments.
+    correctionMessage: Try moving all of the positional arguments before the named arguments.
   POSITIONAL_PARAMETER_OUTSIDE_GROUP:
-    template: "Positional parameters must be enclosed in square brackets ('[' and ']')."
-    tip: Try surrounding the positional parameters in square brackets.
+    problemMessage: "Positional parameters must be enclosed in square brackets ('[' and ']')."
+    correctionMessage: Try surrounding the positional parameters in square brackets.
   PREFIX_AFTER_COMBINATOR:
     copyFromCfe: true
   REDIRECTING_CONSTRUCTOR_WITH_BODY:
@@ -17881,23 +17917,23 @@
   SETTER_CONSTRUCTOR:
     copyFromCfe: true
   SETTER_IN_FUNCTION:
-    template: "Setters can't be defined within methods or functions."
-    tip: Try moving the setter outside the method or function.
+    problemMessage: "Setters can't be defined within methods or functions."
+    correctionMessage: Try moving the setter outside the method or function.
   STACK_OVERFLOW:
     copyFromCfe: true
   STATIC_CONSTRUCTOR:
     copyFromCfe: true
   STATIC_GETTER_WITHOUT_BODY:
-    template: "A 'static' getter must have a body."
-    tip: "Try adding a body to the getter, or removing the keyword 'static'."
+    problemMessage: "A 'static' getter must have a body."
+    correctionMessage: "Try adding a body to the getter, or removing the keyword 'static'."
   STATIC_OPERATOR:
     copyFromCfe: true
   STATIC_SETTER_WITHOUT_BODY:
-    template: "A 'static' setter must have a body."
-    tip: "Try adding a body to the setter, or removing the keyword 'static'."
+    problemMessage: "A 'static' setter must have a body."
+    correctionMessage: "Try adding a body to the setter, or removing the keyword 'static'."
   STATIC_TOP_LEVEL_DECLARATION:
-    template: "Top-level declarations can't be declared to be static."
-    tip: "Try removing the keyword 'static'."
+    problemMessage: "Top-level declarations can't be declared to be static."
+    correctionMessage: "Try removing the keyword 'static'."
   SWITCH_HAS_CASE_AFTER_DEFAULT_CASE:
     copyFromCfe: true
   SWITCH_HAS_MULTIPLE_DEFAULT_CASES:
@@ -17913,20 +17949,20 @@
   TYPE_PARAMETER_ON_CONSTRUCTOR:
     copyFromCfe: true
   TYPE_PARAMETER_ON_OPERATOR:
-    template: "Types parameters aren't allowed when defining an operator."
-    tip: Try removing the type parameters.
+    problemMessage: "Types parameters aren't allowed when defining an operator."
+    correctionMessage: Try removing the type parameters.
     comment: |-
       7.1.1 Operators: Type parameters are not syntactically supported on an
       operator.
   UNEXPECTED_TERMINATOR_FOR_PARAMETER_GROUP:
-    template: "There is no '{0}' to open a parameter group."
-    tip: "Try inserting the '{0}' at the appropriate location."
+    problemMessage: "There is no '{0}' to open a parameter group."
+    correctionMessage: "Try inserting the '{0}' at the appropriate location."
     comment: |-
       Parameters:
       0: the starting character that was missing
   UNEXPECTED_TOKEN:
-    template: "Unexpected text '{0}'."
-    tip: Try removing the text.
+    problemMessage: "Unexpected text '{0}'."
+    correctionMessage: Try removing the text.
     comment: |-
       Parameters:
       0: the unexpected text that was found
@@ -17935,34 +17971,34 @@
   VAR_AS_TYPE_NAME:
     copyFromCfe: true
   VAR_CLASS:
-    template: "Classes can't be declared to be 'var'."
-    tip: "Try removing the keyword 'var'."
+    problemMessage: "Classes can't be declared to be 'var'."
+    correctionMessage: "Try removing the keyword 'var'."
   VAR_ENUM:
-    template: "Enums can't be declared to be 'var'."
-    tip: "Try removing the keyword 'var'."
+    problemMessage: "Enums can't be declared to be 'var'."
+    correctionMessage: "Try removing the keyword 'var'."
   VAR_RETURN_TYPE:
     copyFromCfe: true
   VAR_TYPEDEF:
-    template: "Typedefs can't be declared to be 'var'."
-    tip: "Try removing the keyword 'var', or replacing it with the name of the return type."
+    problemMessage: "Typedefs can't be declared to be 'var'."
+    correctionMessage: "Try removing the keyword 'var', or replacing it with the name of the return type."
   VOID_WITH_TYPE_ARGUMENTS:
     copyFromCfe: true
   WITH_BEFORE_EXTENDS:
     copyFromCfe: true
   WRONG_SEPARATOR_FOR_POSITIONAL_PARAMETER:
-    template: "The default value of a positional parameter should be preceded by '='."
-    tip: "Try replacing the ':' with '='."
+    problemMessage: "The default value of a positional parameter should be preceded by '='."
+    correctionMessage: "Try replacing the ':' with '='."
   WRONG_TERMINATOR_FOR_PARAMETER_GROUP:
-    template: "Expected '{0}' to close parameter group."
-    tip: "Try replacing '{0}' with '{1}'."
+    problemMessage: "Expected '{0}' to close parameter group."
+    correctionMessage: "Try replacing '{0}' with '{1}'."
     comment: |-
       Parameters:
       0: the terminator that was expected
       1: the terminator that was found
 PubspecWarningCode:
   ASSET_DIRECTORY_DOES_NOT_EXIST:
-    template: "The asset directory '{0}' doesn't exist."
-    tip: Try creating the directory or fixing the path to the directory.
+    problemMessage: "The asset directory '{0}' doesn't exist."
+    correctionMessage: Try creating the directory or fixing the path to the directory.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -17994,8 +18030,8 @@
       If the path isn't correct, then change the path to match the path of the
       directory containing the assets.
   ASSET_DOES_NOT_EXIST:
-    template: "The asset file '{0}' doesn't exist."
-    tip: Try creating the file or fixing the path to the file.
+    problemMessage: "The asset file '{0}' doesn't exist."
+    correctionMessage: Try creating the file or fixing the path to the file.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -18026,8 +18062,8 @@
       If the path isn't correct, then change the path to match the path of the
       file containing the asset.
   ASSET_FIELD_NOT_LIST:
-    template: "The value of the 'asset' field is expected to be a list of relative file paths."
-    tip: Try converting the value to be a list of relative file paths.
+    problemMessage: "The value of the 'asset' field is expected to be a list of relative file paths."
+    correctionMessage: Try converting the value to be a list of relative file paths.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -18060,8 +18096,8 @@
           - assets/
       ```
   ASSET_NOT_STRING:
-    template: Assets are required to be file paths (strings).
-    tip: Try converting the value to be a string.
+    problemMessage: Assets are required to be file paths (strings).
+    correctionMessage: Try converting the value to be a string.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -18096,8 +18132,8 @@
           - image.gif
       ```
   DEPENDENCIES_FIELD_NOT_MAP:
-    template: "The value of the '{0}' field is expected to be a map."
-    tip: Try converting the value to be a map.
+    problemMessage: "The value of the '{0}' field is expected to be a map."
+    correctionMessage: Try converting the value to be a map.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -18129,8 +18165,8 @@
         meta: ^1.0.2
       ```
   DEPRECATED_FIELD:
-    template: "The '{0}' field is no longer used and can be removed."
-    tip: Try removing the field.
+    problemMessage: "The '{0}' field is no longer used and can be removed."
+    correctionMessage: Try removing the field.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -18160,8 +18196,8 @@
       name: example
       ```
   FLUTTER_FIELD_NOT_MAP:
-    template: "The value of the 'flutter' field is expected to be a map."
-    tip: Try converting the value to be a map.
+    problemMessage: "The value of the 'flutter' field is expected to be a map."
+    correctionMessage: Try converting the value to be a map.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -18201,8 +18237,8 @@
       name: example
       ```
   INVALID_DEPENDENCY:
-    template: "Publishable packages can't have '{0}' dependencies."
-    tip: "Try adding a 'publish_to: none' entry to mark the package as not for publishing or remove the {0} dependency."
+    problemMessage: "Publishable packages can't have '{0}' dependencies."
+    correctionMessage: "Try adding a 'publish_to: none' entry to mark the package as not for publishing or remove the {0} dependency."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -18254,8 +18290,8 @@
           version: ^1.4.0
       ```
   MISSING_NAME:
-    template: "The 'name' field is required but missing."
-    tip: "Try adding a field named 'name'."
+    problemMessage: "The 'name' field is required but missing."
+    correctionMessage: "Try adding a field named 'name'."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -18286,8 +18322,8 @@
         meta: ^1.0.2
       ```
   NAME_NOT_STRING:
-    template: "The value of the 'name' field is required to be a string."
-    tip: Try converting the value to be a string.
+    problemMessage: "The value of the 'name' field is required to be a string."
+    correctionMessage: Try converting the value to be a string.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -18316,8 +18352,8 @@
       name: example
       ```
   PATH_DOES_NOT_EXIST:
-    template: "The path '{0}' doesn't exist."
-    tip: Try creating the referenced path or using a path that exists.
+    problemMessage: "The path '{0}' doesn't exist."
+    correctionMessage: Try creating the referenced path or using a path that exists.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -18348,8 +18384,8 @@
       If the path isn't correct, then change the path to match the path to the
       root of the package.
   PATH_NOT_POSIX:
-    template: "The path '{0}' isn't a POSIX-style path."
-    tip: Try converting the value to a POSIX-style path.
+    problemMessage: "The path '{0}' isn't a POSIX-style path."
+    correctionMessage: Try converting the value to a POSIX-style path.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -18377,8 +18413,8 @@
 
       Convert the path to a POSIX path.
   PATH_PUBSPEC_DOES_NOT_EXIST:
-    template: "The directory '{0}' doesn't contain a pubspec."
-    tip: Try creating a pubspec in the referenced directory or using a path that has a pubspec.
+    problemMessage: "The directory '{0}' doesn't contain a pubspec."
+    correctionMessage: Try creating a pubspec in the referenced directory or using a path that has a pubspec.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -18415,8 +18451,8 @@
 
       If the path is wrong, then replace it with a the correct path.
   UNNECESSARY_DEV_DEPENDENCY:
-    template: "The dev dependency on {0} is unnecessary because there is also a normal dependency on that package."
-    tip: Try removing the dev dependency.
+    problemMessage: "The dev dependency on {0} is unnecessary because there is also a normal dependency on that package."
+    correctionMessage: Try removing the dev dependency.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -18456,8 +18492,8 @@
       ```
 StaticWarningCode:
   DEAD_NULL_AWARE_EXPRESSION:
-    template: "The left operand can't be null, so the right operand is never executed."
-    tip: Try removing the operator and the right operand.
+    problemMessage: "The left operand can't be null, so the right operand is never executed."
+    correctionMessage: Try removing the operator and the right operand.
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
@@ -18535,8 +18571,8 @@
       }
       ```
   INVALID_NULL_AWARE_OPERATOR:
-    template: "The receiver can't be null, so the null-aware operator '{0}' is unnecessary."
-    tip: "Try replacing the operator '{0}' with '{1}'."
+    problemMessage: "The receiver can't be null, so the null-aware operator '{0}' is unnecessary."
+    correctionMessage: "Try replacing the operator '{0}' with '{1}'."
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -18613,16 +18649,16 @@
       not be appropriate in some cases.)
   INVALID_NULL_AWARE_OPERATOR_AFTER_SHORT_CIRCUIT:
     sharedName: INVALID_NULL_AWARE_OPERATOR
-    template: "The receiver can't be null because of short-circuiting, so the null-aware operator '{0}' can't be used."
-    tip: "Try replacing the operator '{0}' with '{1}'."
+    problemMessage: "The receiver can't be null because of short-circuiting, so the null-aware operator '{0}' can't be used."
+    correctionMessage: "Try replacing the operator '{0}' with '{1}'."
     hasPublishedDocs: true
     comment: |-
       Parameters:
       0: the null-aware operator that is invalid
       1: the non-null-aware operator that can replace the invalid operator
   INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_NAMED:
-    template: "Parameters can't override default values, this method overrides '{0}.{1}' where '{2}' has a different value."
-    tip: Try using the same default value in both methods.
+    problemMessage: "Parameters can't override default values, this method overrides '{0}.{1}' where '{2}' has a different value."
+    correctionMessage: Try using the same default value in both methods.
     comment: |-
       7.1 Instance Methods: It is a static warning if an instance method
       <i>m1</i> overrides an instance member <i>m2</i>, the signature of
@@ -18630,8 +18666,8 @@
       <i>p</i> and the signature of <i>m1</i> specifies a different default value
       for <i>p</i>.
   INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_POSITIONAL:
-    template: "Parameters can't override default values, this method overrides '{0}.{1}' where this positional parameter has a different value."
-    tip: Try using the same default value in both methods.
+    problemMessage: "Parameters can't override default values, this method overrides '{0}.{1}' where this positional parameter has a different value."
+    correctionMessage: Try using the same default value in both methods.
     comment: |-
       7.1 Instance Methods: It is a static warning if an instance method
       <i>m1</i> overrides an instance member <i>m2</i>, the signature of
@@ -18639,8 +18675,8 @@
       <i>p</i> and the signature of <i>m1</i> specifies a different default value
       for <i>p</i>.
   MISSING_ENUM_CONSTANT_IN_SWITCH:
-    template: "Missing case clause for '{0}'."
-    tip: Try adding a case clause for the missing constant, or adding a default clause.
+    problemMessage: "Missing case clause for '{0}'."
+    correctionMessage: Try adding a case clause for the missing constant, or adding a default clause.
     hasPublishedDocs: true
     comment: |-
       Parameters:
@@ -18706,8 +18742,8 @@
       TODO(brianwilkerson) This documentation will need to be updated when NNBD
        ships.
   UNNECESSARY_NON_NULL_ASSERTION:
-    template: "The '!' will have no effect because the receiver can't be null."
-    tip: "Try removing the '!' operator."
+    problemMessage: "The '!' will have no effect because the receiver can't be null."
+    correctionMessage: "Try removing the '!' operator."
     hasPublishedDocs: true
     comment: No parameters.
     documentation: |-
diff --git a/pkg/analyzer/pubspec.yaml b/pkg/analyzer/pubspec.yaml
index dd5d48d..8497bb1 100644
--- a/pkg/analyzer/pubspec.yaml
+++ b/pkg/analyzer/pubspec.yaml
@@ -1,5 +1,5 @@
 name: analyzer
-version: 2.4.0-dev
+version: 2.4.0
 description: This package provides a library that performs static analysis of Dart code.
 homepage: https://github.com/dart-lang/sdk/tree/main/pkg/analyzer
 
@@ -7,7 +7,7 @@
   sdk: '>=2.14.0 <3.0.0'
 
 dependencies:
-  _fe_analyzer_shared: ^26.0.0
+  _fe_analyzer_shared: ^27.0.0
   cli_util: ^0.3.0
   collection: ^1.15.0
   convert: ^3.0.0
diff --git a/pkg/analyzer/tool/diagnostics/generate.dart b/pkg/analyzer/tool/diagnostics/generate.dart
index e431fb0..30b25bc 100644
--- a/pkg/analyzer/tool/diagnostics/generate.dart
+++ b/pkg/analyzer/tool/diagnostics/generate.dart
@@ -30,10 +30,17 @@
   String packageRoot = pathContext.normalize(package_root.packageRoot);
   String analyzerPath = pathContext.join(packageRoot, 'analyzer');
   return CodePath.from([
-    [analyzerPath, 'lib', 'src', 'dart', 'error', 'hint_codes.dart'],
-    [analyzerPath, 'lib', 'src', 'dart', 'error', 'syntactic_errors.dart'],
-    [analyzerPath, 'lib', 'src', 'error', 'codes.dart'],
-    [analyzerPath, 'lib', 'src', 'pubspec', 'pubspec_warning_code.dart'],
+    [analyzerPath, 'lib', 'src', 'dart', 'error', 'hint_codes.g.dart'],
+    [
+      analyzerPath,
+      'lib',
+      'src',
+      'dart',
+      'error',
+      'syntactic_errors.analyzer.g.dart'
+    ],
+    [analyzerPath, 'lib', 'src', 'error', 'codes.g.dart'],
+    [analyzerPath, 'lib', 'src', 'pubspec', 'pubspec_warning_code.g.dart'],
   ], [
     null,
     [analyzerPath, 'lib', 'src', 'dart', 'error', 'syntactic_errors.g.dart'],
diff --git a/pkg/analyzer/tool/messages/error_code_info.dart b/pkg/analyzer/tool/messages/error_code_info.dart
index 4a94bf8..bc63b2b 100644
--- a/pkg/analyzer/tool/messages/error_code_info.dart
+++ b/pkg/analyzer/tool/messages/error_code_info.dart
@@ -4,6 +4,23 @@
 
 import 'dart:convert';
 
+/// Decodes a YAML object (obtained from `pkg/analyzer/messages.yaml`) into a
+/// two-level map of [ErrorCodeInfo], indexed first by class name and then by
+/// error name.
+Map<String, Map<String, ErrorCodeInfo>> decodeAnalyzerMessagesYaml(
+    Map<Object?, Object?> yaml) {
+  var result = <String, Map<String, ErrorCodeInfo>>{};
+  for (var classEntry in yaml.entries) {
+    var className = classEntry.key as String;
+    for (var errorEntry
+        in (classEntry.value as Map<Object?, Object?>).entries) {
+      (result[className] ??= {})[errorEntry.key as String] =
+          ErrorCodeInfo.fromYaml(errorEntry.value as Map<Object?, Object?>);
+    }
+  }
+  return result;
+}
+
 /// Decodes a YAML object (obtained from `pkg/front_end/messages.yaml`) into a
 /// map from error name to [ErrorCodeInfo].
 Map<String, ErrorCodeInfo> decodeCfeMessagesYaml(Map<Object?, Object?> yaml) {
@@ -118,6 +135,10 @@
   /// to the CFE's messages.yaml file so that this isn't necessary.
   final bool copyFromCfe;
 
+  /// If the error code has an associated correctionMessage, the template for
+  /// it.
+  final String? correctionMessage;
+
   /// If present, user-facing documentation for the error.
   final String? documentation;
 
@@ -132,18 +153,15 @@
   /// Indicates whether this error is caused by an unresolved identifier.
   final bool isUnresolvedIdentifier;
 
+  /// The problemMessage for the error code, or `null` if [copyFromCfe] is
+  /// `true`.
+  final String? problemMessage;
+
   /// If present, indicates that this error code has a special name for
   /// presentation to the user, that is potentially shared with other error
   /// codes.
   final String? sharedName;
 
-  /// The template for the error message, or `null` if [copyFromCfe] is `true`.
-  final String? template;
-
-  /// If the error code has an associated tip/correction message, the template
-  /// for it.
-  final String? tip;
-
   ErrorCodeInfo(
       {this.analyzerCode = const [],
       this.comment,
@@ -153,15 +171,16 @@
       this.index,
       this.isUnresolvedIdentifier = false,
       this.sharedName,
-      this.template,
-      this.tip}) {
+      this.problemMessage,
+      this.correctionMessage}) {
     if (copyFromCfe) {
-      if (template != null) {
-        throw "Error codes marked `copyFromCfe: true` can't have a template.";
+      if (problemMessage != null) {
+        throw "Error codes marked `copyFromCfe: true` can't have a "
+            "problemMessage.";
       }
     } else {
-      if (template == null) {
-        throw 'Error codes must have a template unless they are marked '
+      if (problemMessage == null) {
+        throw 'Error codes must have a problemMessage unless they are marked '
             '`copyFromCfe: true`.';
       }
     }
@@ -173,14 +192,14 @@
             analyzerCode: _decodeAnalyzerCode(yaml['analyzerCode']),
             comment: yaml['comment'] as String?,
             copyFromCfe: yaml['copyFromCfe'] as bool? ?? false,
+            correctionMessage: yaml['correctionMessage'] as String?,
             documentation: yaml['documentation'] as String?,
             hasPublishedDocs: yaml['hasPublishedDocs'] as bool? ?? false,
             index: yaml['index'] as int?,
             isUnresolvedIdentifier:
                 yaml['isUnresolvedIdentifier'] as bool? ?? false,
-            sharedName: yaml['sharedName'] as String?,
-            template: yaml['template'] as String?,
-            tip: yaml['tip'] as String?);
+            problemMessage: yaml['problemMessage'] as String?,
+            sharedName: yaml['sharedName'] as String?);
 
   /// Generates a dart declaration for this error code, suitable for inclusion
   /// in the error class [className].  [errorCode] is the name of the error code
@@ -188,30 +207,59 @@
   String toAnalyzerCode(String className, String errorCode) {
     var out = StringBuffer();
     out.writeln('$className(');
-    out.writeln("'$errorCode',");
+    out.writeln("'${sharedName ?? errorCode}',");
     final placeholderToIndexMap = _computePlaceholderToIndexMap();
     out.writeln(
-        json.encode(_convertTemplate(placeholderToIndexMap, template!)));
-    final tip = this.tip;
-    if (tip is String) {
-      out.write(',correction: ');
-      out.writeln(json.encode(_convertTemplate(placeholderToIndexMap, tip)));
+        json.encode(_convertTemplate(placeholderToIndexMap, problemMessage!)) +
+            ',');
+    final correctionMessage = this.correctionMessage;
+    if (correctionMessage is String) {
+      out.write('correction: ');
+      out.writeln(json.encode(
+              _convertTemplate(placeholderToIndexMap, correctionMessage)) +
+          ',');
     }
     if (hasPublishedDocs) {
-      out.writeln(',hasPublishedDocs:true');
+      out.writeln('hasPublishedDocs:true,');
+    }
+    if (isUnresolvedIdentifier) {
+      out.writeln('isUnresolvedIdentifier:true,');
+    }
+    if (sharedName != null) {
+      out.writeln("uniqueName: '$errorCode',");
     }
     out.write(');');
     return out.toString();
   }
 
+  /// Generates dart comments for this error code.
+  String toAnalyzerComments({String indent = ''}) {
+    var out = StringBuffer();
+    var comment = this.comment;
+    if (comment != null) {
+      out.writeln('$indent/**');
+      for (var line in comment.split('\n')) {
+        out.writeln('$indent *${line.isEmpty ? '' : ' '}$line');
+      }
+      out.writeln('$indent */');
+    }
+    var documentation = this.documentation;
+    if (documentation != null) {
+      for (var line in documentation.split('\n')) {
+        out.writeln('$indent//${line.isEmpty ? '' : ' '}$line');
+      }
+    }
+    return out.toString();
+  }
+
   /// Encodes this object into a YAML representation.
   Map<Object?, Object?> toYaml() => {
         if (copyFromCfe) 'copyFromCfe': true,
         if (sharedName != null) 'sharedName': sharedName,
         if (analyzerCode.isNotEmpty)
           'analyzerCode': _encodeAnalyzerCode(analyzerCode),
-        if (template != null) 'template': template,
-        if (tip != null) 'tip': tip,
+        if (problemMessage != null) 'problemMessage': problemMessage,
+        if (correctionMessage != null) 'correctionMessage': correctionMessage,
         if (isUnresolvedIdentifier) 'isUnresolvedIdentifier': true,
         if (hasPublishedDocs) 'hasPublishedDocs': true,
         if (comment != null) 'comment': comment,
@@ -219,10 +267,10 @@
       };
 
   /// Given a messages.yaml entry, come up with a mapping from placeholder
-  /// patterns in its message and tip strings to their corresponding indices.
+  /// patterns in its message strings to their corresponding indices.
   Map<String, int> _computePlaceholderToIndexMap() {
     var mapping = <String, int>{};
-    for (var value in [template, tip]) {
+    for (var value in [problemMessage, correctionMessage]) {
       if (value is! String) continue;
       for (Match match in _placeholderPattern.allMatches(value)) {
         // CFE supports a bunch of formatting options that we don't; make sure
diff --git a/pkg/analyzer/tool/messages/extract_errors_to_yaml.dart b/pkg/analyzer/tool/messages/extract_errors_to_yaml.dart
index f0c3790..4834120 100644
--- a/pkg/analyzer/tool/messages/extract_errors_to_yaml.dart
+++ b/pkg/analyzer/tool/messages/extract_errors_to_yaml.dart
@@ -252,8 +252,8 @@
       } else {
         errorCodeInfo = ErrorCodeInfo(
             sharedName: uniqueNameSuffix == name ? null : name,
-            template: code.message,
-            tip: code.correction,
+            problemMessage: code.message,
+            correctionMessage: code.correction,
             isUnresolvedIdentifier: code.isUnresolvedIdentifier,
             hasPublishedDocs: code.hasPublishedDocs,
             comment: documentationComment,
diff --git a/pkg/analyzer/tool/messages/generate.dart b/pkg/analyzer/tool/messages/generate.dart
index 7c44d8d..15c7f35 100644
--- a/pkg/analyzer/tool/messages/generate.dart
+++ b/pkg/analyzer/tool/messages/generate.dart
@@ -14,11 +14,10 @@
 ///
 /// It is expected that 'pkg/front_end/tool/fasta generate-messages'
 /// has already been successfully run.
+import 'dart:convert';
 import 'dart:io';
 
 import 'package:_fe_analyzer_shared/src/scanner/scanner.dart';
-import 'package:analyzer/error/error.dart';
-import 'package:analyzer/src/dart/error/syntactic_errors.dart';
 import 'package:analyzer_utilities/package_root.dart' as pkg_root;
 import 'package:analyzer_utilities/tools.dart';
 import 'package:path/path.dart';
@@ -35,6 +34,72 @@
     ..printSummary();
 }
 
+/// Information about all the classes derived from `ErrorCode` that should be
+/// generated.
+const List<_ErrorClassInfo> _errorClasses = [
+  _ErrorClassInfo(
+      filePath: 'lib/src/analysis_options/error/option_codes.g.dart',
+      name: 'AnalysisOptionsErrorCode',
+      type: 'COMPILE_TIME_ERROR',
+      severity: 'ERROR'),
+  _ErrorClassInfo(
+      filePath: 'lib/src/analysis_options/error/option_codes.g.dart',
+      name: 'AnalysisOptionsHintCode',
+      type: 'HINT',
+      severity: 'INFO'),
+  _ErrorClassInfo(
+      filePath: 'lib/src/analysis_options/error/option_codes.g.dart',
+      name: 'AnalysisOptionsWarningCode',
+      type: 'STATIC_WARNING',
+      severity: 'WARNING'),
+  _ErrorClassInfo(
+      filePath: 'lib/src/error/codes.g.dart',
+      name: 'CompileTimeErrorCode',
+      superclass: 'AnalyzerErrorCode',
+      type: 'COMPILE_TIME_ERROR',
+      extraImports: ['package:analyzer/src/error/analyzer_error_code.dart']),
+  _ErrorClassInfo(
+      filePath: 'lib/src/error/codes.g.dart',
+      name: 'LanguageCode',
+      type: 'COMPILE_TIME_ERROR'),
+  _ErrorClassInfo(
+      filePath: 'lib/src/error/codes.g.dart',
+      name: 'StaticWarningCode',
+      superclass: 'AnalyzerErrorCode',
+      type: 'STATIC_WARNING',
+      severity: 'WARNING',
+      extraImports: ['package:analyzer/src/error/analyzer_error_code.dart']),
+  _ErrorClassInfo(
+      filePath: 'lib/src/dart/error/ffi_code.g.dart',
+      name: 'FfiCode',
+      superclass: 'AnalyzerErrorCode',
+      type: 'COMPILE_TIME_ERROR',
+      extraImports: ['package:analyzer/src/error/analyzer_error_code.dart']),
+  _ErrorClassInfo(
+      filePath: 'lib/src/dart/error/hint_codes.g.dart',
+      name: 'HintCode',
+      superclass: 'AnalyzerErrorCode',
+      type: 'HINT',
+      extraImports: ['package:analyzer/src/error/analyzer_error_code.dart']),
+  _ErrorClassInfo(
+      // TODO(paulberry): merge with `syntactic_errors.g.dart`.
+      filePath: 'lib/src/dart/error/syntactic_errors.analyzer.g.dart',
+      name: 'ParserErrorCode',
+      type: 'SYNTACTIC_ERROR',
+      severity: 'ERROR',
+      includeCfeMessages: true),
+  _ErrorClassInfo(
+      filePath: 'lib/src/manifest/manifest_warning_code.g.dart',
+      name: 'ManifestWarningCode',
+      type: 'STATIC_WARNING',
+      severity: 'WARNING'),
+  _ErrorClassInfo(
+      filePath: 'lib/src/pubspec/pubspec_warning_code.g.dart',
+      name: 'PubspecWarningCode',
+      type: 'STATIC_WARNING',
+      severity: 'WARNING'),
+];
+
 /// A list of all targets generated by this code generator.
 final List<GeneratedContent> allTargets = <GeneratedContent>[
   GeneratedFile('lib/src/dart/error/syntactic_errors.g.dart',
@@ -44,17 +109,172 @@
     codeGenerator.generateFormatCode();
     return codeGenerator.out.toString();
   }),
+  ..._analyzerGeneratedFiles(),
 ];
 
 /// The path to the `analyzer` package.
 final String analyzerPkgPath =
     normalize(join(pkg_root.packageRoot, 'analyzer'));
 
+/// The path to the `front_end` package.
+final String frontEndPkgPath =
+    normalize(join(pkg_root.packageRoot, 'front_end'));
+
+/// Decoded messages from the anlayzer's `messages.yaml` file.
+final Map<String, Map<String, ErrorCodeInfo>> _analyzerMessages =
+    _loadAnalyzerMessages();
+
+/// Generates a list of [GeneratedContent] objects describing all the analyzer
+/// files that need to be generated.
+List<GeneratedContent> _analyzerGeneratedFiles() {
+  var classesByFile = <String, List<_ErrorClassInfo>>{};
+  for (var errorClassInfo in _errorClasses) {
+    (classesByFile[errorClassInfo.filePath] ??= []).add(errorClassInfo);
+  }
+  return [
+    for (var entry in classesByFile.entries)
+      GeneratedFile(entry.key, (String pkgPath) async {
+        final codeGenerator = _AnalyzerErrorGenerator(entry.value);
+        codeGenerator.generate();
+        return codeGenerator.out.toString();
+      })
+  ];
+}
+
+/// Loads analyzer messages from the analyzer's `messages.yaml` file.
+Map<String, Map<String, ErrorCodeInfo>> _loadAnalyzerMessages() {
+  Map<dynamic, dynamic> messagesYaml =
+      loadYaml(File(join(analyzerPkgPath, 'messages.yaml')).readAsStringSync());
+  return decodeAnalyzerMessagesYaml(messagesYaml);
+}
+
+/// Code generator for analyzer error classes.
+class _AnalyzerErrorGenerator {
+  final List<_ErrorClassInfo> errorClasses;
+  final out = StringBuffer('''
+// Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+// THIS FILE IS GENERATED. DO NOT EDIT.
+//
+// Instead modify 'pkg/analyzer/messages.yaml' and run
+// 'dart pkg/analyzer/tool/messages/generate.dart' to update.
+''');
+
+  _AnalyzerErrorGenerator(this.errorClasses);
+
+  void generate() {
+    var imports = {'package:analyzer/error/error.dart'};
+    var parts = <String>{};
+    for (var errorClass in errorClasses) {
+      imports.addAll(errorClass.extraImports);
+      if (errorClass.includeCfeMessages) {
+        parts.add('syntactic_errors.g.dart');
+      }
+    }
+    out.writeln();
+    for (var importPath in imports.toList()..sort()) {
+      out.writeln("import ${json.encode(importPath)};");
+    }
+    if (parts.isNotEmpty) {
+      out.writeln();
+      for (var partPath in parts.toList()..sort()) {
+        out.writeln("part ${json.encode(partPath)};");
+      }
+    }
+    out.writeln();
+    out.writeln("// It is hard to visually separate each code's _doc comment_ "
+        "from its published");
+    out.writeln('// _documentation comment_ when each is written as an '
+        'end-of-line comment.');
+    out.writeln('// ignore_for_file: slash_for_doc_comments');
+    for (var errorClass in errorClasses.toList()
+      ..sort((a, b) => a.name.compareTo(b.name))) {
+      out.writeln();
+      out.write('class ${errorClass.name} extends ${errorClass.superclass} {');
+      for (var entry in _analyzerMessages[errorClass.name]!.entries.toList()
+        ..sort((a, b) => a.key.compareTo(b.key))) {
+        var errorName = entry.key;
+        var errorCodeInfo = entry.value;
+        out.writeln();
+        out.write(errorCodeInfo.toAnalyzerComments(indent: '  '));
+        out.writeln('  static const ${errorClass.name} $errorName =');
+        if (errorCodeInfo.copyFromCfe) {
+          out.writeln('  _$errorName;');
+        } else {
+          out.writeln(errorCodeInfo.toAnalyzerCode(errorClass.name, errorName));
+        }
+      }
+      out.writeln();
+      out.writeln('/// Initialize a newly created error code to have the given '
+          '[name].');
+      out.writeln('const ${errorClass.name}(String name, String message, {');
+      out.writeln('String? correction,');
+      out.writeln('bool hasPublishedDocs = false,');
+      out.writeln('bool isUnresolvedIdentifier = false,');
+      out.writeln('String? uniqueName,');
+      out.writeln('}) : super(');
+      out.writeln('correction: correction,');
+      out.writeln('hasPublishedDocs: hasPublishedDocs,');
+      out.writeln('isUnresolvedIdentifier: isUnresolvedIdentifier,');
+      out.writeln('message: message,');
+      out.writeln('name: name,');
+      out.writeln("uniqueName: '${errorClass.name}.\${uniqueName ?? name}',");
+      out.writeln(');');
+      out.writeln();
+      out.writeln('@override');
+      out.writeln('ErrorSeverity get errorSeverity => '
+          '${errorClass.severityCode};');
+      out.writeln();
+      out.writeln('@override');
+      out.writeln('ErrorType get type => ${errorClass.typeCode};');
+      out.writeln('}');
+    }
+  }
+}
+
+class _ErrorClassInfo {
+  final List<String> extraImports;
+
+  final String filePath;
+
+  final bool includeCfeMessages;
+
+  final String name;
+
+  final String? severity;
+
+  final String superclass;
+
+  final String type;
+
+  const _ErrorClassInfo(
+      {this.extraImports = const [],
+      required this.filePath,
+      this.includeCfeMessages = false,
+      required this.name,
+      this.severity,
+      this.superclass = 'ErrorCode',
+      required this.type});
+
+  String get severityCode {
+    var severity = this.severity;
+    if (severity == null) {
+      return '$typeCode.severity';
+    } else {
+      return 'ErrorSeverity.$severity';
+    }
+  }
+
+  String get typeCode => 'ErrorType.$type';
+}
+
 class _SyntacticErrorGenerator {
-  final Map<String, ErrorCodeInfo> messages;
+  final Map<String, ErrorCodeInfo> cfeMessages;
   final CfeToAnalyzerErrorCodeTables tables;
+  final Map<String, Map<String, ErrorCodeInfo>> analyzerMessages;
   final String errorConverterSource;
-  final String syntacticErrorsSource;
   final String parserSource;
   final out = StringBuffer('''
 //
@@ -63,7 +283,7 @@
 // Instead modify 'pkg/front_end/messages.yaml' and run
 // 'dart pkg/analyzer/tool/messages/generate.dart' to update.
 
-part of 'syntactic_errors.dart';
+part of 'syntactic_errors.analyzer.g.dart';
 
 ''');
 
@@ -72,25 +292,27 @@
     String frontEndSharedPkgPath =
         normalize(join(pkg_root.packageRoot, '_fe_analyzer_shared'));
 
-    Map<dynamic, dynamic> messagesYaml = loadYaml(
+    Map<dynamic, dynamic> cfeMessagesYaml = loadYaml(
         File(join(frontEndPkgPath, 'messages.yaml')).readAsStringSync());
+    Map<dynamic, dynamic> analyzerMessagesYaml = loadYaml(
+        File(join(analyzerPkgPath, 'messages.yaml')).readAsStringSync());
     String errorConverterSource = File(join(analyzerPkgPath,
             joinAll(posix.split('lib/src/fasta/error_converter.dart'))))
         .readAsStringSync();
-    String syntacticErrorsSource = File(join(analyzerPkgPath,
-            joinAll(posix.split('lib/src/dart/error/syntactic_errors.dart'))))
-        .readAsStringSync();
     String parserSource = File(join(frontEndSharedPkgPath,
             joinAll(posix.split('lib/src/parser/parser.dart'))))
         .readAsStringSync();
 
-    return _SyntacticErrorGenerator._(decodeCfeMessagesYaml(messagesYaml),
-        errorConverterSource, syntacticErrorsSource, parserSource);
+    return _SyntacticErrorGenerator._(
+        decodeCfeMessagesYaml(cfeMessagesYaml),
+        decodeAnalyzerMessagesYaml(analyzerMessagesYaml),
+        errorConverterSource,
+        parserSource);
   }
 
-  _SyntacticErrorGenerator._(this.messages, this.errorConverterSource,
-      this.syntacticErrorsSource, this.parserSource)
-      : tables = CfeToAnalyzerErrorCodeTables(messages);
+  _SyntacticErrorGenerator._(this.cfeMessages, this.analyzerMessages,
+      this.errorConverterSource, this.parserSource)
+      : tables = CfeToAnalyzerErrorCodeTables(cfeMessages);
 
   void checkForManualChanges() {
     // Check for ParserErrorCodes that could be removed from
@@ -111,25 +333,9 @@
       print('  $converterCount total');
     }
 
-    // Check that the public ParserErrorCodes have been updated
-    // to reference the generated codes.
-    int publicCount = 0;
-    for (var errorCode in tables.infoToAnalyzerCode.values) {
-      if (!syntacticErrorsSource.contains(' _$errorCode')) {
-        if (publicCount == 0) {
-          print('');
-          print('The following ParserErrorCodes should be updated'
-              ' in syntactic_errors.dart');
-          print('to reference the associated generated error code:');
-        }
-        print('  static const ParserErrorCode $errorCode = _$errorCode;');
-        ++publicCount;
-      }
-    }
-
     // Fail if there are manual changes to be made, but do so
     // in a fire and forget manner so that the files are still generated.
-    if (converterCount > 0 || publicCount > 0) {
+    if (converterCount > 0) {
       print('');
       throw 'Error: missing manual code changes';
     }
@@ -163,16 +369,16 @@
   void printSummary() {
     // Build a map of error message to ParserErrorCode
     final messageToName = <String, String>{};
-    for (ErrorCode errorCode in errorCodeValues) {
-      if (errorCode is ParserErrorCode) {
-        String message = errorCode.message.replaceAll(RegExp(r'\{\d+\}'), '');
-        messageToName[message] = errorCode.name;
-      }
+    for (var entry in analyzerMessages['ParserErrorCode']!.entries) {
+      if (entry.value.copyFromCfe) continue;
+      String message =
+          entry.value.problemMessage!.replaceAll(RegExp(r'\{\d+\}'), '');
+      messageToName[message] = entry.key;
     }
 
     String messageFromEntryTemplate(ErrorCodeInfo entry) {
-      String template = entry.template!;
-      String message = template.replaceAll(RegExp(r'#\w+'), '');
+      String problemMessage = entry.problemMessage!;
+      String message = problemMessage.replaceAll(RegExp(r'#\w+'), '');
       return message;
     }
 
@@ -188,7 +394,7 @@
     // List the ParserErrorCodes that could easily be auto generated
     // but have not been already.
     final analyzerToFasta = <String, List<String>>{};
-    messages.forEach((fastaName, entry) {
+    cfeMessages.forEach((fastaName, entry) {
       final analyzerName = messageToName[messageFromEntryTemplate(entry)];
       if (analyzerName != null) {
         analyzerToFasta
@@ -241,17 +447,17 @@
       final sorted = untranslatedFastaErrorCodes.toList()..sort();
       for (String fastaErrorCode in sorted) {
         String analyzerCode = '';
-        String template = '';
-        var entry = messages[fastaErrorCode];
+        String problemMessage = '';
+        var entry = cfeMessages[fastaErrorCode];
         if (entry != null) {
           // TODO(paulberry): handle multiple analyzer codes
           if (entry.index == null && entry.analyzerCode.length == 1) {
             analyzerCode = entry.analyzerCode.single;
-            template = entry.template!;
+            problemMessage = entry.problemMessage!;
           }
         }
         print('  ${fastaErrorCode.padRight(30)} --> $analyzerCode'
-            '\n      $template');
+            '\n      $problemMessage');
       }
     }
   }
diff --git a/pkg/dds/lib/dap.dart b/pkg/dds/lib/dap.dart
index cb598fe..792e9dd 100644
--- a/pkg/dds/lib/dap.dart
+++ b/pkg/dds/lib/dap.dart
@@ -2,4 +2,12 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
+export 'src/dap/adapters/dart.dart';
+export 'src/dap/adapters/mixins.dart';
+export 'src/dap/exceptions.dart';
+export 'src/dap/logging.dart';
+export 'src/dap/protocol_common.dart';
+export 'src/dap/protocol_generated.dart';
+export 'src/dap/protocol_stream.dart';
 export 'src/dap/server.dart' show DapServer;
+export 'src/dap/stream_transformers.dart';
diff --git a/pkg/dds/lib/src/dap/adapters/dart.dart b/pkg/dds/lib/src/dap/adapters/dart.dart
index a66f36d..cc0e49a 100644
--- a/pkg/dds/lib/src/dap/adapters/dart.dart
+++ b/pkg/dds/lib/src/dap/adapters/dart.dart
@@ -361,6 +361,8 @@
     this.enableAuthCodes = true,
     this.logger,
   }) : super(channel) {
+    channel.closed.then((_) => shutdown());
+
     _isolateManager = IsolateManager(this);
     _converter = ProtocolConverter(this);
   }
diff --git a/pkg/dds/lib/src/dap/adapters/dart_cli_adapter.dart b/pkg/dds/lib/src/dap/adapters/dart_cli_adapter.dart
index a0d23d8..3dca392 100644
--- a/pkg/dds/lib/src/dap/adapters/dart_cli_adapter.dart
+++ b/pkg/dds/lib/src/dap/adapters/dart_cli_adapter.dart
@@ -40,9 +40,7 @@
           enableDds: enableDds,
           enableAuthCodes: enableAuthCodes,
           logger: logger,
-        ) {
-    channel.closed.then((_) => shutdown());
-  }
+        );
 
   /// Whether the VM Service closing should be used as a signal to terminate the
   /// debug session.
diff --git a/pkg/dds/lib/src/dap/adapters/dart_test_adapter.dart b/pkg/dds/lib/src/dap/adapters/dart_test_adapter.dart
index 0417245..9e517da 100644
--- a/pkg/dds/lib/src/dap/adapters/dart_test_adapter.dart
+++ b/pkg/dds/lib/src/dap/adapters/dart_test_adapter.dart
@@ -11,7 +11,6 @@
 import 'package:vm_service/vm_service.dart' as vm;
 
 import '../logging.dart';
-import '../protocol_common.dart';
 import '../protocol_stream.dart';
 import '../stream_transformers.dart';
 import 'dart.dart';
@@ -20,7 +19,7 @@
 /// A DAP Debug Adapter for running and debugging Dart test scripts.
 class DartTestDebugAdapter extends DartDebugAdapter<DartLaunchRequestArguments,
         DartAttachRequestArguments>
-    with PidTracker, VmServiceInfoFileUtils, PackageConfigUtils {
+    with PidTracker, VmServiceInfoFileUtils, PackageConfigUtils, TestAdapter {
   Process? _process;
 
   @override
@@ -41,9 +40,7 @@
           enableDds: enableDds,
           enableAuthCodes: enableAuthCodes,
           logger: logger,
-        ) {
-    channel.closed.then((_) => shutdown());
-  }
+        );
 
   /// Whether the VM Service closing should be used as a signal to terminate the
   /// debug session.
@@ -180,7 +177,7 @@
     // package:test to have captured output and sent it in "print" events).
     try {
       final payload = jsonDecode(data);
-      sendEvent(RawEventBody(payload), eventType: 'dart.testNotification');
+      sendTestEvents(payload);
     } catch (e) {
       sendOutput('stdout', data);
     }
diff --git a/pkg/dds/lib/src/dap/adapters/mixins.dart b/pkg/dds/lib/src/dap/adapters/mixins.dart
index 8c73716..3b9991a 100644
--- a/pkg/dds/lib/src/dap/adapters/mixins.dart
+++ b/pkg/dds/lib/src/dap/adapters/mixins.dart
@@ -10,6 +10,7 @@
 import 'package:pedantic/pedantic.dart';
 
 import '../logging.dart';
+import '../protocol_common.dart';
 
 /// A mixin providing some utility functions for locating/working with
 /// package_config.json files.
@@ -66,6 +67,90 @@
   }
 }
 
+/// A mixin providing some utility functions for adapters that run tests and
+/// provides some basic test reporting since otherwise nothing is printed when
+/// using the JSON test reporter.
+mixin TestAdapter {
+  static const _tick = "✓";
+  static const _cross = "✖";
+
+  /// Test names by testID.
+  ///
+  /// Stored in testStart so that they can be looked up in testDone.
+  Map<int, String> _testNames = {};
+
+  void sendEvent(EventBody body, {String? eventType});
+  void sendOutput(String category, String message);
+
+  void sendTestEvents(Object testNotification) {
+    // Send the JSON package as a raw notification so the client can interpret
+    // the results (for example to populate a test tree).
+    sendEvent(RawEventBody(testNotification),
+        eventType: 'dart.testNotification');
+
+    // Additionally, send a textual output so that the user also has visible
+    // output in the Debug Console.
+    if (testNotification is Map<String, Object?>) {
+      sendTestTextOutput(testNotification);
+    }
+  }
+
+  /// Sends textual output for tests, including pass/fail and test output.
+  ///
+  /// This is sent so that clients that do not handle the package:test JSON
+  /// events still get some useful textual output in their Debug Consoles.
+  void sendTestTextOutput(Map<String, Object?> testNotification) {
+    switch (testNotification['type']) {
+      case 'testStart':
+        // When a test starts, capture its name by ID so we can get it back when
+        // testDone comes.
+        final test = testNotification['test'] as Map<String, Object?>?;
+        if (test != null) {
+          final testID = test['id'] as int?;
+          final testName = test['name'] as String?;
+          if (testID != null && testName != null) {
+            _testNames[testID] = testName;
+          }
+        }
+        break;
+
+      case 'testDone':
+        // Print the status of completed tests with a tick/cross.
+        if (testNotification['hidden'] == true) {
+          break;
+        }
+        final testID = testNotification['testID'] as int?;
+        if (testID != null) {
+          final testName = _testNames[testID];
+          if (testName != null) {
+            final symbol =
+                testNotification['result'] == "success" ? _tick : _cross;
+            sendOutput('console', '$symbol $testName\n');
+          }
+        }
+        break;
+
+      case 'print':
+        final message = testNotification['message'] as String?;
+        if (message != null) {
+          sendOutput('stdout', '${message.trimRight()}\n');
+        }
+        break;
+
+      case 'error':
+        final error = testNotification['error'] as String?;
+        final stack = testNotification['stackTrace'] as String?;
+        if (error != null) {
+          sendOutput('stderr', '${error.trimRight()}\n');
+        }
+        if (stack != null) {
+          sendOutput('stderr', '${stack.trimRight()}\n');
+        }
+        break;
+    }
+  }
+}
+
 /// A mixin providing some utility functions for working with vm-service-info
 /// files such as ensuring a temp folder exists to create them in, and waiting
 /// for the file to become valid parsable JSON.
diff --git a/pkg/dds/test/dap/integration/dart_test_test.dart b/pkg/dds/test/dap/integration/dart_test_test.dart
index 02e980e..de25a7e 100644
--- a/pkg/dds/test/dap/integration/dart_test_test.dart
+++ b/pkg/dds/test/dap/integration/dart_test_test.dart
@@ -43,7 +43,6 @@
           'testDone',
           'testStart',
           'error',
-          'print',
           'testDone',
         ]),
       );
@@ -59,15 +58,14 @@
           testFile.path,
           noDebug: true,
           cwd: dap.testAppDir.path,
+          args: ['--chain-stack-traces'], // to suppress warnings in the output
         ),
       );
 
       // Check the printed output shows that the run finished, and it's exit
       // code (which is 1 due to the failing test).
       final output = outputEvents.output.map((e) => e.output).join();
-      expectLines(output, [
-        'Exited (1).',
-      ]);
+      expectLines(output, simpleTestProgramExpectedOutput);
 
       expectStandardSimpleTestResults(outputEvents);
     });
@@ -86,7 +84,7 @@
           // if it wants to run a subset of tests.
           args: [
             '--plain-name',
-            'passing',
+            'passing test',
           ],
         ),
       );
@@ -96,8 +94,8 @@
           .map((e) => (e['test'] as Map<String, Object?>)['name'])
           .toList();
 
-      expect(testsNames, contains('group passing'));
-      expect(testsNames, isNot(contains('group failing')));
+      expect(testsNames, contains('group 1 passing test'));
+      expect(testsNames, isNot(contains('group 1 failing test')));
     });
 
     test('can hit and resume from a breakpoint', () async {
@@ -108,13 +106,12 @@
       // Collect output and test events while running the script.
       final outputEvents = await client.collectTestOutput(
         // When launching, hit a breakpoint and resume.
-        start: () => client
-            .hitBreakpoint(
-              testFile,
-              breakpointLine,
-              cwd: dap.testAppDir.path,
-            )
-            .then((stop) => client.continue_(stop.threadId!)),
+        start: () => client.hitBreakpoint(
+          testFile,
+          breakpointLine,
+          cwd: dap.testAppDir.path,
+          args: ['--chain-stack-traces'], // to suppress warnings in the output
+        ).then((stop) => client.continue_(stop.threadId!)),
       );
 
       // Check the usual output and test events to ensure breaking/resuming did
@@ -123,7 +120,7 @@
           .map((e) => e.output)
           .skipWhile(dapVmServiceBannerPattern.hasMatch)
           .join();
-      expectLines(output, ['Exited (1).']);
+      expectLines(output, simpleTestProgramExpectedOutput);
       expectStandardSimpleTestResults(outputEvents);
     });
 
diff --git a/pkg/dds/test/dap/integration/test_client.dart b/pkg/dds/test/dap/integration/test_client.dart
index e4e5010..78b145d 100644
--- a/pkg/dds/test/dap/integration/test_client.dart
+++ b/pkg/dds/test/dap/integration/test_client.dart
@@ -484,6 +484,7 @@
     int line, {
     String? condition,
     String? cwd,
+    List<String>? args,
     Future<Response> Function()? launch,
   }) async {
     final stop = expectStop('breakpoint', file: file, line: line);
@@ -496,7 +497,7 @@
           breakpoints: [SourceBreakpoint(line: line, condition: condition)],
         ),
       ),
-      launch?.call() ?? this.launch(file.path, cwd: cwd),
+      launch?.call() ?? this.launch(file.path, cwd: cwd, args: args),
     ], eagerError: true);
 
     return stop;
diff --git a/pkg/dds/test/dap/integration/test_scripts.dart b/pkg/dds/test/dap/integration/test_scripts.dart
index a382781..2b24727 100644
--- a/pkg/dds/test/dap/integration/test_scripts.dart
+++ b/pkg/dds/test/dap/integration/test_scripts.dart
@@ -2,6 +2,8 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
+import 'package:test/test.dart';
+
 /// A marker used in some test scripts/tests for where to set breakpoints.
 const breakpointMarker = '// BREAKPOINT';
 
@@ -106,17 +108,33 @@
   import 'package:test/test.dart';
 
   void main() {
-    group('group', () {
-      test('passing', () {
+    group('group 1', () {
+      test('passing test', () {
         expect(1, equals(1)); $breakpointMarker
       });
-      test('failing', () {
+      test('failing test', () {
         expect(1, equals(2));
       });
     });
   }
 ''';
 
+/// Matches for the expected output of [simpleTestProgram].
+final simpleTestProgramExpectedOutput = [
+  // First test
+  '✓ group 1 passing test',
+  // Second test
+  'Expected: <2>',
+  '  Actual: <1>',
+  // These lines contain paths, so just check the non-path parts.
+  allOf(startsWith('package:test_api'), endsWith('expect')),
+  endsWith('main.<fn>.<fn>'),
+  '✖ group 1 failing test',
+  // Exit
+  '',
+  'Exited (1).',
+];
+
 /// A simple Dart script that throws in user code.
 const simpleThrowingProgram = r'''
   void main(List<String> args) async {
diff --git a/pkg/dds/test/dap/integration/test_support.dart b/pkg/dds/test/dap/integration/test_support.dart
index 4215bd3..9201798 100644
--- a/pkg/dds/test/dap/integration/test_support.dart
+++ b/pkg/dds/test/dap/integration/test_support.dart
@@ -43,12 +43,12 @@
 /// by the VM when not using --write-service-info.
 final vmServiceBannerPattern = RegExp(r'Observatory listening on ([^\s]+)\s');
 
-/// Expects [actual] to equal the lines [expected], ignoring differences in line
-/// endings and trailing whitespace.
-void expectLines(String actual, List<String> expected) {
+/// Expects the lines in [actual] to match the relevant matcher in [expected],
+/// ignoring differences in line endings and trailing whitespace.
+void expectLines(String actual, List<Object> expected) {
   expect(
-    actual.replaceAll('\r\n', '\n').trim(),
-    equals(expected.join('\n').trim()),
+    actual.replaceAll('\r\n', '\n').trim().split('\n'),
+    equals(expected),
   );
 }
 
diff --git a/pkg/front_end/messages.yaml b/pkg/front_end/messages.yaml
index 49d1fa6..d3859ab 100644
--- a/pkg/front_end/messages.yaml
+++ b/pkg/front_end/messages.yaml
@@ -5,9 +5,9 @@
 # Each entry in this map corresponds to a diagnostic message. Ideally, each
 # entry contains three parts:
 #
-# 1. A message template (template).
+# 1. A message template (problemMessage).
 #
-# 2. A suggestion for how to correct the problem (tip).
+# 2. A suggestion for how to correct the problem (correctionMessage).
 #
 # 3. Examples that produce the message (one of expression, statement,
 #    declaration, member, script, bytes or external). Note that 'external'
@@ -53,11 +53,11 @@
 # In some cases a message is internal to the frontend, and no meaningful
 # analyzer code can be provided. In such cases set `frontendInternal: true`.
 #
-# ## Parameter Substitution in Template and Tip
+# ## Parameter Substitution in problemMessage and correctionMessage
 #
-# The fields `template` and `tip` are subject to parameter substitution. When
-# the compiler reports a problem, it may also specify a map with the following
-# keys to be substituted into the message:
+# The fields `problemMessage` and `correctionMessage` are subject to parameter
+# substitution. When the compiler reports a problem, it may also specify a map
+# with the following keys to be substituted into the message:
 #
 # `#character` a Unicode character.
 #
@@ -99,155 +99,155 @@
 # width N and with M fraction digits.
 
 AsciiControlCharacter:
-  template: "The control character #unicode can only be used in strings and comments."
+  problemMessage: "The control character #unicode can only be used in strings and comments."
   analyzerCode: ILLEGAL_CHARACTER
   expression: "\x1b 1"
 
 ConstEvalStartingPoint:
-  template: "Constant evaluation error:"
+  problemMessage: "Constant evaluation error:"
 
 ConstEvalContext:
-  template: "While analyzing:"
+  problemMessage: "While analyzing:"
 
 ConstEvalDuplicateElement:
-  template: "The element '#constant' conflicts with another existing element in the set."
+  problemMessage: "The element '#constant' conflicts with another existing element in the set."
   analyzerCode: EQUAL_ELEMENTS_IN_CONST_SET
 
 ConstEvalDuplicateKey:
-  template: "The key '#constant' conflicts with another existing key in the map."
+  problemMessage: "The key '#constant' conflicts with another existing key in the map."
   analyzerCode: EQUAL_KEYS_IN_CONST_MAP
 
 ConstEvalElementImplementsEqual:
-  template: "The element '#constant' does not have a primitive operator '=='."
+  problemMessage: "The element '#constant' does not have a primitive operator '=='."
   analyzerCode: CONST_SET_ELEMENT_TYPE_IMPLEMENTS_EQUALS
 
 ConstEvalKeyImplementsEqual:
-  template: "The key '#constant' does not have a primitive operator '=='."
+  problemMessage: "The key '#constant' does not have a primitive operator '=='."
   analyzerCode: CONST_MAP_KEY_EXPRESSION_TYPE_IMPLEMENTS_EQUALS
 
 ConstEvalCaseImplementsEqual:
-  template: "Case expression '#constant' does not have a primitive operator '=='."
+  problemMessage: "Case expression '#constant' does not have a primitive operator '=='."
 
 ConstEvalInvalidType:
-  template: "Expected constant '#constant' to be of type '#type', but was of type '#type2'."
+  problemMessage: "Expected constant '#constant' to be of type '#type', but was of type '#type2'."
 
 ConstEvalInvalidBinaryOperandType:
-  template: "Binary operator '#stringOKEmpty' on '#constant' requires operand of type '#type', but was of type '#type2'."
+  problemMessage: "Binary operator '#stringOKEmpty' on '#constant' requires operand of type '#type', but was of type '#type2'."
 
 ConstEvalInvalidEqualsOperandType:
-  template: "Binary operator '==' requires receiver constant '#constant' of type 'Null', 'bool', 'int', 'double', or 'String', but was of type '#type'."
+  problemMessage: "Binary operator '==' requires receiver constant '#constant' of type 'Null', 'bool', 'int', 'double', or 'String', but was of type '#type'."
 
 ConstEvalZeroDivisor:
-  template: "Binary operator '#string' on '#string2' requires non-zero divisor, but divisor was '0'."
+  problemMessage: "Binary operator '#string' on '#string2' requires non-zero divisor, but divisor was '0'."
   analyzerCode: CONST_EVAL_THROWS_IDBZE
 
 ConstEvalNegativeShift:
-  template: "Binary operator '#string' on '#string2' requires non-negative operand, but was '#string3'."
+  problemMessage: "Binary operator '#string' on '#string2' requires non-negative operand, but was '#string3'."
 
 ConstEvalTruncateError:
-  template: "Binary operator '#string ~/ #string2' results is Infinity or NaN."
+  problemMessage: "Binary operator '#string ~/ #string2' results is Infinity or NaN."
 
 ConstEvalNonNull:
-  template: "Constant expression must be non-null."
+  problemMessage: "Constant expression must be non-null."
 
 ConstEvalGetterNotFound:
-  template: "Variable get not found: '#nameOKEmpty'"
+  problemMessage: "Variable get not found: '#nameOKEmpty'"
 
 ConstEvalInvalidMethodInvocation:
-  template: "The method '#stringOKEmpty' can't be invoked on '#constant' in a constant expression."
+  problemMessage: "The method '#stringOKEmpty' can't be invoked on '#constant' in a constant expression."
   analyzerCode: UNDEFINED_OPERATOR
 
 ConstEvalInvalidPropertyGet:
-  template: "The property '#stringOKEmpty' can't be accessed on '#constant' in a constant expression."
+  problemMessage: "The property '#stringOKEmpty' can't be accessed on '#constant' in a constant expression."
   analyzerCode: CONST_EVAL_THROWS_EXCEPTION
 
 ConstEvalInvalidStringInterpolationOperand:
-  template: |
+  problemMessage: |
     The constant value '#constant' can't be used as part of a string interpolation in a constant expression.
     Only values of type 'null', 'bool', 'int', 'double', or 'String' can be used.
   analyzerCode: CONST_EVAL_TYPE_BOOL_NUM_STRING
 
 ConstEvalInvalidStaticInvocation:
-  template: "The invocation of '#nameOKEmpty' is not allowed in a constant expression."
+  problemMessage: "The invocation of '#nameOKEmpty' is not allowed in a constant expression."
   analyzerCode: CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE
 
 ConstEvalInvalidSymbolName:
-  template: "The symbol name must be a valid public Dart member name, public constructor name, or library name, optionally qualified, but was '#constant'."
+  problemMessage: "The symbol name must be a valid public Dart member name, public constructor name, or library name, optionally qualified, but was '#constant'."
   analyzerCode: CONST_EVAL_THROWS_EXCEPTION
 
 ConstEvalFailedAssertion:
-  template: "This assertion failed."
+  problemMessage: "This assertion failed."
   analyzerCode: CONST_EVAL_THROWS_EXCEPTION
 
 ConstEvalFailedAssertionWithMessage:
-  template: "This assertion failed with message: #stringOKEmpty"
+  problemMessage: "This assertion failed with message: #stringOKEmpty"
   analyzerCode: CONST_EVAL_THROWS_EXCEPTION
 
 ConstEvalNonConstantVariableGet:
-  template: "The variable '#nameOKEmpty' is not a constant, only constant expressions are allowed."
+  problemMessage: "The variable '#nameOKEmpty' is not a constant, only constant expressions are allowed."
   analyzerCode: NON_CONSTANT_VALUE_IN_INITIALIZER
 
 ConstEvalDeferredLibrary:
-  template: >
+  problemMessage: >
     '#nameOKEmpty' can't be used in a constant expression because it's marked as
     'deferred' which means it isn't available until loaded.
-  tip: >
+  correctionMessage: >
     Try moving the constant from the deferred library, or removing 'deferred'
     from the import.
   analyzerCode: INVALID_ANNOTATION_CONSTANT_VALUE_FROM_DEFERRED_LIBRARY
 
 ConstEvalFreeTypeParameter:
-  template: "The type '#type' is not a constant because it depends on a type parameter, only instantiated types are allowed."
+  problemMessage: "The type '#type' is not a constant because it depends on a type parameter, only instantiated types are allowed."
 
 ConstEvalCircularity:
-  template: "Constant expression depends on itself."
+  problemMessage: "Constant expression depends on itself."
   analyzerCode: RECURSIVE_COMPILE_TIME_CONSTANT
 
 ConstEvalNullValue:
-  template: "Null value during constant evaluation."
+  problemMessage: "Null value during constant evaluation."
   analyzerCode: CONST_EVAL_THROWS_EXCEPTION
 
 ConstEvalNotListOrSetInSpread:
-  template: "Only lists and sets can be used in spreads in constant lists and sets."
+  problemMessage: "Only lists and sets can be used in spreads in constant lists and sets."
   analyzerCode: CONST_SPREAD_EXPECTED_LIST_OR_SET
 
 ConstEvalNotMapInSpread:
-  template: "Only maps can be used in spreads in constant maps."
+  problemMessage: "Only maps can be used in spreads in constant maps."
   analyzerCode: CONST_SPREAD_EXPECTED_MAP
 
 ConstEvalExtension:
-  template: "Extension operations can't be used in constant expressions."
+  problemMessage: "Extension operations can't be used in constant expressions."
   analyzerCode: NOT_CONSTANT_EXPRESSION
 
 ConstEvalExternalConstructor:
-  template: "External constructors can't be evaluated in constant expressions."
+  problemMessage: "External constructors can't be evaluated in constant expressions."
 
 ConstEvalExternalFactory:
-  template: "External factory constructors can't be evaluated in constant expressions."
+  problemMessage: "External factory constructors can't be evaluated in constant expressions."
 
 ConstEvalUnevaluated:
-  template: "Couldn't evaluate constant expression."
+  problemMessage: "Couldn't evaluate constant expression."
 
 ConstEvalError:
-  template: "Error evaluating constant expression: #string"
+  problemMessage: "Error evaluating constant expression: #string"
 
 ConstEvalUnhandledCoreException:
-  template: "Unhandled core exception: #stringOKEmpty"
+  problemMessage: "Unhandled core exception: #stringOKEmpty"
 
 ConstEvalUnhandledException:
-  template: "Unhandled exception: #constant"
+  problemMessage: "Unhandled exception: #constant"
 
 NotConstantExpression:
-  template: "#string is not a constant expression."
+  problemMessage: "#string is not a constant expression."
   analyzerCode: NOT_CONSTANT_EXPRESSION
 
 NotAConstantExpression:
-  template: "Not a constant expression."
+  problemMessage: "Not a constant expression."
   analyzerCode: NOT_CONSTANT_EXPRESSION
 
 MissingExplicitConst:
-  template: "Constant expression expected."
-  tip: "Try inserting 'const'."
+  problemMessage: "Constant expression expected."
+  correctionMessage: "Try inserting 'const'."
   analyzerCode: NOT_CONSTANT_EXPRESSION
   script: >
     class A {
@@ -256,48 +256,48 @@
     }
 
 NonAsciiIdentifier:
-  template: "The non-ASCII character '#character' (#unicode) can't be used in identifiers, only in strings and comments."
-  tip: "Try using an US-ASCII letter, a digit, '_' (an underscore), or '$' (a dollar sign)."
+  problemMessage: "The non-ASCII character '#character' (#unicode) can't be used in identifiers, only in strings and comments."
+  correctionMessage: "Try using an US-ASCII letter, a digit, '_' (an underscore), or '$' (a dollar sign)."
   analyzerCode: ILLEGAL_CHARACTER
   expression: "å"
 
 NonAsciiWhitespace:
-  template: "The non-ASCII space character #unicode can only be used in strings and comments."
+  problemMessage: "The non-ASCII space character #unicode can only be used in strings and comments."
   analyzerCode: ILLEGAL_CHARACTER
   expression: "\u2028 1"
 
 Encoding:
-  template: "Unable to decode bytes as UTF-8."
+  problemMessage: "Unable to decode bytes as UTF-8."
   bytes: [255]
 
 ExperimentNotEnabled:
   index: 48
-  template: "This requires the '#string' language feature to be enabled."
-  tip: "Try updating your pubspec.yaml to set the minimum SDK constraint to #string2 or higher, and running 'pub get'."
+  problemMessage: "This requires the '#string' language feature to be enabled."
+  correctionMessage: "Try updating your pubspec.yaml to set the minimum SDK constraint to #string2 or higher, and running 'pub get'."
   analyzerCode: ParserErrorCode.EXPERIMENT_NOT_ENABLED
 
 ExperimentNotEnabledNoFlag:
-  template: "This requires the null safety language feature, which is experimental."
-  tip: "You can enable the experiment using the '--enable-experiment=non-nullable' command line option."
+  problemMessage: "This requires the null safety language feature, which is experimental."
+  correctionMessage: "You can enable the experiment using the '--enable-experiment=non-nullable' command line option."
   analyzerCode: ParserErrorCode.EXPERIMENT_NOT_ENABLED
 
 ExperimentNotEnabledNoFlagInvalidLanguageVersion:
-  template: "This requires the null safety language feature, which is experimental and requires language version of #string2 or higher."
-  tip: "You can enable the experiment using the '--enable-experiment=non-nullable' command line option."
+  problemMessage: "This requires the null safety language feature, which is experimental and requires language version of #string2 or higher."
+  correctionMessage: "You can enable the experiment using the '--enable-experiment=non-nullable' command line option."
   analyzerCode: ParserErrorCode.EXPERIMENT_NOT_ENABLED
 
 ExperimentDisabled:
-  template: "This requires the '#string' language feature to be enabled."
-  tip: "The feature is on by default but is currently disabled, maybe because the '--enable-experiment=no-#string' command line option is passed."
+  problemMessage: "This requires the '#string' language feature to be enabled."
+  correctionMessage: "The feature is on by default but is currently disabled, maybe because the '--enable-experiment=no-#string' command line option is passed."
   analyzerCode: ParserErrorCode.EXPERIMENT_NOT_ENABLED
 
 ExperimentDisabledInvalidLanguageVersion:
-  template: "This requires the null safety language feature, which requires language version of #string2 or higher."
+  problemMessage: "This requires the null safety language feature, which requires language version of #string2 or higher."
   analyzerCode: ParserErrorCode.EXPERIMENT_NOT_ENABLED
 
 EmptyNamedParameterList:
-  template: "Named parameter lists cannot be empty."
-  tip: "Try adding a named parameter to the list."
+  problemMessage: "Named parameter lists cannot be empty."
+  correctionMessage: "Try adding a named parameter to the list."
   analyzerCode: "MISSING_IDENTIFIER"
   script: >
     foo({}) {}
@@ -307,8 +307,8 @@
     }
 
 EmptyOptionalParameterList:
-  template: "Optional parameter lists cannot be empty."
-  tip: "Try adding an optional parameter to the list."
+  problemMessage: "Optional parameter lists cannot be empty."
+  correctionMessage: "Try adding an optional parameter to the list."
   analyzerCode: "MISSING_IDENTIFIER"
   script: >
     foo([]) {}
@@ -319,38 +319,38 @@
 
 ExpectedElseOrComma:
   index: 46
-  template: "Expected 'else' or comma."
+  problemMessage: "Expected 'else' or comma."
   analyzerCode: ParserErrorCode.EXPECTED_ELSE_OR_COMMA
 
 ExpectedBlock:
-  template: "Expected a block."
-  tip: "Try adding {}."
+  problemMessage: "Expected a block."
+  correctionMessage: "Try adding {}."
   analyzerCode: EXPECTED_TOKEN
   script: "try finally {}"
 
 ExpectedBlockToSkip:
-  template: "Expected a function body or '=>'."
+  problemMessage: "Expected a function body or '=>'."
   # TODO(ahe): In some scenarios, we can suggest removing the 'static' keyword.
-  tip: "Try adding {}."
+  correctionMessage: "Try adding {}."
   analyzerCode: MISSING_FUNCTION_BODY
   script: "main();"
 
 ExpectedBody:
-  template: "Expected a function body or '=>'."
+  problemMessage: "Expected a function body or '=>'."
   # TODO(ahe): In some scenarios, we can suggest removing the 'static' keyword.
-  tip: "Try adding {}."
+  correctionMessage: "Try adding {}."
   analyzerCode: MISSING_FUNCTION_BODY
   script: "main();"
 
 ExpectedStatement:
   index: 29
-  template: "Expected a statement."
+  problemMessage: "Expected a statement."
   analyzerCode: ParserErrorCode.MISSING_STATEMENT
   statement: "void;"
 
 ExpectedButGot:
   # Also see ExpectedAfterButGot and ExpectedInstead
-  template: "Expected '#string' before this."
+  problemMessage: "Expected '#string' before this."
   # Consider the second example below: the parser expects a ')' before 'y', but
   # a ',' would also have worked. We don't have enough information to give a
   # good suggestion.
@@ -361,7 +361,7 @@
 
 ExpectedAfterButGot:
   # Also see ExpectedButGot and ExpectedInstead
-  template: "Expected '#string' after this."
+  problemMessage: "Expected '#string' after this."
   # This is an alternative to ExpectedButGot when it's better for the error to be
   # associated with the last consumed token rather than the token being parsed.
   # Doing so can make it cognitively easier for the user to understand and fix.
@@ -387,7 +387,7 @@
 ExpectedInstead:
   # Also see ExpectedButGot and ExpectedAfterButGot
   index: 41
-  template: "Expected '#string' instead of this."
+  problemMessage: "Expected '#string' instead of this."
   # This is an alternative to ExpectedButGot when the last consumed token
   # should be replaced with a different token.
   #
@@ -409,14 +409,14 @@
 
 MultipleLibraryDirectives:
   index: 27
-  template: "Only one library directive may be declared in a file."
-  tip: "Try removing all but one of the library directives."
+  problemMessage: "Only one library directive may be declared in a file."
+  correctionMessage: "Try removing all but one of the library directives."
   analyzerCode: ParserErrorCode.MULTIPLE_LIBRARY_DIRECTIVES
 
 MultipleExtends:
   index: 28
-  template: "Each class definition can have at most one extends clause."
-  tip: "Try choosing one superclass and define your class to implement (or mix in) the others."
+  problemMessage: "Each class definition can have at most one extends clause."
+  correctionMessage: "Try choosing one superclass and define your class to implement (or mix in) the others."
   analyzerCode: ParserErrorCode.MULTIPLE_EXTENDS_CLAUSES
   script:
     - "class B{} class C{} class A extends B extends C {}"
@@ -424,43 +424,43 @@
 
 MultipleWith:
   index: 24
-  template: "Each class definition can have at most one with clause."
-  tip: "Try combining all of the with clauses into a single clause."
+  problemMessage: "Each class definition can have at most one with clause."
+  correctionMessage: "Try combining all of the with clauses into a single clause."
   analyzerCode: ParserErrorCode.MULTIPLE_WITH_CLAUSES
   script: "class A extends B with C, D with E {}"
 
 WithBeforeExtends:
   index: 11
-  template: "The extends clause must be before the with clause."
-  tip: "Try moving the extends clause before the with clause."
+  problemMessage: "The extends clause must be before the with clause."
+  correctionMessage: "Try moving the extends clause before the with clause."
   analyzerCode: ParserErrorCode.WITH_BEFORE_EXTENDS
   script: "class B {} class C {} class A with B extends C {}"
 
 ImplementsBeforeExtends:
   index: 44
-  template: "The extends clause must be before the implements clause."
-  tip: "Try moving the extends clause before the implements clause."
+  problemMessage: "The extends clause must be before the implements clause."
+  correctionMessage: "Try moving the extends clause before the implements clause."
   analyzerCode: ParserErrorCode.IMPLEMENTS_BEFORE_EXTENDS
   script: "class A implements B extends C {}"
 
 ImplementsBeforeOn:
   index: 43
-  template: "The on clause must be before the implements clause."
-  tip: "Try moving the on clause before the implements clause."
+  problemMessage: "The on clause must be before the implements clause."
+  correctionMessage: "Try moving the on clause before the implements clause."
   analyzerCode: ParserErrorCode.IMPLEMENTS_BEFORE_ON
   script: "mixin A implements B on C {}"
 
 ImplementsBeforeWith:
   index: 42
-  template: "The with clause must be before the implements clause."
-  tip: "Try moving the with clause before the implements clause."
+  problemMessage: "The with clause must be before the implements clause."
+  correctionMessage: "Try moving the with clause before the implements clause."
   analyzerCode: ParserErrorCode.IMPLEMENTS_BEFORE_WITH
   script: "class A extends B implements C with D {}"
 
 ImplementsRepeated:
-  template: "'#name' can only be implemented once."
+  problemMessage: "'#name' can only be implemented once."
   analyzerCode: IMPLEMENTS_REPEATED
-  tip: "Try removing #count of the occurrences."
+  correctionMessage: "Try removing #count of the occurrences."
   script:
     - >-
       abstract class I {}
@@ -468,65 +468,65 @@
       class K implements I, J, I {}
 
 ImplementsSuperClass:
-  template: "'#name' can't be used in both 'extends' and 'implements' clauses."
+  problemMessage: "'#name' can't be used in both 'extends' and 'implements' clauses."
   analyzerCode: IMPLEMENTS_SUPER_CLASS
-  tip: "Try removing one of the occurrences."
+  correctionMessage: "Try removing one of the occurrences."
   script:
     - >-
       abstract class A {}
       class C extends A implements A {}
 
 MultipleImplements:
-  template: "Each class definition can have at most one implements clause."
-  tip: "Try combining all of the implements clauses into a single clause."
+  problemMessage: "Each class definition can have at most one implements clause."
+  correctionMessage: "Try combining all of the implements clauses into a single clause."
   analyzerCode: MULTIPLE_IMPLEMENTS_CLAUSES
   script: "class A implements B implements C, D {}"
 
 MultipleOnClauses:
   index: 26
-  template: "Each mixin definition can have at most one on clause."
-  tip: "Try combining all of the on clauses into a single clause."
+  problemMessage: "Each mixin definition can have at most one on clause."
+  correctionMessage: "Try combining all of the on clauses into a single clause."
   analyzerCode: ParserErrorCode.MULTIPLE_ON_CLAUSES
   script: "mixin A on B on C, D {}"
 
 ExtendsFutureOr:
-  template: "The type 'FutureOr' can't be used in an 'extends' clause."
+  problemMessage: "The type 'FutureOr' can't be used in an 'extends' clause."
 
 ImplementsFutureOr:
-  template: "The type 'FutureOr' can't be used in an 'implements' clause."
+  problemMessage: "The type 'FutureOr' can't be used in an 'implements' clause."
 
 ExtendsNever:
-  template: "The type 'Never' can't be used in an 'extends' clause."
+  problemMessage: "The type 'Never' can't be used in an 'extends' clause."
 
 ImplementsNever:
-  template: "The type 'Never' can't be used in an 'implements' clause."
+  problemMessage: "The type 'Never' can't be used in an 'implements' clause."
 
 ExtendsVoid:
-  template: "The type 'void' can't be used in an 'extends' clause."
+  problemMessage: "The type 'void' can't be used in an 'extends' clause."
 
 ImplementsVoid:
-  template: "The type 'void' can't be used in an 'implements' clause."
+  problemMessage: "The type 'void' can't be used in an 'implements' clause."
 
 ExpectedClassOrMixinBody:
   index: 8
-  template: "A #string must have a body, even if it is empty."
-  tip: "Try adding an empty body."
+  problemMessage: "A #string must have a body, even if it is empty."
+  correctionMessage: "Try adding an empty body."
   analyzerCode: ParserErrorCode.EXPECTED_BODY
 
 ExpectedDeclaration:
-  template: "Expected a declaration, but got '#lexeme'."
+  problemMessage: "Expected a declaration, but got '#lexeme'."
   analyzerCode: EXPECTED_EXECUTABLE
 
 ExpectedClassMember:
-  template: "Expected a class member, but got '#lexeme'."
+  problemMessage: "Expected a class member, but got '#lexeme'."
   analyzerCode: EXPECTED_CLASS_MEMBER
 
 ExpectedFunctionBody:
-  template: "Expected a function body, but got '#lexeme'."
+  problemMessage: "Expected a function body, but got '#lexeme'."
   analyzerCode: MISSING_FUNCTION_BODY
 
 ExpectedHexDigit:
-  template: "A hex digit (0-9 or A-F) must follow '0x'."
+  problemMessage: "A hex digit (0-9 or A-F) must follow '0x'."
   # No tip, seems obvious from the error message.
   analyzerCode: MISSING_HEX_DIGIT
   script: >
@@ -535,68 +535,68 @@
     }
 
 ExpectedIdentifier:
-  template: "Expected an identifier, but got '#lexeme'."
-  tip: "Try inserting an identifier before '#lexeme'."
+  problemMessage: "Expected an identifier, but got '#lexeme'."
+  correctionMessage: "Try inserting an identifier before '#lexeme'."
   analyzerCode: MISSING_IDENTIFIER
   script: "var = 42;"
 
 ExpectedIdentifierButGotKeyword:
-  template: "'#lexeme' can't be used as an identifier because it's a keyword."
-  tip: "Try renaming this to be an identifier that isn't a keyword."
+  problemMessage: "'#lexeme' can't be used as an identifier because it's a keyword."
+  correctionMessage: "Try renaming this to be an identifier that isn't a keyword."
   index: 113
   analyzerCode: ParserErrorCode.EXPECTED_IDENTIFIER_BUT_GOT_KEYWORD
   script: "var default = 42;"
 
 EqualityCannotBeEqualityOperand:
   index: 1
-  template: "A comparison expression can't be an operand of another comparison expression."
-  tip: "Try putting parentheses around one of the comparisons."
+  problemMessage: "A comparison expression can't be an operand of another comparison expression."
+  correctionMessage: "Try putting parentheses around one of the comparisons."
   analyzerCode: ParserErrorCode.EQUALITY_CANNOT_BE_EQUALITY_OPERAND
   script:
     - "main() { var b = a < b < c; }"
     - "main() { var b = a == b != c; }"
 
 ExpectedOpenParens:
-  template: "Expected '('."
+  problemMessage: "Expected '('."
 
 ExpectedString:
-  template: "Expected a String, but got '#lexeme'."
+  problemMessage: "Expected a String, but got '#lexeme'."
   analyzerCode: EXPECTED_STRING_LITERAL
 
 ExpectedToken:
-  template: "Expected to find '#string'."
+  problemMessage: "Expected to find '#string'."
   analyzerCode: EXPECTED_TOKEN
 
 ExpectedType:
-  template: "Expected a type, but got '#lexeme'."
+  problemMessage: "Expected a type, but got '#lexeme'."
   analyzerCode: EXPECTED_TYPE_NAME
 
 VarAsTypeName:
   index: 61
-  template: "The keyword 'var' can't be used as a type name."
+  problemMessage: "The keyword 'var' can't be used as a type name."
   analyzerCode: ParserErrorCode.VAR_AS_TYPE_NAME
   script:
     - "class A { Map<String, var> m; }"
 
 MissingExpressionInThrow:
   index: 32
-  template: "Missing expression after 'throw'."
-  tip: "Add an expression after 'throw' or use 'rethrow' to throw a caught exception"
+  problemMessage: "Missing expression after 'throw'."
+  correctionMessage: "Add an expression after 'throw' or use 'rethrow' to throw a caught exception"
   analyzerCode: ParserErrorCode.MISSING_EXPRESSION_IN_THROW
   statement:
     - "throw;"
 
 MissingConstFinalVarOrType:
   index: 33
-  template: "Variables must be declared using the keywords 'const', 'final', 'var' or a type name."
-  tip: "Try adding the name of the type of the variable or the keyword 'var'."
+  problemMessage: "Variables must be declared using the keywords 'const', 'final', 'var' or a type name."
+  correctionMessage: "Try adding the name of the type of the variable or the keyword 'var'."
   analyzerCode: ParserErrorCode.MISSING_CONST_FINAL_VAR_OR_TYPE
   script:
     - "class C { static f; }"
 
 FunctionTypedParameterVar:
-  template: "Function-typed parameters can't specify 'const', 'final' or 'var' in place of a return type."
-  tip: "Try replacing the keyword with a return type."
+  problemMessage: "Function-typed parameters can't specify 'const', 'final' or 'var' in place of a return type."
+  correctionMessage: "Try replacing the keyword with a return type."
   analyzerCode: FUNCTION_TYPED_PARAMETER_VAR
   script:
     - "void f(const x()) {}"
@@ -605,8 +605,8 @@
 
 AbstractClassMember:
   index: 51
-  template: "Members of classes can't be declared to be 'abstract'."
-  tip: "Try removing the 'abstract' keyword. You can add the 'abstract' keyword before the class declaration."
+  problemMessage: "Members of classes can't be declared to be 'abstract'."
+  correctionMessage: "Try removing the 'abstract' keyword. You can add the 'abstract' keyword before the class declaration."
   analyzerCode: ParserErrorCode.ABSTRACT_CLASS_MEMBER
   script:
     - |
@@ -626,9 +626,9 @@
 
 AbstractExternalField:
   index: 110
-  template: "Fields can't be declared both 'abstract' and 'external'."
+  problemMessage: "Fields can't be declared both 'abstract' and 'external'."
   analyzerCode: ParserErrorCode.ABSTRACT_EXTERNAL_FIELD
-  tip: "Try removing the 'abstract' or 'external' keyword."
+  correctionMessage: "Try removing the 'abstract' or 'external' keyword."
   configuration: nnbd-strong
   script:
     - "abstract class C {abstract external var f;}"
@@ -636,31 +636,31 @@
 
 AbstractStaticField:
   index: 107
-  template: "Static fields can't be declared 'abstract'."
+  problemMessage: "Static fields can't be declared 'abstract'."
   analyzerCode: ParserErrorCode.ABSTRACT_STATIC_FIELD
-  tip: "Try removing the 'abstract' or 'static' keyword."
+  correctionMessage: "Try removing the 'abstract' or 'static' keyword."
   configuration: nnbd-strong
   script:
     - "abstract class C {abstract static var f;}"
 
 AbstractExtensionField:
-  template: "Extension fields can't be declared 'abstract'."
-  tip: "Try removing the 'abstract' keyword."
+  problemMessage: "Extension fields can't be declared 'abstract'."
+  correctionMessage: "Try removing the 'abstract' keyword."
 # Separate class and extension field handling to to support this.
 #  configuration: nnbd-strong
 #  script:
 #    - "extension C on int {abstract static var f;}"
 
 AbstractFieldInitializer:
-  template: "Abstract fields cannot have initializers."
-  tip: "Try removing the initializer or the 'abstract' keyword."
+  problemMessage: "Abstract fields cannot have initializers."
+  correctionMessage: "Try removing the initializer or the 'abstract' keyword."
   configuration: nnbd-strong
   script:
     - "abstract class C {abstract var f = 0;}"
 
 AbstractFieldConstructorInitializer:
-  template: "Abstract fields cannot have initializers."
-  tip: "Try removing the field initializer or the 'abstract' keyword from the field declaration."
+  problemMessage: "Abstract fields cannot have initializers."
+  correctionMessage: "Try removing the field initializer or the 'abstract' keyword from the field declaration."
   configuration: nnbd-strong
   script:
     - "abstract class C {abstract var f; C(this.f);}"
@@ -668,41 +668,41 @@
 
 AbstractLateField:
   index: 108
-  template: "Abstract fields cannot be late."
+  problemMessage: "Abstract fields cannot be late."
   analyzerCode: ParserErrorCode.ABSTRACT_LATE_FIELD
-  tip: "Try removing the 'abstract' or 'late' keyword."
+  correctionMessage: "Try removing the 'abstract' or 'late' keyword."
   configuration: nnbd-strong
   script:
     - "abstract class C {abstract late var f;}"
 
 ClassInClass:
   index: 53
-  template: "Classes can't be declared inside other classes."
-  tip: "Try moving the class to the top-level."
+  problemMessage: "Classes can't be declared inside other classes."
+  correctionMessage: "Try moving the class to the top-level."
   analyzerCode: ParserErrorCode.CLASS_IN_CLASS
   script:
     - "class C { class B {} }"
 
 EnumInClass:
   index: 74
-  template: "Enums can't be declared inside classes."
-  tip: "Try moving the enum to the top-level."
+  problemMessage: "Enums can't be declared inside classes."
+  correctionMessage: "Try moving the enum to the top-level."
   analyzerCode: ParserErrorCode.ENUM_IN_CLASS
   script:
     - "class Foo { enum Bar { Bar1, Bar2, Bar3 } }"
 
 TypedefInClass:
   index: 7
-  template: "Typedefs can't be declared inside classes."
-  tip: "Try moving the typedef to the top-level."
+  problemMessage: "Typedefs can't be declared inside classes."
+  correctionMessage: "Try moving the typedef to the top-level."
   analyzerCode: ParserErrorCode.TYPEDEF_IN_CLASS
   script:
     - "abstract class C { typedef int F(int x); }"
 
 CovariantMember:
   index: 67
-  template: "Getters, setters and methods can't be declared to be 'covariant'."
-  tip: "Try removing the 'covariant' keyword."
+  problemMessage: "Getters, setters and methods can't be declared to be 'covariant'."
+  correctionMessage: "Try removing the 'covariant' keyword."
   analyzerCode: ParserErrorCode.COVARIANT_MEMBER
   script:
     - "static covariant get x => 0;"
@@ -710,8 +710,8 @@
 
 VarReturnType:
   index: 12
-  template: "The return type can't be 'var'."
-  tip: "Try removing the keyword 'var', or replacing it with the name of the return type."
+  problemMessage: "The return type can't be 'var'."
+  correctionMessage: "Try removing the keyword 'var', or replacing it with the name of the return type."
   analyzerCode: ParserErrorCode.VAR_RETURN_TYPE
   script:
     - "class C { var m() {} }"
@@ -719,15 +719,15 @@
 
 ConstClass:
   index: 60
-  template: "Classes can't be declared to be 'const'."
-  tip: "Try removing the 'const' keyword. If you're trying to indicate that instances of the class can be constants, place the 'const' keyword on  the class' constructor(s)."
+  problemMessage: "Classes can't be declared to be 'const'."
+  correctionMessage: "Try removing the 'const' keyword. If you're trying to indicate that instances of the class can be constants, place the 'const' keyword on  the class' constructor(s)."
   analyzerCode: ParserErrorCode.CONST_CLASS
   script: "const class C {}"
 
 ConstAndFinal:
   index: 58
-  template: "Members can't be declared to be both 'const' and 'final'."
-  tip: "Try removing either the 'const' or 'final' keyword."
+  problemMessage: "Members can't be declared to be both 'const' and 'final'."
+  correctionMessage: "Try removing either the 'const' or 'final' keyword."
   analyzerCode: ParserErrorCode.CONST_AND_FINAL
   declaration:
     - "class C { static const final int x = 5; }"
@@ -737,8 +737,8 @@
 
 ConflictingModifiers:
   index: 59
-  template: "Members can't be declared to be both '#string' and '#string2'."
-  tip: "Try removing one of the keywords."
+  problemMessage: "Members can't be declared to be both '#string' and '#string2'."
+  correctionMessage: "Try removing one of the keywords."
   analyzerCode: ParserErrorCode.CONFLICTING_MODIFIERS
   script:
     - "class C { const var x; }"
@@ -746,8 +746,8 @@
 
 ConstFactory:
   index: 62
-  template: "Only redirecting factory constructors can be declared to be 'const'."
-  tip: "Try removing the 'const' keyword, or replacing the body with '=' followed by a valid target."
+  problemMessage: "Only redirecting factory constructors can be declared to be 'const'."
+  correctionMessage: "Try removing the 'const' keyword, or replacing the body with '=' followed by a valid target."
   analyzerCode: ParserErrorCode.CONST_FACTORY
   script: |
     class C {
@@ -756,8 +756,8 @@
     }
 
 ConstFactoryRedirectionToNonConst:
-  template: "Constant factory constructor can't delegate to a non-constant constructor."
-  tip: "Try redirecting to a different constructor or marking the target constructor 'const'."
+  problemMessage: "Constant factory constructor can't delegate to a non-constant constructor."
+  correctionMessage: "Try redirecting to a different constructor or marking the target constructor 'const'."
   analyzerCode: REDIRECT_TO_NON_CONST_CONSTRUCTOR
   script:
     - >-
@@ -767,19 +767,19 @@
       }
 
 NonConstFactory:
-  template: "Cannot invoke a non-'const' factory where a const expression is expected."
-  tip: "Try using a constructor or factory that is 'const'."
+  problemMessage: "Cannot invoke a non-'const' factory where a const expression is expected."
+  correctionMessage: "Try using a constructor or factory that is 'const'."
   analyzerCode: NOT_CONSTANT_EXPRESSION
 
 NonConstConstructor:
-  template: "Cannot invoke a non-'const' constructor where a const expression is expected."
-  tip: "Try using a constructor or factory that is 'const'."
+  problemMessage: "Cannot invoke a non-'const' constructor where a const expression is expected."
+  correctionMessage: "Try using a constructor or factory that is 'const'."
   analyzerCode: NOT_CONSTANT_EXPRESSION
 
 ModifierOutOfOrder:
   index: 56
-  template: "The modifier '#string' should be before the modifier '#string2'."
-  tip: "Try re-ordering the modifiers."
+  problemMessage: "The modifier '#string' should be before the modifier '#string2'."
+  correctionMessage: "Try re-ordering the modifiers."
   analyzerCode: ParserErrorCode.MODIFIER_OUT_OF_ORDER
   script:
     - "class C { factory const C() = prefix.B.foo; }"
@@ -791,8 +791,8 @@
 
 TypeBeforeFactory:
   index: 57
-  template: "Factory constructors cannot have a return type."
-  tip: "Try removing the type appearing before 'factory'."
+  problemMessage: "Factory constructors cannot have a return type."
+  correctionMessage: "Try removing the type appearing before 'factory'."
   analyzerCode: ParserErrorCode.TYPE_BEFORE_FACTORY
   script: |
     class C {
@@ -801,24 +801,24 @@
     }
 
 ConstConstructorWithBody:
-  template: "A const constructor can't have a body."
-  tip: "Try removing either the 'const' keyword or the body."
+  problemMessage: "A const constructor can't have a body."
+  correctionMessage: "Try removing either the 'const' keyword or the body."
   analyzerCode: CONST_CONSTRUCTOR_WITH_BODY
   script:
     - "class C { const C() {} }"
 
 ConstMethod:
   index: 63
-  template: "Getters, setters and methods can't be declared to be 'const'."
-  tip: "Try removing the 'const' keyword."
+  problemMessage: "Getters, setters and methods can't be declared to be 'const'."
+  correctionMessage: "Try removing the 'const' keyword."
   analyzerCode: ParserErrorCode.CONST_METHOD
   script:
     - "class C { const m() {} }"
 
 CovariantAndStatic:
   index: 66
-  template: "Members can't be declared to be both 'covariant' and 'static'."
-  tip: "Try removing either the 'covariant' or 'static' keyword."
+  problemMessage: "Members can't be declared to be both 'covariant' and 'static'."
+  correctionMessage: "Try removing either the 'covariant' or 'static' keyword."
   analyzerCode: ParserErrorCode.COVARIANT_AND_STATIC
   script:
     - "class C { covariant static A f; }"
@@ -826,8 +826,8 @@
 
 DuplicatedModifier:
   index: 70
-  template: "The modifier '#lexeme' was already specified."
-  tip: "Try removing all but one occurrence of the modifier."
+  problemMessage: "The modifier '#lexeme' was already specified."
+  correctionMessage: "Try removing all but one occurrence of the modifier."
   analyzerCode: ParserErrorCode.DUPLICATED_MODIFIER
   script:
     - "class C { const const m; }"
@@ -838,29 +838,29 @@
 
 ExternalConstructorWithBody:
   index: 87
-  template: "External constructors can't have a body."
-  tip: "Try removing the body of the constructor, or removing the keyword 'external'."
+  problemMessage: "External constructors can't have a body."
+  correctionMessage: "Try removing the body of the constructor, or removing the keyword 'external'."
   analyzerCode: ParserErrorCode.EXTERNAL_CONSTRUCTOR_WITH_BODY
   script:
     - "class C { external C() {} }"
 
 ExternalConstructorWithFieldInitializers:
-  template: "An external constructor can't initialize fields."
-  tip: "Try removing the field initializers, or removing the keyword 'external'."
+  problemMessage: "An external constructor can't initialize fields."
+  correctionMessage: "Try removing the field initializers, or removing the keyword 'external'."
   analyzerCode: EXTERNAL_CONSTRUCTOR_WITH_FIELD_INITIALIZERS
 
 ExternalFactoryWithBody:
   index: 86
-  template: "External factories can't have a body."
-  tip: "Try removing the body of the factory, or removing the keyword 'external'."
+  problemMessage: "External factories can't have a body."
+  correctionMessage: "Try removing the body of the factory, or removing the keyword 'external'."
   analyzerCode: ParserErrorCode.EXTERNAL_FACTORY_WITH_BODY
   script:
     - "class C { external factory C() {} }"
 
 ExternalField:
   index: 50
-  template: "Fields can't be declared to be 'external'."
-  tip: "Try removing the keyword 'external', or replacing the field by an external getter and/or setter."
+  problemMessage: "Fields can't be declared to be 'external'."
+  correctionMessage: "Try removing the keyword 'external', or replacing the field by an external getter and/or setter."
   analyzerCode: ParserErrorCode.EXTERNAL_FIELD
   script:
     - |
@@ -869,16 +869,16 @@
 
 
 ExternalFieldInitializer:
-  template: "External fields cannot have initializers."
-  tip: "Try removing the initializer or the 'external' keyword."
+  problemMessage: "External fields cannot have initializers."
+  correctionMessage: "Try removing the initializer or the 'external' keyword."
   configuration: nnbd-strong
   script:
     - "external var f = 0;"
     - "abstract class C {external var f = 0;}"
 
 ExternalFieldConstructorInitializer:
-  template: "External fields cannot have initializers."
-  tip: "Try removing the field initializer or the 'external' keyword from the field declaration."
+  problemMessage: "External fields cannot have initializers."
+  correctionMessage: "Try removing the field initializer or the 'external' keyword from the field declaration."
   configuration: nnbd-strong
   script:
     - "abstract class C {external var f; C(this.f);}"
@@ -886,39 +886,39 @@
 
 ExternalLateField:
   index: 109
-  template: "External fields cannot be late."
+  problemMessage: "External fields cannot be late."
   analyzerCode: ParserErrorCode.EXTERNAL_LATE_FIELD
-  tip: "Try removing the 'external' or 'late' keyword."
+  correctionMessage: "Try removing the 'external' or 'late' keyword."
   configuration: nnbd-strong
   script:
     - "external late var f;"
     - "abstract class C {external late var f;}"
 
 InitializerForStaticField:
-  template: "'#name' isn't an instance field of this class."
+  problemMessage: "'#name' isn't an instance field of this class."
   analyzerCode: INITIALIZER_FOR_STATIC_FIELD
 
 MoreThanOneSuperInitializer:
-  template: "Can't have more than one 'super' initializer."
+  problemMessage: "Can't have more than one 'super' initializer."
   analyzerCode: MULTIPLE_SUPER_INITIALIZERS
   script:
     - "class C { C.bad() : super(), super(); }"
 
 RedirectingConstructorWithSuperInitializer:
-  template: "A redirecting constructor can't have a 'super' initializer."
+  problemMessage: "A redirecting constructor can't have a 'super' initializer."
   analyzerCode: SUPER_IN_REDIRECTING_CONSTRUCTOR
   script:
     - "class C { C(); C.bad() : super(), this(); }"
     - "class C { C(); C.bad() : this(), super(); }"
 
 RedirectingConstructorWithMultipleRedirectInitializers:
-  template: "A redirecting constructor can't have more than one redirection."
+  problemMessage: "A redirecting constructor can't have more than one redirection."
   analyzerCode: MULTIPLE_REDIRECTING_CONSTRUCTOR_INVOCATIONS
   script:
     - "class C { C(); C.bad() : this(), this(); }"
 
 RedirectingConstructorWithAnotherInitializer:
-  template: "A redirecting constructor can't have other initializers."
+  problemMessage: "A redirecting constructor can't have other initializers."
   # also ASSERT_IN_REDIRECTING_CONSTRUCTOR
   analyzerCode: FIELD_INITIALIZER_REDIRECTING_CONSTRUCTOR
   script:
@@ -928,15 +928,15 @@
     - "class C { int? x; C(); C.bad() : this(), assert(true); }"
 
 SuperInitializerNotLast:
-  template: "Can't have initializers after 'super'."
+  problemMessage: "Can't have initializers after 'super'."
   analyzerCode: INVALID_SUPER_INVOCATION
   script:
     - "class C { int x; C.bad() : super(), x = 5; }"
 
 ExtraneousModifier:
   index: 77
-  template: "Can't have modifier '#lexeme' here."
-  tip: "Try removing '#lexeme'."
+  problemMessage: "Can't have modifier '#lexeme' here."
+  correctionMessage: "Try removing '#lexeme'."
   analyzerCode: ParserErrorCode.EXTRANEOUS_MODIFIER
   script:
     - "var String foo; main(){}"
@@ -968,8 +968,8 @@
 
 ExtraneousModifierInExtension:
   index: 98
-  template: "Can't have modifier '#lexeme' in an extension."
-  tip: "Try removing '#lexeme'."
+  problemMessage: "Can't have modifier '#lexeme' in an extension."
+  correctionMessage: "Try removing '#lexeme'."
   analyzerCode: ParserErrorCode.INVALID_USE_OF_COVARIANT_IN_EXTENSION
   hasPublishedDocs: true
   script:
@@ -977,8 +977,8 @@
 
 FinalAndCovariant:
   index: 80
-  template: "Members can't be declared to be both 'final' and 'covariant'."
-  tip: "Try removing either the 'final' or 'covariant' keyword."
+  problemMessage: "Members can't be declared to be both 'final' and 'covariant'."
+  correctionMessage: "Try removing either the 'final' or 'covariant' keyword."
   analyzerCode: ParserErrorCode.FINAL_AND_COVARIANT
   script:
     - "class C { covariant final f = 5; }"
@@ -986,8 +986,8 @@
 
 FinalAndCovariantLateWithInitializer:
   index: 101
-  template: "Members marked 'late' with an initializer can't be declared to be both 'final' and 'covariant'."
-  tip: "Try removing either the 'final' or 'covariant' keyword, or removing the initializer."
+  problemMessage: "Members marked 'late' with an initializer can't be declared to be both 'final' and 'covariant'."
+  correctionMessage: "Try removing either the 'final' or 'covariant' keyword, or removing the initializer."
   analyzerCode: ParserErrorCode.FINAL_AND_COVARIANT_LATE_WITH_INITIALIZER
   # Weak and strong doesn't matter in this instance.
   configuration: nnbd-strong
@@ -996,8 +996,8 @@
 
 FinalAndVar:
   index: 81
-  template: "Members can't be declared to be both 'final' and 'var'."
-  tip: "Try removing the keyword 'var'."
+  problemMessage: "Members can't be declared to be both 'final' and 'var'."
+  correctionMessage: "Try removing the keyword 'var'."
   analyzerCode: ParserErrorCode.FINAL_AND_VAR
   script:
     - "class C { final var x = 5; }"
@@ -1005,8 +1005,8 @@
 
 StaticConstructor:
   index: 4
-  template: "Constructors can't be static."
-  tip: "Try removing the keyword 'static'."
+  problemMessage: "Constructors can't be static."
+  correctionMessage: "Try removing the keyword 'static'."
   analyzerCode: ParserErrorCode.STATIC_CONSTRUCTOR
   script:
     - "class C { static C() {} }"
@@ -1014,41 +1014,41 @@
 
 GetterConstructor:
   index: 103
-  template: "Constructors can't be a getter."
-  tip: "Try removing 'get'."
+  problemMessage: "Constructors can't be a getter."
+  correctionMessage: "Try removing 'get'."
   analyzerCode: ParserErrorCode.GETTER_CONSTRUCTOR
   script:
     - "class C { get C.m() {} }"
 
 SetterConstructor:
   index: 104
-  template: "Constructors can't be a setter."
-  tip: "Try removing 'set'."
+  problemMessage: "Constructors can't be a setter."
+  correctionMessage: "Try removing 'set'."
   analyzerCode: ParserErrorCode.SETTER_CONSTRUCTOR
   script:
     - "class C { set C.m(x) {} }"
 
 StaticOperator:
   index: 17
-  template: "Operators can't be static."
-  tip: "Try removing the keyword 'static'."
+  problemMessage: "Operators can't be static."
+  correctionMessage: "Try removing the keyword 'static'."
   analyzerCode: ParserErrorCode.STATIC_OPERATOR
   script:
     - "class C { static operator +(int x) => x + 1; }"
 
 BreakOutsideOfLoop:
   index: 52
-  template: "A break statement can't be used outside of a loop or switch statement."
-  tip: "Try removing the break statement."
+  problemMessage: "A break statement can't be used outside of a loop or switch statement."
+  correctionMessage: "Try removing the break statement."
   analyzerCode: ParserErrorCode.BREAK_OUTSIDE_OF_LOOP
   script:
     - "main() { break; }"
 
 InvalidBreakTarget:
-  template: "Can't break to '#name'."
+  problemMessage: "Can't break to '#name'."
 
 BreakTargetOutsideFunction:
-  template: "Can't break to '#name' in a different function."
+  problemMessage: "Can't break to '#name' in a different function."
   analyzerCode: LABEL_IN_OUTER_SCOPE
   statement: |
     label: while (true) {
@@ -1060,7 +1060,7 @@
     }
 
 AnonymousBreakTargetOutsideFunction:
-  template: "Can't break to a target in a different function."
+  problemMessage: "Can't break to a target in a different function."
   analyzerCode: LABEL_IN_OUTER_SCOPE
   statement: |
     while (true) {
@@ -1071,17 +1071,17 @@
 
 ContinueOutsideOfLoop:
   index: 2
-  template: "A continue statement can't be used outside of a loop or switch statement."
-  tip: "Try removing the continue statement."
+  problemMessage: "A continue statement can't be used outside of a loop or switch statement."
+  correctionMessage: "Try removing the continue statement."
   analyzerCode: ParserErrorCode.CONTINUE_OUTSIDE_OF_LOOP
   script:
     - "main() { continue; }"
 
 InvalidContinueTarget:
-  template: "Can't continue at '#name'."
+  problemMessage: "Can't continue at '#name'."
 
 ContinueTargetOutsideFunction:
-  template: "Can't continue at '#name' in a different function."
+  problemMessage: "Can't continue at '#name' in a different function."
   analyzerCode: LABEL_IN_OUTER_SCOPE
   statement: |
     label: while (true) {
@@ -1093,7 +1093,7 @@
     }
 
 AnonymousContinueTargetOutsideFunction:
-  template: "Can't continue at a target in a different function."
+  problemMessage: "Can't continue at a target in a different function."
   analyzerCode: LABEL_IN_OUTER_SCOPE
   statement: |
     while (true) {
@@ -1103,65 +1103,65 @@
     }
 
 ContinueLabelNotTarget:
-  template: "Target of continue must be a label."
+  problemMessage: "Target of continue must be a label."
   analyzerCode: LABEL_UNDEFINED
 
 ContinueWithoutLabelInCase:
   index: 64
-  template: "A continue statement in a switch statement must have a label as a target."
-  tip: "Try adding a label associated with one of the case clauses to the continue statement."
+  problemMessage: "A continue statement in a switch statement must have a label as a target."
+  correctionMessage: "Try adding a label associated with one of the case clauses to the continue statement."
   analyzerCode: ParserErrorCode.CONTINUE_WITHOUT_LABEL_IN_CASE
   script:
     - "main() { switch (x) {case 1: continue;} }"
 
 DuplicateLabelInSwitchStatement:
   index: 72
-  template: "The label '#name' was already used in this switch statement."
-  tip: "Try choosing a different name for this label."
+  problemMessage: "The label '#name' was already used in this switch statement."
+  correctionMessage: "Try choosing a different name for this label."
   analyzerCode: ParserErrorCode.DUPLICATE_LABEL_IN_SWITCH_STATEMENT
   statement:
     - "switch (0) {l1: case 0: break; l1: case 1: break;}"
 
 LabelNotFound:
-  template: "Can't find label '#name'."
-  tip: "Try defining the label, or correcting the name to match an existing label."
+  problemMessage: "Can't find label '#name'."
+  correctionMessage: "Try defining the label, or correcting the name to match an existing label."
   analyzerCode: LABEL_UNDEFINED
   statement:
     - "switch (0) {case 0: continue L;}"
 
 InitializedVariableInForEach:
   index: 82
-  template: "The loop variable in a for-each loop can't be initialized."
-  tip: "Try removing the initializer, or using a different kind of loop."
+  problemMessage: "The loop variable in a for-each loop can't be initialized."
+  correctionMessage: "Try removing the initializer, or using a different kind of loop."
   analyzerCode: ParserErrorCode.INITIALIZED_VARIABLE_IN_FOR_EACH
   statement:
     - "for (int a = 0 in <int>[10]) {}"
 
 InvalidAwaitFor:
   index: 9
-  template: "The keyword 'await' isn't allowed for a normal 'for' statement."
-  tip: "Try removing the keyword, or use a for-each statement."
+  problemMessage: "The keyword 'await' isn't allowed for a normal 'for' statement."
+  correctionMessage: "Try removing the keyword, or use a for-each statement."
   analyzerCode: ParserErrorCode.INVALID_AWAIT_IN_FOR
   script:
     - "f() async {await for (int i = 0; i < 5; i++) {}}"
 
 InvalidSyncModifier:
-  template: "Invalid modifier 'sync'."
-  tip: "Try replacing 'sync' with 'sync*'."
+  problemMessage: "Invalid modifier 'sync'."
+  correctionMessage: "Try replacing 'sync' with 'sync*'."
   analyzerCode: MISSING_STAR_AFTER_SYNC
   script: "main() sync {}"
 
 InvalidVoid:
-  template: "Type 'void' can't be used here."
-  tip: "Try removing 'void' keyword or replace it with 'var', 'final', or a type."
+  problemMessage: "Type 'void' can't be used here."
+  correctionMessage: "Try removing 'void' keyword or replace it with 'var', 'final', or a type."
   analyzerCode: EXPECTED_TYPE_NAME
   script:
     - "void x; main() {}"
     - "foo(void x) {} main() { foo(null); }"
 
 VoidWithTypeArguments:
-  template: "Type 'void' can't have type arguments."
-  tip: "Try removing the type arguments."
+  problemMessage: "Type 'void' can't have type arguments."
+  correctionMessage: "Try removing the type arguments."
   index: 100
   analyzerCode: ParserErrorCode.VOID_WITH_TYPE_ARGUMENTS
   script:
@@ -1171,21 +1171,21 @@
 # FieldInitializedOutsideDeclaringClass instead of this in some situations.
 InvalidInitializer:
   index: 90
-  template: "Not a valid initializer."
-  tip: "To initialize a field, use the syntax 'name = value'."
+  problemMessage: "Not a valid initializer."
+  correctionMessage: "To initialize a field, use the syntax 'name = value'."
   analyzerCode: ParserErrorCode.INVALID_INITIALIZER
 
 FieldInitializedOutsideDeclaringClass:
   index: 88
-  template: "A field can only be initialized in its declaring class"
-  tip: "Try passing a value into the superclass constructor, or moving the initialization into the constructor body."
+  problemMessage: "A field can only be initialized in its declaring class"
+  correctionMessage: "Try passing a value into the superclass constructor, or moving the initialization into the constructor body."
   analyzerCode: ParserErrorCode.FIELD_INITIALIZED_OUTSIDE_DECLARING_CLASS
   script:
     - "class A { int a; } class C extends A { C() : super.a = 42; }"
 
 FinalFieldNotInitialized:
-  template: "Final field '#name' is not initialized."
-  tip: "Try to initialize the field in the declaration or in every constructor."
+  problemMessage: "Final field '#name' is not initialized."
+  correctionMessage: "Try to initialize the field in the declaration or in every constructor."
   analyzerCode: FINAL_NOT_INITIALIZED
   script: >
     class C {
@@ -1193,8 +1193,8 @@
     }
 
 FinalFieldNotInitializedByConstructor:
-  template: "Final field '#name' is not initialized by this constructor."
-  tip: "Try to initialize the field using an initializing formal or a field initializer."
+  problemMessage: "Final field '#name' is not initialized by this constructor."
+  correctionMessage: "Try to initialize the field using an initializing formal or a field initializer."
   analyzerCode: FINAL_NOT_INITIALIZED_CONSTRUCTOR_1
   script: >
     class C {
@@ -1204,8 +1204,8 @@
     }
 
 MissingExponent:
-  template: "Numbers in exponential notation should always contain an exponent (an integer number with an optional sign)."
-  tip: "Make sure there is an exponent, and remove any whitespace before it."
+  problemMessage: "Numbers in exponential notation should always contain an exponent (an integer number with an optional sign)."
+  correctionMessage: "Make sure there is an exponent, and remove any whitespace before it."
   analyzerCode: MISSING_DIGIT
   script: >
     main() {
@@ -1213,8 +1213,8 @@
     }
 
 PositionalParameterWithEquals:
-  template: "Positional optional parameters can't use ':' to specify a default value."
-  tip: "Try replacing ':' with '='."
+  problemMessage: "Positional optional parameters can't use ':' to specify a default value."
+  correctionMessage: "Try replacing ':' with '='."
   analyzerCode: WRONG_SEPARATOR_FOR_POSITIONAL_PARAMETER
   script: >
     main() {
@@ -1223,8 +1223,8 @@
     }
 
 RequiredParameterWithDefault:
-  template: "Non-optional parameters can't have a default value."
-  tip: "Try removing the default value or making the parameter optional."
+  problemMessage: "Non-optional parameters can't have a default value."
+  correctionMessage: "Try removing the default value or making the parameter optional."
   analyzerCode: NAMED_PARAMETER_OUTSIDE_GROUP
   script:
     - >
@@ -1240,19 +1240,19 @@
 
 StackOverflow:
   index: 19
-  template: "The file has too many nested expressions or statements."
-  tip: "Try simplifying the code."
+  problemMessage: "The file has too many nested expressions or statements."
+  correctionMessage: "Try simplifying the code."
   analyzerCode: ParserErrorCode.STACK_OVERFLOW
 
 InvalidCodePoint:
-  template: "The escape sequence starting with '\\u' isn't a valid code point."
+  problemMessage: "The escape sequence starting with '\\u' isn't a valid code point."
   analyzerCode: INVALID_CODE_POINT
   expression:
     - "'\\u{110000}'"
 
 InvalidHexEscape:
   index: 40
-  template: "An escape sequence starting with '\\x' must be followed by 2 hexadecimal digits."
+  problemMessage: "An escape sequence starting with '\\x' must be followed by 2 hexadecimal digits."
   analyzerCode: ParserErrorCode.INVALID_HEX_ESCAPE
   expression:
     - "'\\x0'"
@@ -1260,7 +1260,7 @@
 
 InvalidUnicodeEscape:
   index: 38
-  template: "An escape sequence starting with '\\u' must be followed by 4 hexadecimal digits or from 1 to 6 digits between '{' and '}'."
+  problemMessage: "An escape sequence starting with '\\u' must be followed by 4 hexadecimal digits or from 1 to 6 digits between '{' and '}'."
   analyzerCode: ParserErrorCode.INVALID_UNICODE_ESCAPE
   expression:
     - "'\\u'"
@@ -1270,8 +1270,8 @@
     - "'\\u{0Z}'"
 
 UnexpectedDollarInString:
-  template: "A '$' has special meaning inside a string, and must be followed by an identifier or an expression in curly braces ({})."
-  tip: "Try adding a backslash (\\) to escape the '$'."
+  problemMessage: "A '$' has special meaning inside a string, and must be followed by an identifier or an expression in curly braces ({})."
+  correctionMessage: "Try adding a backslash (\\) to escape the '$'."
   analyzerCode: UNEXPECTED_DOLLAR_IN_STRING
   expression:
     - "'$'"
@@ -1280,14 +1280,14 @@
     - '"""$"""'
 
 UnexpectedToken:
-  template: "Unexpected token '#lexeme'."
+  problemMessage: "Unexpected token '#lexeme'."
   analyzerCode: UNEXPECTED_TOKEN
   script:
     - "import 'b.dart' d as b;"
 
 LiteralWithClassAndNew:
-  template: "A #string literal can't be prefixed by 'new #lexeme'."
-  tip: "Try removing 'new' and '#lexeme'"
+  problemMessage: "A #string literal can't be prefixed by 'new #lexeme'."
+  correctionMessage: "Try removing 'new' and '#lexeme'"
   analyzerCode: ParserErrorCode.LITERAL_WITH_CLASS_AND_NEW
   index: 115
   script:
@@ -1299,8 +1299,8 @@
     - "var x = new List[1];"
 
 LiteralWithClass:
-  template: "A #string literal can't be prefixed by '#lexeme'."
-  tip: "Try removing '#lexeme'"
+  problemMessage: "A #string literal can't be prefixed by '#lexeme'."
+  correctionMessage: "Try removing '#lexeme'"
   analyzerCode: ParserErrorCode.LITERAL_WITH_CLASS
   index: 116
   script:
@@ -1318,8 +1318,8 @@
     - "var x = const List[1];"
 
 LiteralWithNew:
-  template: "A literal can't be prefixed by 'new'."
-  tip: "Try removing 'new'"
+  problemMessage: "A literal can't be prefixed by 'new'."
+  correctionMessage: "Try removing 'new'"
   analyzerCode: ParserErrorCode.LITERAL_WITH_NEW
   index: 117
   script:
@@ -1334,7 +1334,7 @@
     - "var x = new ['a'];"
 
 UnmatchedToken:
-  template: "Can't find '#string' to match '#lexeme'."
+  problemMessage: "Can't find '#string' to match '#lexeme'."
   analyzerCode: EXPECTED_TOKEN
   script:
     - "main("
@@ -1342,20 +1342,20 @@
     - "main(){[}"
 
 UnsupportedOperator:
-  template: "The '#lexeme' operator is not supported."
+  problemMessage: "The '#lexeme' operator is not supported."
   analyzerCode: UNSUPPORTED_OPERATOR
   script:
     - "class C { void operator ===(x) {} }"
     - "class C { void operator !==(x) {} }"
 
 UnsupportedPrefixPlus:
-  template: "'+' is not a prefix operator."
-  tip: "Try removing '+'."
+  problemMessage: "'+' is not a prefix operator."
+  correctionMessage: "Try removing '+'."
   analyzerCode: MISSING_IDENTIFIER
   expression: "+2" # No longer a valid way to write '2'
 
 UnterminatedComment:
-  template: "Comment starting with '/*' must end with '*/'."
+  problemMessage: "Comment starting with '/*' must end with '*/'."
   analyzerCode: UNTERMINATED_MULTI_LINE_COMMENT
   script:
     main() {
@@ -1363,7 +1363,7 @@
     /*
 
 UnterminatedString:
-  template: "String starting with #string must end with #string2."
+  problemMessage: "String starting with #string must end with #string2."
   analyzerCode: UNTERMINATED_STRING_LITERAL
   script:
     - >
@@ -1397,19 +1397,19 @@
 
 UnterminatedToken:
   # This is a fall-back message that shouldn't happen.
-  template: "Incomplete token."
+  problemMessage: "Incomplete token."
 
 # Note: avoid using this template, it should only be used for debugging and
 # prototyping, see [diagnostics.md](
 # lib/src/fasta/diagnostics.md#avoid-composing-messages-programmatically).
 Unspecified:
-  template: "#string"
+  problemMessage: "#string"
 
 StrongModeNNBDButOptOut:
-  template: "A library can't opt out of null safety by default, when using sound null safety."
+  problemMessage: "A library can't opt out of null safety by default, when using sound null safety."
 
 StrongModeNNBDPackageOptOut:
-  template:  |
+  problemMessage:  |
     Cannot run with sound null safety, because the following dependencies
     don't support null safety:
 
@@ -1418,43 +1418,43 @@
     For solutions, see https://dart.dev/go/unsound-null-safety
 
 WeakWithStrongDillLibrary:
-  template: "Loaded library is compiled with sound null safety and cannot be used in compilation for unsound null safety."
+  problemMessage: "Loaded library is compiled with sound null safety and cannot be used in compilation for unsound null safety."
 
 StrongWithWeakDillLibrary:
-  template: "Loaded library is compiled with unsound null safety and cannot be used in compilation for sound null safety."
+  problemMessage: "Loaded library is compiled with unsound null safety and cannot be used in compilation for sound null safety."
 
 AgnosticWithStrongDillLibrary:
-  template: "Loaded library is compiled with sound null safety and cannot be used in compilation for agnostic null safety."
+  problemMessage: "Loaded library is compiled with sound null safety and cannot be used in compilation for agnostic null safety."
 
 AgnosticWithWeakDillLibrary:
-  template: "Loaded library is compiled with unsound null safety and cannot be used in compilation for agnostic null safety."
+  problemMessage: "Loaded library is compiled with unsound null safety and cannot be used in compilation for agnostic null safety."
 
 InvalidNnbdDillLibrary:
-  template: "Trying to use library with invalid null safety."
+  problemMessage: "Trying to use library with invalid null safety."
 
 AbstractNotSync:
-  template: "Abstract methods can't use 'async', 'async*', or 'sync*'."
+  problemMessage: "Abstract methods can't use 'async', 'async*', or 'sync*'."
   analyzerCode: NON_SYNC_ABSTRACT_METHOD
 
 AwaitAsIdentifier:
-  template: "'await' can't be used as an identifier in 'async', 'async*', or 'sync*' methods."
+  problemMessage: "'await' can't be used as an identifier in 'async', 'async*', or 'sync*' methods."
   analyzerCode: ASYNC_KEYWORD_USED_AS_IDENTIFIER
 
 AwaitNotAsync:
-  template: "'await' can only be used in 'async' or 'async*' methods."
+  problemMessage: "'await' can only be used in 'async' or 'async*' methods."
   analyzerCode: AWAIT_IN_WRONG_CONTEXT
 
 BuiltInIdentifierAsType:
-  template: "The built-in identifier '#lexeme' can't be used as a type."
+  problemMessage: "The built-in identifier '#lexeme' can't be used as a type."
   analyzerCode: BUILT_IN_IDENTIFIER_AS_TYPE
 
 BuiltInIdentifierInDeclaration:
-  template: "Can't use '#lexeme' as a name here."
+  problemMessage: "Can't use '#lexeme' as a name here."
   analyzerCode: BUILT_IN_IDENTIFIER_IN_DECLARATION
 
 AwaitForNotAsync:
-  template: "The asynchronous for-in can only be used in functions marked with 'async' or 'async*'."
-  tip: "Try marking the function body with either 'async' or 'async*', or removing the 'await' before the for loop."
+  problemMessage: "The asynchronous for-in can only be used in functions marked with 'async' or 'async*'."
+  correctionMessage: "Try marking the function body with either 'async' or 'async*', or removing the 'await' before the for loop."
   analyzerCode: ASYNC_FOR_IN_WRONG_CONTEXT
   script: >
     main(o) sync* {
@@ -1462,89 +1462,89 @@
     }
 
 ConstructorNotSync:
-  template: "Constructor bodies can't use 'async', 'async*', or 'sync*'."
+  problemMessage: "Constructor bodies can't use 'async', 'async*', or 'sync*'."
   analyzerCode: NON_SYNC_CONSTRUCTOR
 
 FactoryNotSync:
-  template: "Factory bodies can't use 'async', 'async*', or 'sync*'."
+  problemMessage: "Factory bodies can't use 'async', 'async*', or 'sync*'."
   analyzerCode: NON_SYNC_FACTORY
 
 GeneratorReturnsValue:
-  template: "'sync*' and 'async*' can't return a value."
+  problemMessage: "'sync*' and 'async*' can't return a value."
   analyzerCode: RETURN_IN_GENERATOR
 
 InvalidInlineFunctionType:
-  template: "Inline function types cannot be used for parameters in a generic function type."
-  tip: "Try changing the inline function type (as in 'int f()') to a prefixed function type using the `Function` keyword (as in 'int Function() f')."
+  problemMessage: "Inline function types cannot be used for parameters in a generic function type."
+  correctionMessage: "Try changing the inline function type (as in 'int f()') to a prefixed function type using the `Function` keyword (as in 'int Function() f')."
   analyzerCode: INVALID_INLINE_FUNCTION_TYPE
   declaration: "typedef F = Function(int f(String x));"
 
 SetterNotSync:
-  template: "Setters can't use 'async', 'async*', or 'sync*'."
+  problemMessage: "Setters can't use 'async', 'async*', or 'sync*'."
   analyzerCode: INVALID_MODIFIER_ON_SETTER
 
 YieldAsIdentifier:
-  template: "'yield' can't be used as an identifier in 'async', 'async*', or 'sync*' methods."
+  problemMessage: "'yield' can't be used as an identifier in 'async', 'async*', or 'sync*' methods."
   analyzerCode: ASYNC_KEYWORD_USED_AS_IDENTIFIER
 
 YieldNotGenerator:
-  template: "'yield' can only be used in 'sync*' or 'async*' methods."
+  problemMessage: "'yield' can only be used in 'sync*' or 'async*' methods."
   analyzerCode: YIELD_IN_NON_GENERATOR
 
 OnlyTry:
   index: 20
-  template: "A try block must be followed by an 'on', 'catch', or 'finally' clause."
-  tip: "Try adding either a catch or finally clause, or remove the try statement."
+  problemMessage: "A try block must be followed by an 'on', 'catch', or 'finally' clause."
+  correctionMessage: "Try adding either a catch or finally clause, or remove the try statement."
   analyzerCode: ParserErrorCode.MISSING_CATCH_OR_FINALLY
   statement: "try {}"
 
 TypeAfterVar:
   index: 89
-  template: "Variables can't be declared using both 'var' and a type name."
-  tip: "Try removing 'var.'"
+  problemMessage: "Variables can't be declared using both 'var' and a type name."
+  correctionMessage: "Try removing 'var.'"
   analyzerCode: ParserErrorCode.VAR_AND_TYPE
 
 AssertExtraneousArgument:
-  template: "`assert` can't have more than two arguments."
+  problemMessage: "`assert` can't have more than two arguments."
 
 PositionalAfterNamedArgument:
-  template: "Place positional arguments before named arguments."
-  tip: "Try moving the positional argument before the named arguments, or add a name to the argument."
+  problemMessage: "Place positional arguments before named arguments."
+  correctionMessage: "Try moving the positional argument before the named arguments, or add a name to the argument."
   analyzerCode: POSITIONAL_AFTER_NAMED_ARGUMENT
 
 ExpectedNamedArgument:
-  template: "Expected named argument."
+  problemMessage: "Expected named argument."
   analyzerCode: EXTRA_POSITIONAL_ARGUMENTS
 
 AssertAsExpression:
-  template: "`assert` can't be used as an expression."
+  problemMessage: "`assert` can't be used as an expression."
 
 FunctionTypeDefaultValue:
-  template: "Can't have a default value in a function type."
+  problemMessage: "Can't have a default value in a function type."
   analyzerCode: DEFAULT_VALUE_IN_FUNCTION_TYPE
 
 PrivateNamedParameter:
-  template: "An optional named parameter can't start with '_'."
+  problemMessage: "An optional named parameter can't start with '_'."
   analyzerCode: PRIVATE_OPTIONAL_PARAMETER
 
 NoFormals:
-  template: "A function should have formal parameters."
-  tip: "Try adding '()' after '#lexeme', or add 'get' before '#lexeme' to declare a getter."
+  problemMessage: "A function should have formal parameters."
+  correctionMessage: "Try adding '()' after '#lexeme', or add 'get' before '#lexeme' to declare a getter."
   analyzerCode: MISSING_FUNCTION_PARAMETERS
 
 GetterWithFormals:
-  template: "A getter can't have formal parameters."
-  tip: "Try removing '(...)'."
+  problemMessage: "A getter can't have formal parameters."
+  correctionMessage: "Try removing '(...)'."
   analyzerCode: GETTER_WITH_PARAMETERS
 
 SetterWithWrongNumberOfFormals:
-  template: "A setter should have exactly one formal parameter."
+  problemMessage: "A setter should have exactly one formal parameter."
   analyzerCode: WRONG_NUMBER_OF_PARAMETERS_FOR_SETTER
 
 CatchSyntax:
   index: 84
-  template: "'catch' must be followed by '(identifier)' or '(identifier, identifier)'."
-  tip: "No types are needed, the first is given by 'on', the second is always 'StackTrace'."
+  problemMessage: "'catch' must be followed by '(identifier)' or '(identifier, identifier)'."
+  correctionMessage: "No types are needed, the first is given by 'on', the second is always 'StackTrace'."
   analyzerCode: ParserErrorCode.CATCH_SYNTAX
   statement:
     - "try {} catch {}"
@@ -1553,54 +1553,54 @@
 
 CatchSyntaxExtraParameters:
   index: 83
-  template: "'catch' must be followed by '(identifier)' or '(identifier, identifier)'."
-  tip: "No types are needed, the first is given by 'on', the second is always 'StackTrace'."
+  problemMessage: "'catch' must be followed by '(identifier)' or '(identifier, identifier)'."
+  correctionMessage: "No types are needed, the first is given by 'on', the second is always 'StackTrace'."
   analyzerCode: ParserErrorCode.CATCH_SYNTAX_EXTRA_PARAMETERS
   statement:
     - "try {} catch (e, s, x) {}"
 
 SuperNullAware:
   index: 18
-  template: "The operator '?.' cannot be used with 'super' because 'super' cannot be null."
-  tip: "Try replacing '?.' with '.'"
+  problemMessage: "The operator '?.' cannot be used with 'super' because 'super' cannot be null."
+  correctionMessage: "Try replacing '?.' with '.'"
   analyzerCode: ParserErrorCode.INVALID_OPERATOR_QUESTIONMARK_PERIOD_FOR_SUPER
 
 NullAwareCascadeOutOfOrder:
   index: 96
-  template: "The '?..' cascade operator must be first in the cascade sequence."
-  tip: "Try moving the '?..' operator to be the first cascade operator in the sequence."
+  problemMessage: "The '?..' cascade operator must be first in the cascade sequence."
+  correctionMessage: "Try moving the '?..' operator to be the first cascade operator in the sequence."
   analyzerCode: ParserErrorCode.NULL_AWARE_CASCADE_OUT_OF_ORDER
 
 ConstFieldWithoutInitializer:
-  template: "The const variable '#name' must be initialized."
-  tip: "Try adding an initializer ('= expression') to the declaration."
+  problemMessage: "The const variable '#name' must be initialized."
+  correctionMessage: "Try adding an initializer ('= expression') to the declaration."
   analyzerCode: CONST_NOT_INITIALIZED
 
 FinalFieldWithoutInitializer:
-  template: "The final variable '#name' must be initialized."
-  tip: "Try adding an initializer ('= expression') to the declaration."
+  problemMessage: "The final variable '#name' must be initialized."
+  correctionMessage: "Try adding an initializer ('= expression') to the declaration."
   analyzerCode: FINAL_NOT_INITIALIZED
 
 MetadataTypeArguments:
   index: 91
-  template: "An annotation can't use type arguments."
+  problemMessage: "An annotation can't use type arguments."
   analyzerCode: ParserErrorCode.ANNOTATION_WITH_TYPE_ARGUMENTS
 
 MetadataTypeArgumentsUninstantiated:
   index: 114
-  template: "An annotation with type arguments must be followed by an argument list."
+  problemMessage: "An annotation with type arguments must be followed by an argument list."
   analyzerCode: ParserErrorCode.ANNOTATION_WITH_TYPE_ARGUMENTS_UNINSTANTIATED
   script:
     - "@deprecated<int> class C {}"
 
 ConstructorNotFound:
-  template: "Couldn't find constructor '#name'."
+  problemMessage: "Couldn't find constructor '#name'."
   analyzerCode: CONSTRUCTOR_NOT_FOUND
 
 ConstructorWithReturnType:
   index: 55
-  template: "Constructors can't have a return type."
-  tip: "Try removing the return type."
+  problemMessage: "Constructors can't have a return type."
+  correctionMessage: "Try removing the return type."
   analyzerCode: ParserErrorCode.CONSTRUCTOR_WITH_RETURN_TYPE
   script:
     - "class C { int C() {} }"
@@ -1608,9 +1608,9 @@
 
 ConstructorWithTypeParameters:
   index: 99
-  template: "Constructors can't have type parameters."
+  problemMessage: "Constructors can't have type parameters."
   analyzerCode: ParserErrorCode.TYPE_PARAMETER_ON_CONSTRUCTOR
-  tip: "Try removing the type parameters."
+  correctionMessage: "Try removing the type parameters."
   script:
     - >-
       class C { C<T>() {} }
@@ -1628,8 +1628,8 @@
       }
 
 ConstructorWithTypeArguments:
-  template: "A constructor invocation can't have type arguments after the constructor name."
-  tip: "Try removing the type arguments or placing them after the class name."
+  problemMessage: "A constructor invocation can't have type arguments after the constructor name."
+  correctionMessage: "Try removing the type arguments or placing them after the class name."
   analyzerCode: ParserErrorCode.CONSTRUCTOR_WITH_TYPE_ARGUMENTS
   index: 118
   script:
@@ -1637,7 +1637,7 @@
     - "class C<X> { C.foo(); } bar() { C.foo<int>(); }"
 
 ConstructorWithWrongName:
-  template: "The name of a constructor must match the name of the enclosing class."
+  problemMessage: "The name of a constructor must match the name of the enclosing class."
   analyzerCode: ParserErrorCode.INVALID_CONSTRUCTOR_NAME
   index: 102
   script:
@@ -1655,101 +1655,101 @@
       }
 
 ConstructorWithWrongNameContext:
-  template: "The name of the enclosing class is '#name'."
+  problemMessage: "The name of the enclosing class is '#name'."
   severity: CONTEXT
 
 ConstructorCyclic:
-  template: "Redirecting constructors can't be cyclic."
-  tip: "Try to have all constructors eventually redirect to a non-redirecting constructor."
+  problemMessage: "Redirecting constructors can't be cyclic."
+  correctionMessage: "Try to have all constructors eventually redirect to a non-redirecting constructor."
   analyzerCode: RECURSIVE_CONSTRUCTOR_REDIRECT
   script:
     - "class C { C.foo() : this.bar(); C.bar() : this.foo(); }"
 
 FieldInitializerOutsideConstructor:
   index: 79
-  template: "Field formal parameters can only be used in a constructor."
-  tip: "Try removing 'this.'."
+  problemMessage: "Field formal parameters can only be used in a constructor."
+  correctionMessage: "Try removing 'this.'."
   analyzerCode: ParserErrorCode.FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR
   script:
     - "class C { void m(this.x); }"
 
 RedirectionTargetNotFound:
-  template: "Redirection constructor target not found: '#name'"
+  problemMessage: "Redirection constructor target not found: '#name'"
   analyzerCode: REDIRECT_TO_MISSING_CONSTRUCTOR
 
 CyclicTypedef:
-  template: "The typedef '#name' has a reference to itself."
+  problemMessage: "The typedef '#name' has a reference to itself."
   analyzerCode: TYPE_ALIAS_CANNOT_REFERENCE_ITSELF
 
 TypeNotFound:
-  template: "Type '#name' not found."
+  problemMessage: "Type '#name' not found."
   analyzerCode: UNDEFINED_CLASS
 
 NonInstanceTypeVariableUse:
-  template: "Can only use type variables in instance methods."
+  problemMessage: "Can only use type variables in instance methods."
   analyzerCode: TYPE_PARAMETER_REFERENCED_BY_STATIC
 
 NameNotFound:
-  template: "Undefined name '#name'."
+  problemMessage: "Undefined name '#name'."
   analyzerCode: UNDEFINED_NAME
 
 MemberNotFound:
-  template: "Member not found: '#name'."
+  problemMessage: "Member not found: '#name'."
   analyzerCode: UNDEFINED_GETTER
 
 GetterNotFound:
-  template: "Getter not found: '#name'."
+  problemMessage: "Getter not found: '#name'."
   analyzerCode: UNDEFINED_GETTER
 
 SetterNotFound:
-  template: "Setter not found: '#name'."
+  problemMessage: "Setter not found: '#name'."
   analyzerCode: UNDEFINED_SETTER
 
 MethodNotFound:
-  template: "Method not found: '#name'."
+  problemMessage: "Method not found: '#name'."
   analyzerCode: UNDEFINED_METHOD
 
 CandidateFound:
-  template: "Found this candidate, but the arguments don't match."
+  problemMessage: "Found this candidate, but the arguments don't match."
   severity: CONTEXT
 
 CandidateFoundIsDefaultConstructor:
-  template: "The class '#name' has a constructor that takes no arguments."
+  problemMessage: "The class '#name' has a constructor that takes no arguments."
   severity: CONTEXT
 
 MissingArgumentList:
-  template: "Constructor invocations must have an argument list."
+  problemMessage: "Constructor invocations must have an argument list."
 
 TooFewArguments:
-  template: "Too few positional arguments: #count required, #count2 given."
+  problemMessage: "Too few positional arguments: #count required, #count2 given."
   analyzerCode: NOT_ENOUGH_REQUIRED_ARGUMENTS
 
 TooManyArguments:
-  template: "Too many positional arguments: #count allowed, but #count2 found."
-  tip: "Try removing the extra positional arguments."
+  problemMessage: "Too many positional arguments: #count allowed, but #count2 found."
+  correctionMessage: "Try removing the extra positional arguments."
   analyzerCode: EXTRA_POSITIONAL_ARGUMENTS
 
 NoSuchNamedParameter:
-  template: "No named parameter with the name '#name'."
+  problemMessage: "No named parameter with the name '#name'."
   analyzerCode: UNDEFINED_NAMED_PARAMETER
 
 AbstractClassInstantiation:
-  template: "The class '#name' is abstract and can't be instantiated."
+  problemMessage: "The class '#name' is abstract and can't be instantiated."
   analyzerCode: NEW_WITH_ABSTRACT_CLASS
 
 EnumInstantiation:
-  template: "Enums can't be instantiated."
+  problemMessage: "Enums can't be instantiated."
   analyzerCode: INSTANTIATE_ENUM
 
 AbstractRedirectedClassInstantiation:
-  template: "Factory redirects to class '#name', which is abstract and can't be instantiated."
+  problemMessage: "Factory redirects to class '#name', which is abstract and can't be instantiated."
   analyzerCode: FACTORY_REDIRECTS_TO_ABSTRACT_CLASS
 
 MissingImplementationNotAbstract:
-  template: |
+  problemMessage: |
     The non-abstract class '#name' is missing implementations for these members:
     #names
-  tip: |
+  correctionMessage: |
     Try to either
      - provide an implementation,
      - inherit an implementation from a superclass or mixin,
@@ -1760,50 +1760,50 @@
     - "class C {foo();}"
 
 MissingImplementationCause:
-  template: "'#name' is defined here."
+  problemMessage: "'#name' is defined here."
   severity: CONTEXT
 
 InterfaceCheck:
-  template: "The implementation of '#name' in the non-abstract class '#name2' does not conform to its interface."
+  problemMessage: "The implementation of '#name' in the non-abstract class '#name2' does not conform to its interface."
 
 NamedMixinOverride:
-  template: "The mixin application class '#name' introduces an erroneous override of '#name2'."
+  problemMessage: "The mixin application class '#name' introduces an erroneous override of '#name2'."
 
 ImplicitMixinOverride:
-  template: "Applying the mixin '#name' to '#name2' introduces an erroneous override of '#name3'."
+  problemMessage: "Applying the mixin '#name' to '#name2' introduces an erroneous override of '#name3'."
 
 ListLiteralTooManyTypeArguments:
-  template: "List literal requires exactly one type argument."
+  problemMessage: "List literal requires exactly one type argument."
   analyzerCode: EXPECTED_ONE_LIST_TYPE_ARGUMENTS
 
 SetLiteralTooManyTypeArguments:
-  template: "A set literal requires exactly one type argument."
+  problemMessage: "A set literal requires exactly one type argument."
 
 MapLiteralTypeArgumentMismatch:
-  template: "A map literal requires exactly two type arguments."
+  problemMessage: "A map literal requires exactly two type arguments."
   analyzerCode: EXPECTED_TWO_MAP_TYPE_ARGUMENTS
 
 SetOrMapLiteralTooManyTypeArguments:
-  template: "A set or map literal requires exactly one or two type arguments, respectively."
+  problemMessage: "A set or map literal requires exactly one or two type arguments, respectively."
 
 LoadLibraryTakesNoArguments:
-  template: "'loadLibrary' takes no arguments."
+  problemMessage: "'loadLibrary' takes no arguments."
   analyzerCode: LOAD_LIBRARY_TAKES_NO_ARGUMENTS
 
 TypeArgumentMismatch:
-  template: "Expected #count type arguments."
+  problemMessage: "Expected #count type arguments."
   analyzerCode: WRONG_NUMBER_OF_TYPE_ARGUMENTS
 
 NotAType:
-  template: "'#name' isn't a type."
+  problemMessage: "'#name' isn't a type."
   analyzerCode: NOT_A_TYPE
 
 NotATypeContext:
-  template: "This isn't a type."
+  problemMessage: "This isn't a type."
   severity: CONTEXT
 
 NotAPrefixInTypeAnnotation:
-  template: "'#name.#name2' can't be used as a type because '#name' doesn't refer to an import prefix."
+  problemMessage: "'#name.#name2' can't be used as a type because '#name' doesn't refer to an import prefix."
   analyzerCode: NOT_A_TYPE
   declaration:
     - |
@@ -1816,26 +1816,26 @@
         }
 
 FunctionUsedAsDec:
-  template: "'Function' is a built-in identifier, could not used as a #name name."
+  problemMessage: "'Function' is a built-in identifier, could not used as a #name name."
   script:
     - class Function {}
     - extension Function on int {}
     - mixin Function {}
 
 FunctionAsTypeParameter:
-  template: "'Function' is a built-in identifier, could not used as a type identifier."
+  problemMessage: "'Function' is a built-in identifier, could not used as a type identifier."
   script:
     - class C<Function> {}
     - mixin A<Function> {}
     - extension A<Function> on List<Function> {}
 
 UnresolvedPrefixInTypeAnnotation:
-  template: "'#name.#name2' can't be used as a type because '#name' isn't defined."
+  problemMessage: "'#name.#name2' can't be used as a type because '#name' isn't defined."
   analyzerCode: NOT_A_TYPE
   statement: "T.String x;"
 
 FastaUsageShort:
-  template: |
+  problemMessage: |
     Frequently used options:
 
       -o <file> Generate the output into <file>.
@@ -1843,7 +1843,7 @@
 
 FastaUsageLong:
   # TODO(ahe): Consider if the reference to platform.dill needs to change below?
-  template: |
+  problemMessage: |
     Supported options:
 
       -o <file>, --output=<file>
@@ -1931,163 +1931,163 @@
         Multiple experiments can be separated by commas.
 
 FastaCLIArgumentRequired:
-  template: "Expected value after '#name'."
+  problemMessage: "Expected value after '#name'."
 
 NamedFunctionExpression:
-  template: "A function expression can't have a name."
+  problemMessage: "A function expression can't have a name."
   analyzerCode: NAMED_FUNCTION_EXPRESSION
 
 NativeClauseShouldBeAnnotation:
   index: 23
-  template: "Native clause in this form is deprecated."
-  tip: "Try removing this native clause and adding @native() or @native('native-name') before the declaration."
+  problemMessage: "Native clause in this form is deprecated."
+  correctionMessage: "Try removing this native clause and adding @native() or @native('native-name') before the declaration."
   analyzerCode: ParserErrorCode.NATIVE_CLAUSE_SHOULD_BE_ANNOTATION
 
 ReturnTypeFunctionExpression:
-  template: "A function expression can't have a return type."
+  problemMessage: "A function expression can't have a return type."
 
 InternalProblemUnhandled:
-  template: "Unhandled #string in #string2."
+  problemMessage: "Unhandled #string in #string2."
   severity: INTERNAL_PROBLEM
 
 InternalProblemUnimplemented:
-  template: "Unimplemented #string."
+  problemMessage: "Unimplemented #string."
   severity: INTERNAL_PROBLEM
 
 InternalProblemUnexpected:
-  template: "Expected '#string', but got '#string2'."
+  problemMessage: "Expected '#string', but got '#string2'."
   severity: INTERNAL_PROBLEM
 
 InternalProblemUnsupported:
-  template: "Unsupported operation: '#name'."
+  problemMessage: "Unsupported operation: '#name'."
   severity: INTERNAL_PROBLEM
 
 InternalProblemNotFound:
-  template: "Couldn't find '#name'."
+  problemMessage: "Couldn't find '#name'."
   severity: INTERNAL_PROBLEM
 
 InternalProblemNotFoundIn:
-  template: "Couldn't find '#name' in '#name2'."
+  problemMessage: "Couldn't find '#name' in '#name2'."
   severity: INTERNAL_PROBLEM
 
 InternalProblemPrivateConstructorAccess:
-  template: "Can't access private constructor '#name'."
+  problemMessage: "Can't access private constructor '#name'."
   severity: INTERNAL_PROBLEM
 
 InternalProblemConstructorNotFound:
-  template: "No constructor named '#name' in '#uri'."
+  problemMessage: "No constructor named '#name' in '#uri'."
   severity: INTERNAL_PROBLEM
 
 InternalProblemExtendingUnmodifiableScope:
-  template: "Can't extend an unmodifiable scope."
+  problemMessage: "Can't extend an unmodifiable scope."
   severity: INTERNAL_PROBLEM
 
 InternalProblemPreviousTokenNotFound:
-  template: "Couldn't find previous token."
+  problemMessage: "Couldn't find previous token."
   severity: INTERNAL_PROBLEM
 
 InternalProblemStackNotEmpty:
-  template: "#name.stack isn't empty:\n  #string"
+  problemMessage: "#name.stack isn't empty:\n  #string"
   severity: INTERNAL_PROBLEM
 
 InternalProblemAlreadyInitialized:
-  template: "Attempt to set initializer on field without initializer."
+  problemMessage: "Attempt to set initializer on field without initializer."
   severity: INTERNAL_PROBLEM
 
 InternalProblemBodyOnAbstractMethod:
-  template: "Attempting to set body on abstract method."
+  problemMessage: "Attempting to set body on abstract method."
   severity: INTERNAL_PROBLEM
 
 InternalProblemMissingContext:
-  template: "Compiler cannot run without a compiler context."
-  tip: "Are calls to the compiler wrapped in CompilerContext.runInContext?"
+  problemMessage: "Compiler cannot run without a compiler context."
+  correctionMessage: "Are calls to the compiler wrapped in CompilerContext.runInContext?"
   severity: INTERNAL_PROBLEM
 
 InternalProblemProvidedBothCompileSdkAndSdkSummary:
-  template: "The compileSdk and sdkSummary options are mutually exclusive"
+  problemMessage: "The compileSdk and sdkSummary options are mutually exclusive"
   severity: INTERNAL_PROBLEM
 
 InternalProblemUriMissingScheme:
-  template: "The URI '#uri' has no scheme."
+  problemMessage: "The URI '#uri' has no scheme."
   severity: INTERNAL_PROBLEM
 
 InternalProblemContextSeverity:
-  template: "Non-context message has context severity: #string"
+  problemMessage: "Non-context message has context severity: #string"
   severity: INTERNAL_PROBLEM
 
 InternalProblemVerificationError:
-  template: |
+  problemMessage: |
     Verification of the generated program failed:
     #string
   severity: INTERNAL_PROBLEM
 
 VerificationErrorOriginContext:
-  template: "The node most likely is taken from here by a transformer."
+  problemMessage: "The node most likely is taken from here by a transformer."
   severity: CONTEXT
 
 InternalProblemDebugAbort:
-  template: "Compilation aborted due to fatal '#name' at:\n#string"
+  problemMessage: "Compilation aborted due to fatal '#name' at:\n#string"
   severity: INTERNAL_PROBLEM
 
 InternalProblemLabelUsageInVariablesDeclaration:
-  template: "Unexpected usage of label inside declaration of variables."
+  problemMessage: "Unexpected usage of label inside declaration of variables."
   severity: INTERNAL_PROBLEM
 
 InternalProblemUnfinishedTypeVariable:
-  template: "Unfinished type variable '#name' found in non-source library '#uri'."
+  problemMessage: "Unfinished type variable '#name' found in non-source library '#uri'."
   severity: INTERNAL_PROBLEM
 
 InternalProblemUnsupportedNullability:
-  template: "Unsupported nullability value '#string' on type '#type'."
+  problemMessage: "Unsupported nullability value '#string' on type '#type'."
   severity: INTERNAL_PROBLEM
 
 IncrementalCompilerIllegalParameter:
-  template: "Illegal parameter name '#string' found during expression compilation."
+  problemMessage: "Illegal parameter name '#string' found during expression compilation."
 
 IncrementalCompilerIllegalTypeParameter:
-  template: "Illegal type parameter name '#string' found during expression compilation."
+  problemMessage: "Illegal type parameter name '#string' found during expression compilation."
 
 DebugTrace:
-  template: "Fatal '#name' at:\n#string"
+  problemMessage: "Fatal '#name' at:\n#string"
   severity: IGNORED
 
 MissingPrefixInDeferredImport:
   index: 30
-  template: "Deferred imports should have a prefix."
-  tip: "Try adding a prefix to the import by adding an 'as' clause."
+  problemMessage: "Deferred imports should have a prefix."
+  correctionMessage: "Try adding a prefix to the import by adding an 'as' clause."
   analyzerCode: ParserErrorCode.MISSING_PREFIX_IN_DEFERRED_IMPORT
 
 DeferredAfterPrefix:
   index: 68
-  template: "The deferred keyword should come immediately before the prefix ('as' clause)."
-  tip: "Try moving the deferred keyword before the prefix."
+  problemMessage: "The deferred keyword should come immediately before the prefix ('as' clause)."
+  correctionMessage: "Try moving the deferred keyword before the prefix."
   analyzerCode: ParserErrorCode.DEFERRED_AFTER_PREFIX
 
 DuplicateDeferred:
   index: 71
-  template: "An import directive can only have one 'deferred' keyword."
-  tip: "Try removing all but one 'deferred' keyword."
+  problemMessage: "An import directive can only have one 'deferred' keyword."
+  correctionMessage: "Try removing all but one 'deferred' keyword."
   analyzerCode: ParserErrorCode.DUPLICATE_DEFERRED
 
 DeferredTypeAnnotation:
-  template: "The type '#type' is deferred loaded via prefix '#name' and can't be used as a type annotation."
-  tip: "Try removing 'deferred' from the import of '#name' or use a supertype of '#type' that isn't deferred."
+  problemMessage: "The type '#type' is deferred loaded via prefix '#name' and can't be used as a type annotation."
+  correctionMessage: "Try removing 'deferred' from the import of '#name' or use a supertype of '#type' that isn't deferred."
   analyzerCode: TYPE_ANNOTATION_DEFERRED_CLASS
 
 DuplicatePrefix:
   index: 73
-  template: "An import directive can only have one prefix ('as' clause)."
-  tip: "Try removing all but one prefix."
+  problemMessage: "An import directive can only have one prefix ('as' clause)."
+  correctionMessage: "Try removing all but one prefix."
   analyzerCode: ParserErrorCode.DUPLICATE_PREFIX
 
 PrefixAfterCombinator:
   index: 6
-  template: "The prefix ('as' clause) should come before any show/hide combinators."
-  tip: "Try moving the prefix before the combinators."
+  problemMessage: "The prefix ('as' clause) should come before any show/hide combinators."
+  correctionMessage: "Try moving the prefix before the combinators."
   analyzerCode: ParserErrorCode.PREFIX_AFTER_COMBINATOR
 
 DuplicatedExport:
-  template: "'#name' is exported from both '#uri' and '#uri2'."
+  problemMessage: "'#name' is exported from both '#uri' and '#uri2'."
   analyzerCode: AMBIGUOUS_EXPORT
   script:
     lib1.dart: "class A {}"
@@ -2095,10 +2095,10 @@
     main.dart: "export 'lib1.dart'; export 'lib2.dart';"
 
 DuplicatedExportInType:
-  template: "'#name' is exported from both '#uri' and '#uri2'."
+  problemMessage: "'#name' is exported from both '#uri' and '#uri2'."
 
 DuplicatedImportInType:
-  template: "'#name' is imported from both '#uri' and '#uri2'."
+  problemMessage: "'#name' is imported from both '#uri' and '#uri2'."
   analyzerCode: AMBIGUOUS_IMPORT
   script:
     lib1.dart: "class A {}"
@@ -2106,7 +2106,7 @@
     main.dart: "import 'lib1.dart'; import 'lib2.dart'; A a;"
 
 CyclicClassHierarchy:
-  template: "'#name' is a supertype of itself."
+  problemMessage: "'#name' is a supertype of itself."
   analyzerCode: RECURSIVE_INTERFACE_INHERITANCE
   script:
     - |
@@ -2120,18 +2120,18 @@
     - "class C implements C {}"
 
 ExtendingEnum:
-  template: "'#name' is an enum and can't be extended or implemented."
+  problemMessage: "'#name' is an enum and can't be extended or implemented."
   analyzerCode: EXTENDS_ENUM
 
 ExtendingRestricted:
-  template: "'#name' is restricted and can't be extended or implemented."
+  problemMessage: "'#name' is restricted and can't be extended or implemented."
   analyzerCode: EXTENDS_DISALLOWED_CLASS
 
 NoUnnamedConstructorInObject:
-  template: "'Object' has no unnamed constructor."
+  problemMessage: "'Object' has no unnamed constructor."
 
 IllegalAsyncGeneratorReturnType:
-  template: "Functions marked 'async*' must have a return type assignable to 'Stream'."
+  problemMessage: "Functions marked 'async*' must have a return type assignable to 'Stream'."
   analyzerCode: ILLEGAL_ASYNC_GENERATOR_RETURN_TYPE
   script:
     - >-
@@ -2140,14 +2140,14 @@
       }
 
 IllegalAsyncGeneratorVoidReturnType:
-  template: "Functions marked 'async*' can't have return type 'void'."
+  problemMessage: "Functions marked 'async*' can't have return type 'void'."
   script:
     - >-
       void g() async* {
       }
 
 IllegalAsyncReturnType:
-  template: "Functions marked 'async' must have a return type assignable to 'Future'."
+  problemMessage: "Functions marked 'async' must have a return type assignable to 'Future'."
   analyzerCode: ILLEGAL_ASYNC_RETURN_TYPE
   script:
     - >-
@@ -2156,7 +2156,7 @@
       }
 
 IllegalSyncGeneratorReturnType:
-  template: "Functions marked 'sync*' must have a return type assignable to 'Iterable'."
+  problemMessage: "Functions marked 'sync*' must have a return type assignable to 'Iterable'."
   analyzerCode: ILLEGAL_SYNC_GENERATOR_RETURN_TYPE
   script:
     - >-
@@ -2165,7 +2165,7 @@
       }
 
 IllegalSyncGeneratorVoidReturnType:
-  template: "Functions marked 'sync*' can't have return type 'void'."
+  problemMessage: "Functions marked 'sync*' can't have return type 'void'."
   script:
     - >-
       void g() sync* {
@@ -2173,76 +2173,76 @@
 
 IllegalMixinDueToConstructors:
   # a class with a constructor is used as a mixin
-  template: "Can't use '#name' as a mixin because it has constructors."
+  problemMessage: "Can't use '#name' as a mixin because it has constructors."
   analyzerCode: MIXIN_DECLARES_CONSTRUCTOR # CompileTimeErrorCode
 
 MixinDeclaresConstructor:
   # a mixin declaration contains a constructor declaration
   index: 95
-  template: "Mixins can't declare constructors."
+  problemMessage: "Mixins can't declare constructors."
   analyzerCode: ParserErrorCode.MIXIN_DECLARES_CONSTRUCTOR
 
 IllegalMixinDueToConstructorsCause:
-  template: "This constructor prevents using '#name' as a mixin."
+  problemMessage: "This constructor prevents using '#name' as a mixin."
   severity: CONTEXT
 
 ExtensionDeclaresAbstractMember:
   index: 94
-  template: "Extensions can't declare abstract members."
-  tip: "Try providing an implementation for the member."
+  problemMessage: "Extensions can't declare abstract members."
+  correctionMessage: "Try providing an implementation for the member."
   analyzerCode: ParserErrorCode.EXTENSION_DECLARES_ABSTRACT_MEMBER
   hasPublishedDocs: true
 
 ExtensionDeclaresConstructor:
   index: 92
-  template: "Extensions can't declare constructors."
-  tip: "Try removing the constructor declaration."
+  problemMessage: "Extensions can't declare constructors."
+  correctionMessage: "Try removing the constructor declaration."
   analyzerCode: ParserErrorCode.EXTENSION_DECLARES_CONSTRUCTOR
   hasPublishedDocs: true
 
 ExtensionDeclaresInstanceField:
   index: 93
-  template: "Extensions can't declare instance fields"
-  tip: "Try removing the field declaration or making it a static field"
+  problemMessage: "Extensions can't declare instance fields"
+  correctionMessage: "Try removing the field declaration or making it a static field"
   analyzerCode: ParserErrorCode.EXTENSION_DECLARES_INSTANCE_FIELD
   hasPublishedDocs: true
 
 ConflictsWithConstructor:
-  template: "Conflicts with constructor '#name'."
+  problemMessage: "Conflicts with constructor '#name'."
   analyzerCode: CONFLICTS_WITH_CONSTRUCTOR
 
 ConflictsWithFactory:
-  template: "Conflicts with factory '#name'."
+  problemMessage: "Conflicts with factory '#name'."
 
 ConflictsWithMember:
-  template: "Conflicts with member '#name'."
+  problemMessage: "Conflicts with member '#name'."
   analyzerCode: CONFLICTS_WITH_MEMBER
 
 ConflictsWithImplicitSetter:
-  template: "Conflicts with the implicit setter of the field '#name'."
+  problemMessage: "Conflicts with the implicit setter of the field '#name'."
   analyzerCode: CONFLICTS_WITH_MEMBER
 
 ConflictsWithSetter:
-  template: "Conflicts with setter '#name'."
+  problemMessage: "Conflicts with setter '#name'."
   analyzerCode: CONFLICTS_WITH_MEMBER
 
 ConflictsWithTypeVariable:
-  template: "Conflicts with type variable '#name'."
+  problemMessage: "Conflicts with type variable '#name'."
   analyzerCode: CONFLICTING_TYPE_VARIABLE_AND_MEMBER
 
 ConflictsWithTypeVariableCause:
-  template: "This is the type variable."
+  problemMessage: "This is the type variable."
   severity: CONTEXT
 
 ExtensionMemberConflictsWithObjectMember:
-  template: "This extension member conflicts with Object member '#name'."
+  problemMessage: "This extension member conflicts with Object member '#name'."
   script:
     extension Extension on String {
       int get noSuchMethod => 42;
     }
 
 DeclaredMemberConflictsWithInheritedMember:
-  template: "Can't declare a member that conflicts with an inherited one."
+  problemMessage: "Can't declare a member that conflicts with an inherited one."
   analyzerCode: DECLARED_MEMBER_CONFLICTS_WITH_INHERITED
   script:
     - >-
@@ -2275,15 +2275,15 @@
       }
 
 DeclaredMemberConflictsWithInheritedMemberCause:
-  template: "This is the inherited member."
+  problemMessage: "This is the inherited member."
   severity: CONTEXT
 
 DeclaredMemberConflictsWithOverriddenMembersCause:
-  template: "This is one of the overridden members."
+  problemMessage: "This is one of the overridden members."
   severity: CONTEXT
 
 InheritedMembersConflict:
-  template: "Can't inherit members that conflict with each other."
+  problemMessage: "Can't inherit members that conflict with each other."
   analyzerCode: CONFLICTS_WITH_INHERITED_MEMBER
   script:
     - >-
@@ -2312,60 +2312,60 @@
       abstract class C extends A implements B {}
 
 InheritedMembersConflictCause1:
-  template: "This is one inherited member."
+  problemMessage: "This is one inherited member."
   severity: CONTEXT
 
 InheritedMembersConflictCause2:
-  template: "This is the other inherited member."
+  problemMessage: "This is the other inherited member."
   severity: CONTEXT
 
 IllegalMixin:
-  template: "The type '#name' can't be mixed in."
+  problemMessage: "The type '#name' can't be mixed in."
   analyzerCode: ILLEGAL_MIXIN
 
 OverrideTypeVariablesMismatch:
-  template: "Declared type variables of '#name' doesn't match those on overridden method '#name2'."
+  problemMessage: "Declared type variables of '#name' doesn't match those on overridden method '#name2'."
   analyzerCode: INVALID_METHOD_OVERRIDE_TYPE_PARAMETERS
 
 OverrideTypeVariablesBoundMismatch:
-  template: "Declared bound '#type' of type variable '#name' of '#name2' doesn't match the bound '#type2' on overridden method '#name3'."
+  problemMessage: "Declared bound '#type' of type variable '#name' of '#name2' doesn't match the bound '#type2' on overridden method '#name3'."
 
 OverriddenMethodCause:
-  template: "This is the overridden method ('#name')."
+  problemMessage: "This is the overridden method ('#name')."
   severity: CONTEXT
 
 OverrideMismatchNamedParameter:
-  template: "The method '#name' doesn't have the named parameter '#name2' of overridden method '#name3'."
+  problemMessage: "The method '#name' doesn't have the named parameter '#name2' of overridden method '#name3'."
   analyzerCode: INVALID_OVERRIDE_NAMED
 
 OverrideFewerNamedArguments:
-  template: "The method '#name' has fewer named arguments than those of overridden method '#name2'."
+  problemMessage: "The method '#name' has fewer named arguments than those of overridden method '#name2'."
   analyzerCode: INVALID_OVERRIDE_NAMED
 
 OverrideFewerPositionalArguments:
-  template: "The method '#name' has fewer positional arguments than those of overridden method '#name2'."
+  problemMessage: "The method '#name' has fewer positional arguments than those of overridden method '#name2'."
   analyzerCode: INVALID_OVERRIDE_POSITIONAL
 
 OverrideMoreRequiredArguments:
-  template: "The method '#name' has more required arguments than those of overridden method '#name2'."
+  problemMessage: "The method '#name' has more required arguments than those of overridden method '#name2'."
   analyzerCode: INVALID_OVERRIDE_REQUIRED
 
 OverrideTypeMismatchParameter:
-  template: "The parameter '#name' of the method '#name2' has type '#type', which does not match the corresponding type, '#type2', in the overridden method, '#name3'."
-  tip: "Change to a supertype of '#type2', or, for a covariant parameter, a subtype."
+  problemMessage: "The parameter '#name' of the method '#name2' has type '#type', which does not match the corresponding type, '#type2', in the overridden method, '#name3'."
+  correctionMessage: "Change to a supertype of '#type2', or, for a covariant parameter, a subtype."
   analyzerCode: INVALID_METHOD_OVERRIDE
 
 OverrideTypeMismatchReturnType:
-  template: "The return type of the method '#name' is '#type', which does not match the return type, '#type2', of the overridden method, '#name2'."
-  tip: "Change to a subtype of '#type2'."
+  problemMessage: "The return type of the method '#name' is '#type', which does not match the return type, '#type2', of the overridden method, '#name2'."
+  correctionMessage: "Change to a subtype of '#type2'."
   analyzerCode: INVALID_METHOD_OVERRIDE
 
 OverrideTypeMismatchSetter:
-  template: "The field '#name' has type '#type', which does not match the corresponding type, '#type2', in the overridden setter, '#name2'."
+  problemMessage: "The field '#name' has type '#type', which does not match the corresponding type, '#type2', in the overridden setter, '#name2'."
   analyzerCode: INVALID_METHOD_OVERRIDE
 
 OverrideMismatchRequiredNamedParameter:
-  template: "The required named parameter '#name' in method '#name2' is not required in overridden method '#name3'."
+  problemMessage: "The required named parameter '#name' in method '#name2' is not required in overridden method '#name3'."
   configuration: nnbd-strong
   script: |
     abstract class A {
@@ -2376,7 +2376,7 @@
     }
 
 InvalidGetterSetterType:
-  template: "The type '#type' of the getter '#name' is not a subtype of the type '#type2' of the setter '#name2'."
+  problemMessage: "The type '#type' of the getter '#name' is not a subtype of the type '#type2' of the setter '#name2'."
   configuration: nnbd-strong
   script: |
     abstract class A {
@@ -2385,7 +2385,7 @@
     }
 
 InvalidGetterSetterTypeGetterInherited:
-  template: "The type '#type' of the inherited getter '#name' is not a subtype of the type '#type2' of the setter '#name2'."
+  problemMessage: "The type '#type' of the inherited getter '#name' is not a subtype of the type '#type2' of the setter '#name2'."
   configuration: nnbd-strong
   script: |
     abstract class A {
@@ -2396,7 +2396,7 @@
     }
 
 InvalidGetterSetterTypeFieldInherited:
-  template: "The type '#type' of the inherited field '#name' is not a subtype of the type '#type2' of the setter '#name2'."
+  problemMessage: "The type '#type' of the inherited field '#name' is not a subtype of the type '#type2' of the setter '#name2'."
   configuration: nnbd-strong
   script: |
     abstract class A {
@@ -2408,7 +2408,7 @@
     }
 
 InvalidGetterSetterTypeSetterInheritedGetter:
-  template: "The type '#type' of the getter '#name' is not a subtype of the type '#type2' of the inherited setter '#name2'."
+  problemMessage: "The type '#type' of the getter '#name' is not a subtype of the type '#type2' of the inherited setter '#name2'."
   configuration: nnbd-strong
   script: |
     abstract class A {
@@ -2419,7 +2419,7 @@
     }
 
 InvalidGetterSetterTypeSetterInheritedField:
-  template: "The type '#type' of the field '#name' is not a subtype of the type '#type2' of the inherited setter '#name2'."
+  problemMessage: "The type '#type' of the field '#name' is not a subtype of the type '#type2' of the inherited setter '#name2'."
   configuration: nnbd-strong
   script: |
     abstract class A {
@@ -2431,7 +2431,7 @@
     }
 
 InvalidGetterSetterTypeBothInheritedField:
-  template: "The type '#type' of the inherited field '#name' is not a subtype of the type '#type2' of the inherited setter '#name2'."
+  problemMessage: "The type '#type' of the inherited field '#name' is not a subtype of the type '#type2' of the inherited setter '#name2'."
   configuration: nnbd-strong
   script: |
     abstract class A {
@@ -2444,7 +2444,7 @@
     abstract class C implements A, B {}
 
 InvalidGetterSetterTypeBothInheritedGetter:
-  template: "The type '#type' of the inherited getter '#name' is not a subtype of the type '#type2' of the inherited setter '#name2'."
+  problemMessage: "The type '#type' of the inherited getter '#name' is not a subtype of the type '#type2' of the inherited setter '#name2'."
   configuration: nnbd-strong
   script: |
     abstract class A {
@@ -2456,7 +2456,7 @@
     abstract class C implements A, B {}
 
 InvalidGetterSetterTypeLegacy:
-  template: "The type '#type' of the getter '#name' is not assignable to the type '#type2' of the setter '#name2'."
+  problemMessage: "The type '#type' of the getter '#name' is not assignable to the type '#type2' of the setter '#name2'."
   script: |
     // @dart=2.9
     abstract class A {
@@ -2465,7 +2465,7 @@
     }
 
 InvalidGetterSetterTypeGetterInheritedLegacy:
-  template: "The type '#type' of the inherited getter '#name' is not assignable to the type '#type2' of the setter '#name2'."
+  problemMessage: "The type '#type' of the inherited getter '#name' is not assignable to the type '#type2' of the setter '#name2'."
   script: |
     // @dart=2.9
     abstract class A {
@@ -2476,7 +2476,7 @@
     }
 
 InvalidGetterSetterTypeFieldInheritedLegacy:
-  template: "The type '#type' of the inherited field '#name' is not assignable to the type '#type2' of the setter '#name2'."
+  problemMessage: "The type '#type' of the inherited field '#name' is not assignable to the type '#type2' of the setter '#name2'."
   script: |
     // @dart=2.9
     abstract class A {
@@ -2488,7 +2488,7 @@
     }
 
 InvalidGetterSetterTypeSetterInheritedGetterLegacy:
-  template: "The type '#type' of the getter '#name' is not assignable to the type '#type2' of the inherited setter '#name2'."
+  problemMessage: "The type '#type' of the getter '#name' is not assignable to the type '#type2' of the inherited setter '#name2'."
   script: |
     // @dart=2.9
     abstract class A {
@@ -2499,7 +2499,7 @@
     }
 
 InvalidGetterSetterTypeSetterInheritedFieldLegacy:
-  template: "The type '#type' of the field '#name' is not assignable to the type '#type2' of the inherited setter '#name2'."
+  problemMessage: "The type '#type' of the field '#name' is not assignable to the type '#type2' of the inherited setter '#name2'."
   script: |
     // @dart=2.9
     abstract class A {
@@ -2511,7 +2511,7 @@
     }
 
 InvalidGetterSetterTypeBothInheritedFieldLegacy:
-  template: "The type '#type' of the inherited field '#name' is not assignable to the type '#type2' of the inherited setter '#name2'."
+  problemMessage: "The type '#type' of the inherited field '#name' is not assignable to the type '#type2' of the inherited setter '#name2'."
   script: |
     // @dart=2.9
     abstract class A {
@@ -2524,7 +2524,7 @@
     abstract class C implements A, B {}
 
 InvalidGetterSetterTypeBothInheritedGetterLegacy:
-  template: "The type '#type' of the inherited getter '#name' is not assignable to the type '#type2' of the inherited setter '#name2'."
+  problemMessage: "The type '#type' of the inherited getter '#name' is not assignable to the type '#type2' of the inherited setter '#name2'."
   script: |
     // @dart=2.9
     abstract class A {
@@ -2536,73 +2536,73 @@
     abstract class C implements A, B {}
 
 InvalidGetterSetterTypeFieldContext:
-  template: "This is the declaration of the field '#name'."
+  problemMessage: "This is the declaration of the field '#name'."
   severity: CONTEXT
 
 InvalidGetterSetterTypeGetterContext:
-  template: "This is the declaration of the getter '#name'."
+  problemMessage: "This is the declaration of the getter '#name'."
   severity: CONTEXT
 
 InvalidGetterSetterTypeSetterContext:
-  template: "This is the declaration of the setter '#name'."
+  problemMessage: "This is the declaration of the setter '#name'."
   severity: CONTEXT
 
 PartOfSelf:
-  template: "A file can't be a part of itself."
+  problemMessage: "A file can't be a part of itself."
   analyzerCode: PART_OF_NON_PART
   script:
     main.dart: "part 'main.dart';"
 
 TypeVariableDuplicatedName:
-  template: "A type variable can't have the same name as another."
+  problemMessage: "A type variable can't have the same name as another."
   analyzerCode: DUPLICATE_DEFINITION
 
 TypeVariableDuplicatedNameCause:
-  template: "The other type variable named '#name'."
+  problemMessage: "The other type variable named '#name'."
   severity: CONTEXT
 
 TypeVariableSameNameAsEnclosing:
-  template: "A type variable can't have the same name as its enclosing declaration."
+  problemMessage: "A type variable can't have the same name as its enclosing declaration."
   analyzerCode: CONFLICTING_TYPE_VARIABLE_AND_CLASS
 
 AnnotationOnTypeArgument:
-  template: "Type arguments can't have annotations because they aren't declarations."
+  problemMessage: "Type arguments can't have annotations because they aren't declarations."
   analyzerCode: ParserErrorCode.ANNOTATION_ON_TYPE_ARGUMENT
   index: 111
   script:
     - "class A<E> {} class C { m() => new A<@Object() C>(); }"
 
 AnnotationOnFunctionTypeTypeVariable:
-  template: "A type variable on a function type can't have annotations."
+  problemMessage: "A type variable on a function type can't have annotations."
   script: |
      // @dart=2.13
      main() { Function<@Object() T>() x; }
 
 ExpectedEnumBody:
-  template: "Expected a enum body, but got '#lexeme'."
-  tip: "An enum definition must have a body with at least one constant name."
+  problemMessage: "Expected a enum body, but got '#lexeme'."
+  correctionMessage: "An enum definition must have a body with at least one constant name."
   analyzerCode: MISSING_ENUM_BODY
   script:
     - "enum E"
 
 EnumDeclarationEmpty:
-  template: "An enum declaration can't be empty."
+  problemMessage: "An enum declaration can't be empty."
   analyzerCode: EMPTY_ENUM_BODY
   script:
     - "enum E {}"
 
 ExternalClass:
   index: 3
-  template: "Classes can't be declared to be 'external'."
-  tip: "Try removing the keyword 'external'."
+  problemMessage: "Classes can't be declared to be 'external'."
+  correctionMessage: "Try removing the keyword 'external'."
   analyzerCode: ParserErrorCode.EXTERNAL_CLASS
   script:
     - "external class C {}"
 
 ExternalEnum:
   index: 5
-  template: "Enums can't be declared to be 'external'."
-  tip: "Try removing the keyword 'external'."
+  problemMessage: "Enums can't be declared to be 'external'."
+  correctionMessage: "Try removing the keyword 'external'."
   analyzerCode: ParserErrorCode.EXTERNAL_ENUM
   script:
     - "external enum E {ONE}"
@@ -2610,7 +2610,7 @@
 ExternalMethodWithBody:
   # TODO(danrubel): remove reference to `native` once support has been removed
   index: 49
-  template: "An external or native method can't have a body."
+  problemMessage: "An external or native method can't have a body."
   analyzerCode: ParserErrorCode.EXTERNAL_METHOD_WITH_BODY
   script:
     - "class C {external foo() {}}"
@@ -2619,7 +2619,7 @@
 
 ExternalConstructorWithInitializer:
   index: 106
-  template: "An external constructor can't have any initializers."
+  problemMessage: "An external constructor can't have any initializers."
   analyzerCode: ParserErrorCode.EXTERNAL_CONSTRUCTOR_WITH_INITIALIZER
   script:
     - "class C { int? x; external C() : x = 1; }"
@@ -2627,60 +2627,60 @@
 
 ExternalTypedef:
   index: 76
-  template: "Typedefs can't be declared to be 'external'."
-  tip: "Try removing the keyword 'external'."
+  problemMessage: "Typedefs can't be declared to be 'external'."
+  correctionMessage: "Try removing the keyword 'external'."
   analyzerCode: ParserErrorCode.EXTERNAL_TYPEDEF
   script:
     - "external typedef F();"
 
 OperatorWithOptionalFormals:
-  template: "An operator can't have optional parameters."
+  problemMessage: "An operator can't have optional parameters."
 
 OperatorWithTypeParameters:
-  template: "Types parameters aren't allowed when defining an operator."
-  tip: "Try removing the type parameters."
+  problemMessage: "Types parameters aren't allowed when defining an operator."
+  correctionMessage: "Try removing the type parameters."
   analyzerCode: TYPE_PARAMETER_ON_OPERATOR
   script:
     - "class C { operator []<T>(T t) => null; }"
 
 PlatformPrivateLibraryAccess:
-  template: "Can't access platform private library."
+  problemMessage: "Can't access platform private library."
   analyzerCode: IMPORT_INTERNAL_LIBRARY
 
 TypedefNotFunction:
-  template: "Can't create typedef from non-function type."
+  problemMessage: "Can't create typedef from non-function type."
   analyzerCode: INVALID_GENERIC_FUNCTION_TYPE
 
 TypedefNotType:
-  template: "Can't create typedef from non-type."
+  problemMessage: "Can't create typedef from non-type."
   analyzerCode: INVALID_TYPE_IN_TYPEDEF
 
 TypedefTypeVariableNotConstructor:
-  template: "Can't use a typedef denoting a type variable as a constructor, nor for a static member access."
+  problemMessage: "Can't use a typedef denoting a type variable as a constructor, nor for a static member access."
 
 TypedefTypeVariableNotConstructorCause:
-  template: "This is the type variable ultimately denoted."
+  problemMessage: "This is the type variable ultimately denoted."
   severity: CONTEXT
 
 TypedefNullableType:
-  template: "Can't create typedef from nullable type."
+  problemMessage: "Can't create typedef from nullable type."
   configuration: nnbd-strong
   script: |
     // @dart=2.12
     typedef F = void Function()?;
 
 TypedefUnaliasedTypeCause:
-  template: "This is the type denoted by the type alias."
+  problemMessage: "This is the type denoted by the type alias."
   severity: CONTEXT
 
 TypedefCause:
-  template: "The issue arises via this type alias."
+  problemMessage: "The issue arises via this type alias."
   severity: CONTEXT
 
 LibraryDirectiveNotFirst:
   index: 37
-  template: "The library directive must appear before all other directives."
-  tip: "Try moving the library directive before any other directives."
+  problemMessage: "The library directive must appear before all other directives."
+  correctionMessage: "Try moving the library directive before any other directives."
   analyzerCode: ParserErrorCode.LIBRARY_DIRECTIVE_NOT_FIRST
   script:
     - "class Foo{} library l;"
@@ -2689,40 +2689,40 @@
 
 ImportAfterPart:
   index: 10
-  template: "Import directives must precede part directives."
-  tip: "Try moving the import directives before the part directives."
+  problemMessage: "Import directives must precede part directives."
+  correctionMessage: "Try moving the import directives before the part directives."
   analyzerCode: ParserErrorCode.IMPORT_DIRECTIVE_AFTER_PART_DIRECTIVE
   script:
     - "part 'foo.dart'; import 'bar.dart';"
 
 ExportAfterPart:
   index: 75
-  template: "Export directives must precede part directives."
-  tip: "Try moving the export directives before the part directives."
+  problemMessage: "Export directives must precede part directives."
+  correctionMessage: "Try moving the export directives before the part directives."
   analyzerCode: ParserErrorCode.EXPORT_DIRECTIVE_AFTER_PART_DIRECTIVE
   script:
     - "part 'foo.dart'; export 'bar.dart';"
 
 DirectiveAfterDeclaration:
   index: 69
-  template: "Directives must appear before any declarations."
-  tip: "Try moving the directive before any declarations."
+  problemMessage: "Directives must appear before any declarations."
+  correctionMessage: "Try moving the directive before any declarations."
   analyzerCode: ParserErrorCode.DIRECTIVE_AFTER_DECLARATION
   script:
     - "class foo { } import 'bar.dart';"
     - "class foo { } export 'bar.dart';"
 
 NonPartOfDirectiveInPart:
-  template: "The part-of directive must be the only directive in a part."
-  tip: "Try removing the other directives, or moving them to the library for which this is a part."
+  problemMessage: "The part-of directive must be the only directive in a part."
+  correctionMessage: "Try removing the other directives, or moving them to the library for which this is a part."
   analyzerCode: NON_PART_OF_DIRECTIVE_IN_PART
   script:
     - "part of l; part 'f.dart';"
 
 PartOfTwice:
   index: 25
-  template: "Only one part-of directive may be declared in a file."
-  tip: "Try removing all but one of the part-of directives."
+  problemMessage: "Only one part-of directive may be declared in a file."
+  correctionMessage: "Try removing all but one of the part-of directives."
   analyzerCode: ParserErrorCode.MULTIPLE_PART_OF_DIRECTIVES
   script:
     - main.dart: |
@@ -2745,15 +2745,15 @@
         part of "main.dart";
 
 PartTwice:
-  template: "Can't use '#uri' as a part more than once."
+  problemMessage: "Can't use '#uri' as a part more than once."
   analyzerCode: DUPLICATE_PART
   script:
     part.dart: "part of 'main.dart';"
     main.dart: "part 'part.dart'; part 'part.dart';"
 
 PartOfTwoLibraries:
-  template: "A file can't be part of more than one library."
-  tip: "Try moving the shared declarations into the libraries, or into a new library."
+  problemMessage: "A file can't be part of more than one library."
+  correctionMessage: "Try moving the shared declarations into the libraries, or into a new library."
   analyzerCode: PART_OF_DIFFERENT_LIBRARY
   script:
     main.dart: "library lib; import 'lib.dart'; part 'part.dart';"
@@ -2761,29 +2761,29 @@
     part.dart: "part of lib;"
 
 PartOfTwoLibrariesContext:
-  template: "Used as a part in this library."
+  problemMessage: "Used as a part in this library."
   severity: CONTEXT
 
 FactoryTopLevelDeclaration:
   index: 78
-  template: "Top-level declarations can't be declared to be 'factory'."
-  tip: "Try removing the keyword 'factory'."
+  problemMessage: "Top-level declarations can't be declared to be 'factory'."
+  correctionMessage: "Try removing the keyword 'factory'."
   analyzerCode: ParserErrorCode.FACTORY_TOP_LEVEL_DECLARATION
   script:
     - "factory class C {}"
 
 RedirectionInNonFactory:
   index: 21
-  template: "Only factory constructor can specify '=' redirection."
-  tip: "Try making this a factory constructor, or remove the redirection."
+  problemMessage: "Only factory constructor can specify '=' redirection."
+  correctionMessage: "Try making this a factory constructor, or remove the redirection."
   analyzerCode: ParserErrorCode.REDIRECTION_IN_NON_FACTORY_CONSTRUCTOR
   script:
     - "class C { C() = D; }"
 
 TopLevelOperator:
   index: 14
-  template: "Operators must be declared within a class."
-  tip: "Try removing the operator, moving it to a class, or converting it to be a function."
+  problemMessage: "Operators must be declared within a class."
+  correctionMessage: "Try removing the operator, moving it to a class, or converting it to be a function."
   analyzerCode: ParserErrorCode.TOP_LEVEL_OPERATOR
   script:
     - "operator +(bool x, bool y) => x | y;"
@@ -2791,36 +2791,36 @@
     - "void operator +(bool x, bool y) => x | y;"
 
 MissingFunctionParameters:
-  template: "A function declaration needs an explicit list of parameters."
-  tip: "Try adding a parameter list to the function declaration."
+  problemMessage: "A function declaration needs an explicit list of parameters."
+  correctionMessage: "Try adding a parameter list to the function declaration."
   analyzerCode: MISSING_FUNCTION_PARAMETERS
   script:
     - "void f {}"
 
 MissingMethodParameters:
-  template: "A method declaration needs an explicit list of parameters."
-  tip: "Try adding a parameter list to the method declaration."
+  problemMessage: "A method declaration needs an explicit list of parameters."
+  correctionMessage: "Try adding a parameter list to the method declaration."
   analyzerCode: MISSING_METHOD_PARAMETERS
   script:
     - "class C { void m {} }"
 
 MissingTypedefParameters:
-  template: "A typedef needs an explicit list of parameters."
-  tip: "Try adding a parameter list to the typedef."
+  problemMessage: "A typedef needs an explicit list of parameters."
+  correctionMessage: "Try adding a parameter list to the typedef."
   analyzerCode: MISSING_TYPEDEF_PARAMETERS
   script:
     - "typedef void F;"
 
 MissingPartOf:
-  template: "Can't use '#uri' as a part, because it has no 'part of' declaration."
+  problemMessage: "Can't use '#uri' as a part, because it has no 'part of' declaration."
   analyzerCode: PART_OF_NON_PART
   script:
     part.dart: ""
     main.dart: "part 'part.dart';"
 
 PartOfInLibrary:
-  template: "Can't import '#uri', because it has a 'part of' declaration."
-  tip: "Try removing the 'part of' declaration, or using '#uri' as a part."
+  problemMessage: "Can't import '#uri', because it has a 'part of' declaration."
+  correctionMessage: "Try removing the 'part of' declaration, or using '#uri' as a part."
   analyzerCode: IMPORT_OF_NON_LIBRARY
   script:
     main.dart: |
@@ -2835,8 +2835,8 @@
       part "part.dart";
 
 PartInPart:
-  template: "A file that's a part of a library can't have parts itself."
-  tip: "Try moving the 'part' declaration to the containing library."
+  problemMessage: "A file that's a part of a library can't have parts itself."
+  correctionMessage: "Try moving the 'part' declaration to the containing library."
   analyzerCode: NON_PART_OF_DIRECTIVE_IN_PART
   script:
     main.dart: |
@@ -2851,16 +2851,16 @@
       part of "part.dart";
 
 PartInPartLibraryContext:
-  template: "This is the containing library."
+  problemMessage: "This is the containing library."
   severity: CONTEXT
 
 PartOrphan:
-  template: "This part doesn't have a containing library."
-  tip: "Try removing the 'part of' declaration."
+  problemMessage: "This part doesn't have a containing library."
+  correctionMessage: "Try removing the 'part of' declaration."
   script: "part of none; main() {}"
 
 PartExport:
-  template: "Can't export this file because it contains a 'part of' declaration."
+  problemMessage: "Can't export this file because it contains a 'part of' declaration."
   analyzerCode: EXPORT_OF_NON_LIBRARY
   script:
     main.dart: |
@@ -2875,24 +2875,24 @@
       part "part.dart";
 
 PartExportContext:
-  template: "This is the file that can't be exported."
+  problemMessage: "This is the file that can't be exported."
   severity: CONTEXT
 
 SupertypeIsFunction:
-  template: "Can't use a function type as supertype."
+  problemMessage: "Can't use a function type as supertype."
 
 DeferredPrefixDuplicated:
-  template: "Can't use the name '#name' for a deferred library, as the name is used elsewhere."
+  problemMessage: "Can't use the name '#name' for a deferred library, as the name is used elsewhere."
   analyzerCode: SHARED_DEFERRED_PREFIX
 
 DeferredPrefixDuplicatedCause:
-  template: "'#name' is used here."
+  problemMessage: "'#name' is used here."
   severity: CONTEXT
 
 TypeArgumentsOnTypeVariable:
   index: 13
-  template: "Can't use type arguments with type variable '#name'."
-  tip: "Try removing the type arguments."
+  problemMessage: "Can't use type arguments with type variable '#name'."
+  correctionMessage: "Try removing the type arguments."
   analyzerCode: ParserErrorCode.TYPE_ARGUMENTS_ON_TYPE_VARIABLE
   script:
     - "dynamic<T>(x) => 0"
@@ -2913,7 +2913,7 @@
 # definitions. Consequently, it is more convenient to use the word
 # "declaration" instead of "definition" as the former implies less.
 DuplicatedDeclaration:
-  template: "'#name' is already declared in this scope."
+  problemMessage: "'#name' is already declared in this scope."
   analyzerCode: DUPLICATE_DEFINITION
   script: |
     class C {} // First declaration (related information points here).
@@ -2925,16 +2925,16 @@
     }
 
 DuplicatedDeclarationCause:
-  template: "Previous declaration of '#name'."
+  problemMessage: "Previous declaration of '#name'."
   severity: CONTEXT
 
 DuplicatedDeclarationSyntheticCause:
-  template: "Previous declaration of '#name' is implied by this definition."
+  problemMessage: "Previous declaration of '#name' is implied by this definition."
   severity: CONTEXT
 
 # Use this message when a duplicated declaration is used.
 DuplicatedDeclarationUse:
-  template: "Can't use '#name' because it is declared more than once."
+  problemMessage: "Can't use '#name' because it is declared more than once."
   exampleAllowMoreCodes: true
   script:
     - main.dart: |
@@ -2969,30 +2969,30 @@
         var f = new C().method();
 
 DuplicatedNamePreviouslyUsed:
-  template: "Can't declare '#name' because it was already used in this scope."
+  problemMessage: "Can't declare '#name' because it was already used in this scope."
   analyzerCode: REFERENCED_BEFORE_DECLARATION
   script:
     - "main(arguments) { arguments; var arguments; }"
 
 DuplicatedNamePreviouslyUsedCause:
-  template: "Previous use of '#name'."
+  problemMessage: "Previous use of '#name'."
   severity: CONTEXT
 
 DuplicatedNamedArgument:
-  template: "Duplicated named argument '#name'."
+  problemMessage: "Duplicated named argument '#name'."
   analyzerCode: DUPLICATE_NAMED_ARGUMENT
 
 DuplicatedParameterName:
-  template: "Duplicated parameter name '#name'."
+  problemMessage: "Duplicated parameter name '#name'."
   analyzerCode: DUPLICATE_DEFINITION
 
 DuplicatedParameterNameCause:
-  template: "Other parameter named '#name'."
+  problemMessage: "Other parameter named '#name'."
   severity: CONTEXT
 
 MemberWithSameNameAsClass:
-  template: "A class member can't have the same name as the enclosing class."
-  tip: "Try renaming the member."
+  problemMessage: "A class member can't have the same name as the enclosing class."
+  correctionMessage: "Try renaming the member."
   analyzerCode: ParserErrorCode.MEMBER_WITH_CLASS_NAME
   index: 105
   script:
@@ -3004,26 +3004,26 @@
     - "class C { int? A, B, C, D, E; }"
 
 EnumConstantSameNameAsEnclosing:
-  template: "Name of enum constant '#name' can't be the same as the enum's own name."
+  problemMessage: "Name of enum constant '#name' can't be the same as the enum's own name."
   analyzerCode: ENUM_CONSTANT_WITH_ENUM_NAME
 
 MissingOperatorKeyword:
   index: 31
-  template: "Operator declarations must be preceded by the keyword 'operator'."
-  tip: "Try adding the keyword 'operator'."
+  problemMessage: "Operator declarations must be preceded by the keyword 'operator'."
+  correctionMessage: "Try adding the keyword 'operator'."
   analyzerCode: ParserErrorCode.MISSING_KEYWORD_OPERATOR
   script:
     - "class C { +(x) {} }"
 
 InvalidOperator:
   index: 39
-  template: "The string '#lexeme' isn't a user-definable operator."
+  problemMessage: "The string '#lexeme' isn't a user-definable operator."
   analyzerCode: ParserErrorCode.INVALID_OPERATOR
   script:
     - "class C { void operator %=(x) {} }"
 
 NotBinaryOperator:
-  template: "'#lexeme' isn't a binary operator."
+  problemMessage: "'#lexeme' isn't a binary operator."
   script: >
     class C { operator~() { return null; } }
 
@@ -3033,25 +3033,25 @@
     }
 
 OperatorParameterMismatch0:
-  template: "Operator '#name' shouldn't have any parameters."
+  problemMessage: "Operator '#name' shouldn't have any parameters."
 
 OperatorParameterMismatch1:
-  template: "Operator '#name' should have exactly one parameter."
+  problemMessage: "Operator '#name' should have exactly one parameter."
   analyzerCode: WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
 
 OperatorParameterMismatch2:
-  template: "Operator '#name' should have exactly two parameters."
+  problemMessage: "Operator '#name' should have exactly two parameters."
   analyzerCode: WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
 
 OperatorMinusParameterMismatch:
-  template: "Operator '#name' should have zero or one parameter."
-  tip: >-
+  problemMessage: "Operator '#name' should have zero or one parameter."
+  correctionMessage: >-
     With zero parameters, it has the syntactic form '-a', formally known as 'unary-'.
     With one parameter, it has the syntactic form 'a - b', formally known as '-'.
   analyzerCode: WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR_MINUS
 
 SupertypeIsIllegal:
-  template: "The type '#name' can't be used as supertype."
+  problemMessage: "The type '#name' can't be used as supertype."
   analyzerCode: EXTENDS_NON_CLASS
   script: |
 
@@ -3059,14 +3059,14 @@
     class C extends dynamic {}
 
 SupertypeIsIllegalAliased:
-  template: "The type '#name' which is an alias of '#type' can't be used as supertype."
+  problemMessage: "The type '#name' which is an alias of '#type' can't be used as supertype."
   analyzerCode: EXTENDS_NON_CLASS
   script: |
     typedef F = void Function();
     class C extends F {}
 
 SupertypeIsNullableAliased:
-  template: "The type '#name' which is an alias of '#type' can't be used as supertype because it is nullable."
+  problemMessage: "The type '#name' which is an alias of '#type' can't be used as supertype because it is nullable."
   analyzerCode: EXTENDS_NON_CLASS
   experiments: nonfunction-type-aliases
   script: |
@@ -3075,78 +3075,78 @@
     class C extends B {}
 
 SupertypeIsTypeVariable:
-  template: "The type variable '#name' can't be used as supertype."
+  problemMessage: "The type variable '#name' can't be used as supertype."
   analyzerCode: EXTENDS_NON_CLASS
   script: |
     class C<T> extends T {}
 
 PartOfLibraryNameMismatch:
-  template: "Using '#uri' as part of '#name' but its 'part of' declaration says '#name2'."
+  problemMessage: "Using '#uri' as part of '#name' but its 'part of' declaration says '#name2'."
   analyzerCode: PART_OF_DIFFERENT_LIBRARY
 
 PartOfUseUri:
-  template: "Using '#uri' as part of '#uri2' but its 'part of' declaration says '#name'."
-  tip: "Try changing the 'part of' declaration to use a relative file name."
+  problemMessage: "Using '#uri' as part of '#uri2' but its 'part of' declaration says '#name'."
+  correctionMessage: "Try changing the 'part of' declaration to use a relative file name."
   analyzerCode: PART_OF_UNNAMED_LIBRARY
 
 PartOfUriMismatch:
-  template: "Using '#uri' as part of '#uri2' but its 'part of' declaration says '#uri3'."
+  problemMessage: "Using '#uri' as part of '#uri2' but its 'part of' declaration says '#uri3'."
   analyzerCode: PART_OF_DIFFERENT_LIBRARY
 
 MissingMain:
-  template: "No 'main' method found."
-  tip: "Try adding a method named 'main' to your program."
+  problemMessage: "No 'main' method found."
+  correctionMessage: "Try adding a method named 'main' to your program."
 
 MissingInput:
-  template: "No input file provided to the compiler."
+  problemMessage: "No input file provided to the compiler."
 
 InputFileNotFound:
-  template: "Input file not found: #uri."
+  problemMessage: "Input file not found: #uri."
 
 SdkRootNotFound:
-  template: "SDK root directory not found: #uri."
+  problemMessage: "SDK root directory not found: #uri."
 
 SdkSummaryNotFound:
-  template: "SDK summary not found: #uri."
+  problemMessage: "SDK summary not found: #uri."
 
 SdkSpecificationNotFound:
-  template: "SDK libraries specification not found: #uri."
-  tip: "Normally, the specification is a file named 'libraries.json' in the Dart SDK install location."
+  problemMessage: "SDK libraries specification not found: #uri."
+  correctionMessage: "Normally, the specification is a file named 'libraries.json' in the Dart SDK install location."
 
 InvalidSuperInInitializer:
   index: 47
-  template: "Can only use 'super' in an initializer for calling the superclass constructor (e.g. 'super()' or 'super.namedConstructor()')"
+  problemMessage: "Can only use 'super' in an initializer for calling the superclass constructor (e.g. 'super()' or 'super.namedConstructor()')"
   analyzerCode: ParserErrorCode.INVALID_SUPER_IN_INITIALIZER
 
 InvalidThisInInitializer:
   index: 65
-  template: "Can only use 'this' in an initializer for field initialization (e.g. 'this.x = something') and constructor redirection (e.g. 'this()' or 'this.namedConstructor())"
+  problemMessage: "Can only use 'this' in an initializer for field initialization (e.g. 'this.x = something') and constructor redirection (e.g. 'this()' or 'this.namedConstructor())"
   analyzerCode: ParserErrorCode.INVALID_THIS_IN_INITIALIZER
 
 ThisAccessInFieldInitializer:
-  template: "Can't access 'this' in a field initializer to read '#name'."
+  problemMessage: "Can't access 'this' in a field initializer to read '#name'."
   analyzerCode: THIS_ACCESS_FROM_FIELD_INITIALIZER
 
 ThisOrSuperAccessInFieldInitializer:
-  template: "Can't access '#string' in a field initializer."
+  problemMessage: "Can't access '#string' in a field initializer."
   analyzerCode: THIS_ACCESS_FROM_INITIALIZER
 
 ThisAsIdentifier:
-  template: "Expected identifier, but got 'this'."
+  problemMessage: "Expected identifier, but got 'this'."
   analyzerCode: INVALID_REFERENCE_TO_THIS
 
 # TODO(johnniwinther): Confusing message, it should probably mention that `super` is not available.
 SuperAsIdentifier:
-  template: "Expected identifier, but got 'super'."
+  problemMessage: "Expected identifier, but got 'super'."
   analyzerCode: SUPER_AS_EXPRESSION
 
 SuperAsExpression:
-  template: "Can't use 'super' as an expression."
-  tip: "To delegate a constructor to a super constructor, put the super call as an initializer."
+  problemMessage: "Can't use 'super' as an expression."
+  correctionMessage: "To delegate a constructor to a super constructor, put the super call as an initializer."
   analyzerCode: SUPER_AS_EXPRESSION
 
 SwitchExpressionNotAssignable:
-  template: "Type '#type' of the switch expression isn't assignable to the type '#type2' of this case expression."
+  problemMessage: "Type '#type' of the switch expression isn't assignable to the type '#type2' of this case expression."
   analyzerCode: SWITCH_EXPRESSION_NOT_ASSIGNABLE
   script:
     - |
@@ -3158,11 +3158,11 @@
       }
 
 SwitchExpressionNotAssignableCause:
-  template: "The switch expression is here."
+  problemMessage: "The switch expression is here."
   severity: CONTEXT
 
 SwitchExpressionNotSubtype:
-  template: "Type '#type' of the case expression is not a subtype of type '#type2' of this switch expression."
+  problemMessage: "Type '#type' of the case expression is not a subtype of type '#type2' of this switch expression."
   script:
     - |
       void f() {
@@ -3173,43 +3173,43 @@
 
 SwitchHasCaseAfterDefault:
   index: 16
-  template: "The default case should be the last case in a switch statement."
-  tip: "Try moving the default case after the other case clauses."
+  problemMessage: "The default case should be the last case in a switch statement."
+  correctionMessage: "Try moving the default case after the other case clauses."
   analyzerCode: ParserErrorCode.SWITCH_HAS_CASE_AFTER_DEFAULT_CASE
   script:
     - "class C { foo(int a) {switch (a) {default: return 0; case 1: return 1;}} }"
 
 SwitchHasMultipleDefaults:
   index: 15
-  template: "The 'default' case can only be declared once."
-  tip: "Try removing all but one default case."
+  problemMessage: "The 'default' case can only be declared once."
+  correctionMessage: "Try removing all but one default case."
   analyzerCode: ParserErrorCode.SWITCH_HAS_MULTIPLE_DEFAULT_CASES
   script:
     - "class C { foo(int a) {switch (a) {default: return 0; default: return 1;}} }"
 
 SwitchCaseFallThrough:
-  template: "Switch case may fall through to the next case."
+  problemMessage: "Switch case may fall through to the next case."
   analyzerCode: CASE_BLOCK_NOT_TERMINATED
 
 FieldAlreadyInitializedAtDeclaration:
-  template: "'#name' is a final instance variable that was initialized at the declaration."
+  problemMessage: "'#name' is a final instance variable that was initialized at the declaration."
   analyzerCode: FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION
   script:
     - "class C { final int x = 2; C(): this.x = 3 {} }"
 
 FieldAlreadyInitializedAtDeclarationCause:
-  template: "'#name' was initialized here."
+  problemMessage: "'#name' was initialized here."
   severity: CONTEXT
 
 ConstructorInitializeSameInstanceVariableSeveralTimes:
-  template: "'#name' was already initialized by this constructor."
+  problemMessage: "'#name' was already initialized by this constructor."
   analyzerCode: FIELD_INITIALIZED_BY_MULTIPLE_INITIALIZERS
   script:
     - "class C { final int x; C(): this.x = 1, this.x = 2 {} }"
     - "class C { int x; C(): this.x = 1, this.x = 2 {} }"
 
 TypeVariableInStaticContext:
-  template: "Type variables can't be used in static members."
+  problemMessage: "Type variables can't be used in static members."
   analyzerCode: TYPE_PARAMETER_REFERENCED_BY_STATIC
   declaration:
     - |
@@ -3244,7 +3244,7 @@
       }
 
 TypeVariableInConstantContext:
-  template: "Type variables can't be used as constants."
+  problemMessage: "Type variables can't be used as constants."
   analyzerCode: TYPE_PARAMETER_IN_CONST_EXPRESSION
   declaration:
     - |
@@ -3267,26 +3267,26 @@
       }
 
 SuperclassMethodArgumentMismatch:
-  template: "Superclass doesn't have a method named '#name' with matching arguments."
+  problemMessage: "Superclass doesn't have a method named '#name' with matching arguments."
 
 SuperclassHasNoMember:
-  template: "Superclass has no member named '#name'."
+  problemMessage: "Superclass has no member named '#name'."
   analyzerCode: UNDEFINED_SUPER_GETTER
 
 SuperclassHasNoGetter:
-  template: "Superclass has no getter named '#name'."
+  problemMessage: "Superclass has no getter named '#name'."
   analyzerCode: UNDEFINED_SUPER_GETTER
 
 SuperclassHasNoSetter:
-  template: "Superclass has no setter named '#name'."
+  problemMessage: "Superclass has no setter named '#name'."
   analyzerCode: UNDEFINED_SUPER_SETTER
 
 SuperclassHasNoMethod:
-  template: "Superclass has no method named '#name'."
+  problemMessage: "Superclass has no method named '#name'."
   analyzerCode: UNDEFINED_SUPER_METHOD
 
 SuperclassHasNoConstructor:
-  template: "Superclass has no constructor named '#name'."
+  problemMessage: "Superclass has no constructor named '#name'."
   analyzerCode:
     - UNDEFINED_CONSTRUCTOR_IN_INITIALIZER
     - UNDEFINED_CONSTRUCTOR_IN_INITIALIZER_DEFAULT
@@ -3309,26 +3309,26 @@
       }
 
 SuperclassHasNoDefaultConstructor:
-  template: "The superclass, '#name', has no unnamed constructor that takes no arguments."
+  problemMessage: "The superclass, '#name', has no unnamed constructor that takes no arguments."
   analyzerCode: NO_DEFAULT_SUPER_CONSTRUCTOR_IMPLICIT
 
 ConstConstructorNonFinalField:
-  template: "Constructor is marked 'const' so all fields must be final."
+  problemMessage: "Constructor is marked 'const' so all fields must be final."
   analyzerCode: CONST_CONSTRUCTOR_WITH_NON_FINAL_FIELD
 
 ConstConstructorNonFinalFieldCause:
-  template: "Field isn't final, but constructor is 'const'."
+  problemMessage: "Field isn't final, but constructor is 'const'."
   severity: CONTEXT
 
 ConstConstructorLateFinalFieldError:
-  template: "Can't have a late final field in a class with a const constructor."
+  problemMessage: "Can't have a late final field in a class with a const constructor."
 
 ConstConstructorLateFinalFieldCause:
-  template: "This constructor is const."
+  problemMessage: "This constructor is const."
   severity: CONTEXT
 
 ConstConstructorRedirectionToNonConst:
-  template: "A constant constructor can't call a non-constant constructor."
+  problemMessage: "A constant constructor can't call a non-constant constructor."
   script:
     - >-
       class A {
@@ -3337,7 +3337,7 @@
       }
 
 ConstConstructorWithNonConstSuper:
-  template: "A constant constructor can't call a non-constant super constructor."
+  problemMessage: "A constant constructor can't call a non-constant super constructor."
   analyzerCode: CONST_CONSTRUCTOR_WITH_NON_CONST_SUPER
   script:
     - >-
@@ -3349,115 +3349,115 @@
       }
 
 AccessError:
-  template: "Access error: '#name'."
+  problemMessage: "Access error: '#name'."
 
 ExpressionNotMetadata:
-  template: "This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor."
+  problemMessage: "This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor."
 
 ExpectedAnInitializer:
   index: 36
-  template: "Expected an initializer."
+  problemMessage: "Expected an initializer."
   analyzerCode: ParserErrorCode.MISSING_INITIALIZER
   script:
     - "class C { C() : {} }"
 
 MissingAssignmentInInitializer:
   index: 34
-  template: "Expected an assignment after the field name."
-  tip: "To initialize a field, use the syntax 'name = value'."
+  problemMessage: "Expected an assignment after the field name."
+  correctionMessage: "To initialize a field, use the syntax 'name = value'."
   analyzerCode: ParserErrorCode.MISSING_ASSIGNMENT_IN_INITIALIZER
   script:
     - "class C { C() : x(3) {} }"
 
 RedirectingConstructorWithBody:
   index: 22
-  template: "Redirecting constructors can't have a body."
-  tip: "Try removing the body, or not making this a redirecting constructor."
+  problemMessage: "Redirecting constructors can't have a body."
+  correctionMessage: "Try removing the body, or not making this a redirecting constructor."
   analyzerCode: ParserErrorCode.REDIRECTING_CONSTRUCTOR_WITH_BODY
   script:
     - "class C { C() : this.x() {} }"
 
 CannotAssignToParenthesizedExpression:
-  template: "Can't assign to a parenthesized expression."
+  problemMessage: "Can't assign to a parenthesized expression."
   analyzerCode: ASSIGNMENT_TO_PARENTHESIZED_EXPRESSION
 
 NotAnLvalue:
-  template: "Can't assign to this."
+  problemMessage: "Can't assign to this."
   analyzerCode: NOT_AN_LVALUE
 
 CannotAssignToSuper:
-  template: "Can't assign to super."
+  problemMessage: "Can't assign to super."
   analyzerCode: NOT_AN_LVALUE
 
 IllegalAssignmentToNonAssignable:
   index: 45
-  template: "Illegal assignment to non-assignable expression."
+  problemMessage: "Illegal assignment to non-assignable expression."
   analyzerCode: ParserErrorCode.ILLEGAL_ASSIGNMENT_TO_NON_ASSIGNABLE
   script:
     - "main(){ f()++; }"
 
 MissingAssignableSelector:
   index: 35
-  template: "Missing selector such as '.identifier' or '[0]'."
-  tip: "Try adding a selector."
+  problemMessage: "Missing selector such as '.identifier' or '[0]'."
+  correctionMessage: "Try adding a selector."
   analyzerCode: ParserErrorCode.MISSING_ASSIGNABLE_SELECTOR
   script:
     - "main(){ ++f(); }"
 
 CannotReadSdkSpecification:
-  template: "Unable to read the 'libraries.json' specification file:\n  #string."
+  problemMessage: "Unable to read the 'libraries.json' specification file:\n  #string."
 
 CantInferPackagesFromManyInputs:
-  template: "Can't infer a packages file when compiling multiple inputs."
-  tip: "Try specifying the file explicitly with the --packages option."
+  problemMessage: "Can't infer a packages file when compiling multiple inputs."
+  correctionMessage: "Try specifying the file explicitly with the --packages option."
 
 CantInferPackagesFromPackageUri:
-  template: "Can't infer a packages file from an input 'package:*' URI."
-  tip: "Try specifying the file explicitly with the --packages option."
+  problemMessage: "Can't infer a packages file from an input 'package:*' URI."
+  correctionMessage: "Try specifying the file explicitly with the --packages option."
 
 PackageNotFound:
-  template: "Couldn't resolve the package '#name' in '#uri'."
+  problemMessage: "Couldn't resolve the package '#name' in '#uri'."
 
 InvalidPackageUri:
-  template: "Invalid package URI '#uri':\n  #string."
+  problemMessage: "Invalid package URI '#uri':\n  #string."
 
 CouldNotParseUri:
-  template: "Couldn't parse URI '#string':\n  #string2."
+  problemMessage: "Couldn't parse URI '#string':\n  #string2."
 
 ExpectedUri:
-  template: "Expected a URI."
+  problemMessage: "Expected a URI."
 
 InterpolationInUri:
-  template: "Can't use string interpolation in a URI."
+  problemMessage: "Can't use string interpolation in a URI."
   analyzerCode: INVALID_LITERAL_IN_CONFIGURATION
 
 IntegerLiteralIsOutOfRange:
-  template: "The integer literal #string can't be represented in 64 bits."
-  tip: "Try using the BigInt class if you need an integer larger than 9,223,372,036,854,775,807 or less than -9,223,372,036,854,775,808."
+  problemMessage: "The integer literal #string can't be represented in 64 bits."
+  correctionMessage: "Try using the BigInt class if you need an integer larger than 9,223,372,036,854,775,807 or less than -9,223,372,036,854,775,808."
   analyzerCode: INTEGER_LITERAL_OUT_OF_RANGE
 
 ColonInPlaceOfIn:
   index: 54
-  template: "For-in loops use 'in' rather than a colon."
-  tip: "Try replacing the colon with the keyword 'in'."
+  problemMessage: "For-in loops use 'in' rather than a colon."
+  correctionMessage: "Try replacing the colon with the keyword 'in'."
   analyzerCode: ParserErrorCode.COLON_IN_PLACE_OF_IN
 
 BinaryOperatorWrittenOut:
   index: 112
-  template: "Binary operator '#string' is written as '#string2' instead of the written out word."
-  tip: "Try replacing '#string' with '#string2'."
+  problemMessage: "Binary operator '#string' is written as '#string2' instead of the written out word."
+  correctionMessage: "Try replacing '#string' with '#string2'."
   analyzerCode: ParserErrorCode.BINARY_OPERATOR_WRITTEN_OUT
   script: >
     int foo(int x, int y) => x xor y;
 
 ExternalFactoryRedirection:
   index: 85
-  template: "A redirecting factory can't be external."
-  tip: "Try removing the 'external' modifier."
+  problemMessage: "A redirecting factory can't be external."
+  correctionMessage: "Try removing the 'external' modifier."
   analyzerCode: ParserErrorCode.EXTERNAL_FACTORY_REDIRECTION
 
 ArgumentTypeNotAssignable:
-  template: "The argument type '#type' can't be assigned to the parameter type '#type2'."
+  problemMessage: "The argument type '#type' can't be assigned to the parameter type '#type2'."
   analyzerCode: ARGUMENT_TYPE_NOT_ASSIGNABLE
   script: >
     method(int i) {}
@@ -3466,7 +3466,7 @@
     }
 
 ArgumentTypeNotAssignableNullability:
-  template: "The argument type '#type' can't be assigned to the parameter type '#type2' because '#type' is nullable and '#type2' isn't."
+  problemMessage: "The argument type '#type' can't be assigned to the parameter type '#type2' because '#type' is nullable and '#type2' isn't."
   analyzerCode: ARGUMENT_TYPE_NOT_ASSIGNABLE
   configuration: nnbd-strong
   script: >
@@ -3477,7 +3477,7 @@
     }
 
 ArgumentTypeNotAssignablePartNullability:
-  template: "The argument type '#type' can't be assigned to the parameter type '#type2' because '#type3' is nullable and '#type4' isn't."
+  problemMessage: "The argument type '#type' can't be assigned to the parameter type '#type2' because '#type3' is nullable and '#type4' isn't."
   analyzerCode: ARGUMENT_TYPE_NOT_ASSIGNABLE
   configuration: nnbd-strong
   script: >
@@ -3488,7 +3488,7 @@
     }
 
 ArgumentTypeNotAssignableNullabilityNull:
-  template: "The value 'null' can't be assigned to the parameter type '#type' because '#type' is not nullable."
+  problemMessage: "The value 'null' can't be assigned to the parameter type '#type' because '#type' is not nullable."
   analyzerCode: ARGUMENT_TYPE_NOT_ASSIGNABLE
   configuration: nnbd-strong
   script: >
@@ -3498,7 +3498,7 @@
     }
 
 ArgumentTypeNotAssignableNullabilityNullType:
-  template: "The argument type '#type' can't be assigned to the parameter type '#type2' because '#type2' is not nullable."
+  problemMessage: "The argument type '#type' can't be assigned to the parameter type '#type2' because '#type2' is not nullable."
   analyzerCode: ARGUMENT_TYPE_NOT_ASSIGNABLE
   configuration: nnbd-strong
   script: >
@@ -3509,7 +3509,7 @@
     }
 
 InvalidAssignmentError:
-  template: "A value of type '#type' can't be assigned to a variable of type '#type2'."
+  problemMessage: "A value of type '#type' can't be assigned to a variable of type '#type2'."
   analyzerCode: INVALID_ASSIGNMENT
   script: >
     main() {
@@ -3518,7 +3518,7 @@
     }
 
 InvalidAssignmentErrorNullability:
-  template: "A value of type '#type' can't be assigned to a variable of type '#type2' because '#type' is nullable and '#type2' isn't."
+  problemMessage: "A value of type '#type' can't be assigned to a variable of type '#type2' because '#type' is nullable and '#type2' isn't."
   analyzerCode: INVALID_ASSIGNMENT
   configuration: nnbd-strong
   script: >
@@ -3529,7 +3529,7 @@
     }
 
 InvalidAssignmentErrorPartNullability:
-  template: "A value of type '#type' can't be assigned to a variable of type '#type2' because '#type3' is nullable and '#type4' isn't."
+  problemMessage: "A value of type '#type' can't be assigned to a variable of type '#type2' because '#type3' is nullable and '#type4' isn't."
   analyzerCode: INVALID_ASSIGNMENT
   configuration: nnbd-strong
   script: >
@@ -3540,7 +3540,7 @@
     }
 
 InvalidAssignmentErrorNullabilityNull:
-  template: "The value 'null' can't be assigned to a variable of type '#type' because '#type' is not nullable."
+  problemMessage: "The value 'null' can't be assigned to a variable of type '#type' because '#type' is not nullable."
   analyzerCode: INVALID_ASSIGNMENT
   configuration: nnbd-strong
   script: >
@@ -3550,7 +3550,7 @@
     }
 
 InvalidAssignmentErrorNullabilityNullType:
-  template: "A value of type '#type' can't be assigned to a variable of type '#type2' because '#type2' is not nullable."
+  problemMessage: "A value of type '#type' can't be assigned to a variable of type '#type2' because '#type2' is not nullable."
   analyzerCode: INVALID_ASSIGNMENT
   configuration: nnbd-strong
   script: >
@@ -3561,79 +3561,79 @@
     }
 
 PatchClassTypeVariablesMismatch:
-  template: "A patch class must have the same number of type variables as its origin class."
+  problemMessage: "A patch class must have the same number of type variables as its origin class."
 
 PatchClassOrigin:
-  template: "This is the origin class."
+  problemMessage: "This is the origin class."
   severity: CONTEXT
 
 PatchDeclarationMismatch:
-  template: "This patch doesn't match origin declaration."
+  problemMessage: "This patch doesn't match origin declaration."
 
 PatchDeclarationOrigin:
-  template: "This is the origin declaration."
+  problemMessage: "This is the origin declaration."
   severity: CONTEXT
 
 PatchInjectionFailed:
-  template: "Can't inject '#name' into '#uri'."
-  tip: "Try adding '@patch'."
+  problemMessage: "Can't inject '#name' into '#uri'."
+  correctionMessage: "Try adding '@patch'."
 
 PatchNonExternal:
-  template: "Can't apply this patch as its origin declaration isn't external."
-  tip: "Try adding 'external' to the origin declaration."
+  problemMessage: "Can't apply this patch as its origin declaration isn't external."
+  correctionMessage: "Try adding 'external' to the origin declaration."
 
 InvalidCastFunctionExpr:
-  template: "The function expression type '#type' isn't of expected type '#type2'."
-  tip: "Change the type of the function expression or the context in which it is used."
+  problemMessage: "The function expression type '#type' isn't of expected type '#type2'."
+  correctionMessage: "Change the type of the function expression or the context in which it is used."
   analyzerCode: INVALID_CAST_FUNCTION_EXPR
 
 InvalidCastLiteralList:
-  template: "The list literal type '#type' isn't of expected type '#type2'."
-  tip: "Change the type of the list literal or the context in which it is used."
+  problemMessage: "The list literal type '#type' isn't of expected type '#type2'."
+  correctionMessage: "Change the type of the list literal or the context in which it is used."
   analyzerCode: INVALID_CAST_LITERAL_LIST
 
 InvalidCastLiteralMap:
-  template: "The map literal type '#type' isn't of expected type '#type2'."
-  tip: "Change the type of the map literal or the context in which it is used."
+  problemMessage: "The map literal type '#type' isn't of expected type '#type2'."
+  correctionMessage: "Change the type of the map literal or the context in which it is used."
   analyzerCode: INVALID_CAST_LITERAL_MAP
 
 InvalidCastLiteralSet:
-  template: "The set literal type '#type' isn't of expected type '#type2'."
-  tip: "Change the type of the set literal or the context in which it is used."
+  problemMessage: "The set literal type '#type' isn't of expected type '#type2'."
+  correctionMessage: "Change the type of the set literal or the context in which it is used."
   analyzerCode: INVALID_CAST_LITERAL_SET
 
 InvalidCastLocalFunction:
-  template: "The local function has type '#type' that isn't of expected type '#type2'."
-  tip: "Change the type of the function or the context in which it is used."
+  problemMessage: "The local function has type '#type' that isn't of expected type '#type2'."
+  correctionMessage: "Change the type of the function or the context in which it is used."
   analyzerCode: INVALID_CAST_FUNCTION
 
 InvalidCastNewExpr:
-  template: "The constructor returns type '#type' that isn't of expected type '#type2'."
-  tip: "Change the type of the object being constructed or the context in which it is used."
+  problemMessage: "The constructor returns type '#type' that isn't of expected type '#type2'."
+  correctionMessage: "Change the type of the object being constructed or the context in which it is used."
   analyzerCode: INVALID_CAST_NEW_EXPR
 
 InvalidCastStaticMethod:
-  template: "The static method has type '#type' that isn't of expected type '#type2'."
-  tip: "Change the type of the method or the context in which it is used."
+  problemMessage: "The static method has type '#type' that isn't of expected type '#type2'."
+  correctionMessage: "Change the type of the method or the context in which it is used."
   analyzerCode: INVALID_CAST_METHOD
 
 InvalidCastTopLevelFunction:
-  template: "The top level function has type '#type' that isn't of expected type '#type2'."
-  tip: "Change the type of the function or the context in which it is used."
+  problemMessage: "The top level function has type '#type' that isn't of expected type '#type2'."
+  correctionMessage: "Change the type of the function or the context in which it is used."
   analyzerCode: INVALID_CAST_FUNCTION
 
 InvalidCatchArguments:
-  template: "Invalid catch arguments."
+  problemMessage: "Invalid catch arguments."
   analyzerCode: INVALID_CATCH_ARGUMENTS
 
 InvalidUseOfNullAwareAccess:
-  template: "Cannot use '?.' here."
-  tip: "Try using '.'."
+  problemMessage: "Cannot use '?.' here."
+  correctionMessage: "Try using '.'."
   analyzerCode: INVALID_USE_OF_NULL_AWARE_ACCESS
 
 UndefinedGetter:
-  template: "The getter '#name' isn't defined for the class '#type'."
-  tip: "Try correcting the name to the name of an existing getter, or defining a getter or field named '#name'."
+  problemMessage: "The getter '#name' isn't defined for the class '#type'."
+  correctionMessage: "Try correcting the name to the name of an existing getter, or defining a getter or field named '#name'."
   analyzerCode: UNDEFINED_GETTER
   script: >
     class C {}
@@ -3642,8 +3642,8 @@
     }
 
 UndefinedSetter:
-  template: "The setter '#name' isn't defined for the class '#type'."
-  tip: "Try correcting the name to the name of an existing setter, or defining a setter or field named '#name'."
+  problemMessage: "The setter '#name' isn't defined for the class '#type'."
+  correctionMessage: "Try correcting the name to the name of an existing setter, or defining a setter or field named '#name'."
   analyzerCode: UNDEFINED_SETTER
   script: >
     class C {}
@@ -3652,8 +3652,8 @@
     }
 
 UndefinedMethod:
-  template: "The method '#name' isn't defined for the class '#type'."
-  tip: "Try correcting the name to the name of an existing method, or defining a method named '#name'."
+  problemMessage: "The method '#name' isn't defined for the class '#type'."
+  correctionMessage: "Try correcting the name to the name of an existing method, or defining a method named '#name'."
   analyzerCode: UNDEFINED_METHOD
   script: >
     class C {}
@@ -3662,8 +3662,8 @@
     }
 
 UndefinedOperator:
-  template: "The operator '#name' isn't defined for the class '#type'."
-  tip: "Try correcting the operator to an existing operator, or defining a '#name' operator."
+  problemMessage: "The operator '#name' isn't defined for the class '#type'."
+  correctionMessage: "Try correcting the operator to an existing operator, or defining a '#name' operator."
   analyzerCode: UNDEFINED_METHOD
   script: >
     class C {}
@@ -3672,24 +3672,24 @@
     }
 
 UndefinedExtensionGetter:
-  template: "The getter '#name' isn't defined for the extension '#type'."
-  tip: "Try correcting the name to the name of an existing getter, or defining a getter or field named '#name'."
+  problemMessage: "The getter '#name' isn't defined for the extension '#type'."
+  correctionMessage: "Try correcting the name to the name of an existing getter, or defining a getter or field named '#name'."
 
 UndefinedExtensionSetter:
-  template: "The setter '#name' isn't defined for the extension '#type'."
-  tip: "Try correcting the name to the name of an existing setter, or defining a setter or field named '#name'."
+  problemMessage: "The setter '#name' isn't defined for the extension '#type'."
+  correctionMessage: "Try correcting the name to the name of an existing setter, or defining a setter or field named '#name'."
 
 UndefinedExtensionMethod:
-  template: "The method '#name' isn't defined for the extension '#type'."
-  tip: "Try correcting the name to the name of an existing method, or defining a method name '#name'."
+  problemMessage: "The method '#name' isn't defined for the extension '#type'."
+  correctionMessage: "Try correcting the name to the name of an existing method, or defining a method name '#name'."
 
 UndefinedExtensionOperator:
-  template: "The operator '#name' isn't defined for the extension '#type'."
-  tip: "Try correcting the operator to an existing operator, or defining a '#name' operator."
+  problemMessage: "The operator '#name' isn't defined for the extension '#type'."
+  correctionMessage: "Try correcting the operator to an existing operator, or defining a '#name' operator."
 
 AmbiguousExtensionMethod:
-  template: "The method '#name' is defined in multiple extensions for '#type' and neither is more specific."
-  tip: "Try using an explicit extension application of the wanted extension or hiding unwanted extensions from scope."
+  problemMessage: "The method '#name' is defined in multiple extensions for '#type' and neither is more specific."
+  correctionMessage: "Try using an explicit extension application of the wanted extension or hiding unwanted extensions from scope."
   script: |
     class C {}
     extension A on C { method() {} }
@@ -3700,8 +3700,8 @@
     }
 
 AmbiguousExtensionProperty:
-  template: "The property '#name' is defined in multiple extensions for '#type' and neither is more specific."
-  tip: "Try using an explicit extension application of the wanted extension or hiding unwanted extensions from scope."
+  problemMessage: "The property '#name' is defined in multiple extensions for '#type' and neither is more specific."
+  correctionMessage: "Try using an explicit extension application of the wanted extension or hiding unwanted extensions from scope."
   script: |
     class C {}
     extension A on C { get property => null; }
@@ -3712,8 +3712,8 @@
     }
 
 AmbiguousExtensionOperator:
-  template: "The operator '#name' is defined in multiple extensions for '#type' and neither is more specific."
-  tip: "Try using an explicit extension application of the wanted extension or hiding unwanted extensions from scope."
+  problemMessage: "The operator '#name' is defined in multiple extensions for '#type' and neither is more specific."
+  correctionMessage: "Try using an explicit extension application of the wanted extension or hiding unwanted extensions from scope."
   script: |
     class C {}
     extension A on C { operator +(int i) {} }
@@ -3724,30 +3724,30 @@
     }
 
 AmbiguousExtensionCause:
-  template: "This is one of the extension members."
+  problemMessage: "This is one of the extension members."
   severity: CONTEXT
 
 SourceOutlineSummary:
-  template: |
+  problemMessage: |
     Built outlines for #count compilation units (#count2 bytes) in #num1%.3ms, that is,
     #num2%12.3 bytes/ms, and
     #num3%12.3 ms/compilation unit.
 
 SourceBodySummary:
-  template: |
+  problemMessage: |
     Built bodies for #count compilation units (#count2 bytes) in #num1%.3ms, that is,
     #num2%12.3 bytes/ms, and
     #num3%12.3 ms/compilation unit.
 
 DillOutlineSummary:
-  template: |
+  problemMessage: |
     Indexed #count libraries (#count2 bytes) in #num1%.3ms, that is,
     #num2%12.3 bytes/ms, and
     #num3%12.3 ms/libraries.
 
 CantInferTypesDueToNoCombinedSignature:
-  template: "Can't infer types for '#name' as the overridden members don't have a combined signature."
-  tip: "Try adding explicit types."
+  problemMessage: "Can't infer types for '#name' as the overridden members don't have a combined signature."
+  correctionMessage: "Try adding explicit types."
   analyzerCode: COMPILE_TIME_ERROR.NO_COMBINED_SUPER_SIGNATURE
   script: |
     class A {
@@ -3761,8 +3761,8 @@
     }
 
 CantInferTypeDueToNoCombinedSignature:
-  template: "Can't infer a type for '#name' as the overridden members don't have a combined signature."
-  tip: "Try adding an explicit type."
+  problemMessage: "Can't infer a type for '#name' as the overridden members don't have a combined signature."
+  correctionMessage: "Try adding an explicit type."
   analyzerCode: COMPILE_TIME_ERROR.NO_COMBINED_SUPER_SIGNATURE
   configuration: nnbd-strong
   script: |
@@ -3777,8 +3777,8 @@
     }
 
 CantInferReturnTypeDueToNoCombinedSignature:
-  template: "Can't infer a return type for '#name' as the overridden members don't have a combined signature."
-  tip: "Try adding an explicit type."
+  problemMessage: "Can't infer a return type for '#name' as the overridden members don't have a combined signature."
+  correctionMessage: "Try adding an explicit type."
   analyzerCode: COMPILE_TIME_ERROR.NO_COMBINED_SUPER_SIGNATURE
   configuration: nnbd-strong
   script: |
@@ -3793,42 +3793,42 @@
     }
 
 CantInferTypeDueToCircularity:
-  template: "Can't infer the type of '#string': circularity found during type inference."
-  tip: "Specify the type explicitly."
+  problemMessage: "Can't infer the type of '#string': circularity found during type inference."
+  correctionMessage: "Specify the type explicitly."
   analyzerCode: RECURSIVE_COMPILE_TIME_CONSTANT
 
 AmbiguousSupertypes:
-  template: "'#name' can't implement both '#type' and '#type2'"
+  problemMessage: "'#name' can't implement both '#type' and '#type2'"
   analyzerCode: AMBIGUOUS_SUPERTYPES
 
 MixinInferenceNoMatchingClass:
-  template: "Type parameters couldn't be inferred for the mixin '#name' because '#name2' does not implement the mixin's supertype constraint '#type'."
+  problemMessage: "Type parameters couldn't be inferred for the mixin '#name' because '#name2' does not implement the mixin's supertype constraint '#type'."
   analyzerCode: MIXIN_INFERENCE_NO_POSSIBLE_SUBSTITUTION
 
 ImplicitCallOfNonMethod:
-  template: "Cannot invoke an instance of '#type' because it declares 'call' to be something other than a method."
-  tip: "Try changing 'call' to a method or explicitly invoke 'call'."
+  problemMessage: "Cannot invoke an instance of '#type' because it declares 'call' to be something other than a method."
+  correctionMessage: "Try changing 'call' to a method or explicitly invoke 'call'."
   analyzerCode: IMPLICIT_CALL_OF_NON_METHOD
 
 ExpectedOneExpression:
-  template: "Expected one expression, but found additional input."
+  problemMessage: "Expected one expression, but found additional input."
 
 ForInLoopNotAssignable:
-  template: "Can't assign to this, so it can't be used in a for-in loop."
+  problemMessage: "Can't assign to this, so it can't be used in a for-in loop."
   statement: "for (1 in []) {}"
 
 ForInLoopExactlyOneVariable:
-  template: "A for-in loop can't have more than one loop variable."
+  problemMessage: "A for-in loop can't have more than one loop variable."
   statement: "for (var x, y in []) {}"
 
 ForInLoopWithConstVariable:
-  template: "A for-in loop-variable can't be 'const'."
-  tip: "Try removing the 'const' modifier."
+  problemMessage: "A for-in loop-variable can't be 'const'."
+  correctionMessage: "Try removing the 'const' modifier."
   analyzerCode: FOR_IN_WITH_CONST_VARIABLE
 
 ForInLoopElementTypeNotAssignable:
-  template: "A value of type '#type' can't be assigned to a variable of type '#type2'."
-  tip: "Try changing the type of the variable."
+  problemMessage: "A value of type '#type' can't be assigned to a variable of type '#type2'."
+  correctionMessage: "Try changing the type of the variable."
   analyzerCode: FOR_IN_OF_INVALID_ELEMENT_TYPE
   script: |
     method() {
@@ -3837,8 +3837,8 @@
     }
 
 ForInLoopElementTypeNotAssignableNullability:
-  template: "A value of type '#type' can't be assigned to a variable of type '#type2' because '#type' is nullable and '#type2' isn't."
-  tip: "Try changing the type of the variable."
+  problemMessage: "A value of type '#type' can't be assigned to a variable of type '#type2' because '#type' is nullable and '#type2' isn't."
+  correctionMessage: "Try changing the type of the variable."
   analyzerCode: FOR_IN_OF_INVALID_ELEMENT_TYPE
   configuration: nnbd-strong
   script: |
@@ -3848,8 +3848,8 @@
     }
 
 ForInLoopElementTypeNotAssignablePartNullability:
-  template: "A value of type '#type' can't be assigned to a variable of type '#type2' because '#type3' is nullable and '#type4' isn't."
-  tip: "Try changing the type of the variable."
+  problemMessage: "A value of type '#type' can't be assigned to a variable of type '#type2' because '#type3' is nullable and '#type4' isn't."
+  correctionMessage: "Try changing the type of the variable."
   analyzerCode: FOR_IN_OF_INVALID_ELEMENT_TYPE
   configuration: nnbd-strong
   script: |
@@ -3859,7 +3859,7 @@
     }
 
 ForInLoopTypeNotIterable:
-  template: "The type '#type' used in the 'for' loop must implement '#type2'."
+  problemMessage: "The type '#type' used in the 'for' loop must implement '#type2'."
   analyzerCode: FOR_IN_OF_INVALID_TYPE
   script: |
     method() {
@@ -3868,7 +3868,7 @@
     }
 
 ForInLoopTypeNotIterableNullability:
-  template: "The type '#type' used in the 'for' loop must implement '#type2' because '#type' is nullable and '#type2' isn't."
+  problemMessage: "The type '#type' used in the 'for' loop must implement '#type2' because '#type' is nullable and '#type2' isn't."
   analyzerCode: FOR_IN_OF_INVALID_TYPE
   configuration: nnbd-strong
   script: |
@@ -3881,12 +3881,12 @@
 # only be a problem at the immediate level as in [ForInLoopTypeNotIterableNullability]. The message is needed for
 # symmetry in the call site.
 ForInLoopTypeNotIterablePartNullability:
-  template: "The type '#type' used in the 'for' loop must implement '#type2' because '#type3' is nullable and '#type4' isn't."
+  problemMessage: "The type '#type' used in the 'for' loop must implement '#type2' because '#type3' is nullable and '#type4' isn't."
   analyzerCode: FOR_IN_OF_INVALID_TYPE
 
 InitializingFormalTypeMismatch:
-  template: "The type of parameter '#name', '#type' is not a subtype of the corresponding field's type, '#type2'."
-  tip: "Try changing the type of parameter '#name' to a subtype of '#type2'."
+  problemMessage: "The type of parameter '#name', '#type' is not a subtype of the corresponding field's type, '#type2'."
+  correctionMessage: "Try changing the type of parameter '#name' to a subtype of '#type2'."
   analyzerCode: INVALID_PARAMETER_DECLARATION
   script: >
     class C {
@@ -3895,11 +3895,11 @@
     }
 
 InitializingFormalTypeMismatchField:
-  template: "The field that corresponds to the parameter."
+  problemMessage: "The field that corresponds to the parameter."
   severity: CONTEXT
 
 InitializeFromDillNotSelfContained:
-  template: |
+  problemMessage: |
     Tried to initialize from a previous compilation (#string), but the file was not self-contained. This might be a bug.
 
     The Dart team would greatly appreciate it if you would take a moment to report this problem at http://dartbug.com/new.
@@ -3911,7 +3911,7 @@
   external: test/incremental_load_from_invalid_dill_test.dart
 
 InitializeFromDillNotSelfContainedNoDump:
-  template: |
+  problemMessage: |
     Tried to initialize from a previous compilation (#string), but the file was not self-contained. This might be a bug.
 
     The Dart team would greatly appreciate it if you would take a moment to report this problem at http://dartbug.com/new.
@@ -3921,7 +3921,7 @@
   external: test/incremental_load_from_invalid_dill_test.dart
 
 InitializeFromDillUnknownProblem:
-  template: |
+  problemMessage: |
     Tried to initialize from a previous compilation (#string), but couldn't.
     Error message was '#string2'.
     Stacktrace included '#string3'.
@@ -3936,7 +3936,7 @@
   external: test/incremental_load_from_invalid_dill_test.dart
 
 InitializeFromDillUnknownProblemNoDump:
-  template: |
+  problemMessage: |
     Tried to initialize from a previous compilation (#string), but couldn't.
     Error message was '#string2'.
     Stacktrace included '#string3'.
@@ -3949,56 +3949,56 @@
   external: test/incremental_load_from_invalid_dill_test.dart
 
 WebLiteralCannotBeRepresentedExactly:
-  template: "The integer literal #string can't be represented exactly in JavaScript."
-  tip: "Try changing the literal to something that can be represented in Javascript. In Javascript #string2 is the nearest value that can be represented exactly."
+  problemMessage: "The integer literal #string can't be represented exactly in JavaScript."
+  correctionMessage: "Try changing the literal to something that can be represented in Javascript. In Javascript #string2 is the nearest value that can be represented exactly."
 
 BoundIssueViaRawTypeWithNonSimpleBounds:
-  template: "Generic type '#name' can't be used without type arguments in a type variable bound."
-  tip: "Try providing type arguments to '#name' here."
+  problemMessage: "Generic type '#name' can't be used without type arguments in a type variable bound."
+  correctionMessage: "Try providing type arguments to '#name' here."
   analyzerCode: NOT_INSTANTIATED_BOUND
   script: >
     class Hest<X extends Hest<X>> {}
     class Fisk<Y extends Hest> {}
 
 NonSimpleBoundViaVariable:
-  template: "Bound of this variable references variable '#name' from the same declaration."
+  problemMessage: "Bound of this variable references variable '#name' from the same declaration."
   severity: CONTEXT
 
 BoundIssueViaLoopNonSimplicity:
-  template: "Generic type '#name' can't be used without type arguments in the bounds of its own type variables."
-  tip: "Try providing type arguments to '#name' here."
+  problemMessage: "Generic type '#name' can't be used without type arguments in the bounds of its own type variables."
+  correctionMessage: "Try providing type arguments to '#name' here."
   analyzerCode: NOT_INSTANTIATED_BOUND
   script: >
     class Hest<X extends Hest> {}
 
 BoundIssueViaCycleNonSimplicity:
-  template: "Generic type '#name' can't be used without type arguments in the bounds of its own type variables. It is referenced indirectly through '#name2'."
-  tip: "Try providing type arguments to '#name2' here or to some other raw types in the bounds along the reference chain."
+  problemMessage: "Generic type '#name' can't be used without type arguments in the bounds of its own type variables. It is referenced indirectly through '#name2'."
+  correctionMessage: "Try providing type arguments to '#name2' here or to some other raw types in the bounds along the reference chain."
   analyzerCode: NOT_INSTANTIATED_BOUND
   script: >
     class Hest<X extends Fisk> {}
     class Fisk<Y extends Hest> {}
 
 NonSimpleBoundViaReference:
-  template: "Bound of this variable references raw type '#name'."
+  problemMessage: "Bound of this variable references raw type '#name'."
   severity: CONTEXT
 
 CycleInTypeVariables:
-  template: "Type '#name' is a bound of itself via '#string'."
-  tip: "Try breaking the cycle by removing at least on of the 'extends' clauses in the cycle."
+  problemMessage: "Type '#name' is a bound of itself via '#string'."
+  correctionMessage: "Try breaking the cycle by removing at least on of the 'extends' clauses in the cycle."
   analyzerCode: TYPE_PARAMETER_SUPERTYPE_OF_ITS_BOUND
   script:
     - "foo<A extends B, B extends A>() {}"
 
 DirectCycleInTypeVariables:
-  template: "Type '#name' can't use itself as a bound."
-  tip: "Try breaking the cycle by removing at least on of the 'extends' clauses in the cycle."
+  problemMessage: "Type '#name' can't use itself as a bound."
+  correctionMessage: "Try breaking the cycle by removing at least on of the 'extends' clauses in the cycle."
   analyzerCode: TYPE_PARAMETER_SUPERTYPE_OF_ITS_BOUND
   script:
     - "foo<A extends A>() {}"
 
 CantUsePrefixAsExpression:
-  template: "A prefix can't be used as an expression."
+  problemMessage: "A prefix can't be used as an expression."
   analyzerCode: PREFIX_IDENTIFIER_NOT_FOLLOWED_BY_DOT
   script: |
     import "dart:core" as prefix;
@@ -4008,8 +4008,8 @@
     }
 
 CantUsePrefixWithNullAware:
-  template: "A prefix can't be used with null-aware operators."
-  tip: "Try replacing '?.' with '.'"
+  problemMessage: "A prefix can't be used with null-aware operators."
+  correctionMessage: "Try replacing '?.' with '.'"
   analyzerCode: PREFIX_IDENTIFIER_NOT_FOLLOWED_BY_DOT
   script: |
     import "dart:core" as prefix;
@@ -4019,14 +4019,14 @@
     }
 
 CantUseControlFlowOrSpreadAsConstant:
-  template: "'#lexeme' is not supported in constant expressions."
+  problemMessage: "'#lexeme' is not supported in constant expressions."
   analyzerCode: NOT_CONSTANT_EXPRESSION
 
 CantUseDeferredPrefixAsConstant:
-  template: >
+  problemMessage: >
     '#lexeme' can't be used in a constant expression because it's marked as
     'deferred' which means it isn't available until loaded.
-  tip: >
+  correctionMessage: >
     Try moving the constant from the deferred library, or removing 'deferred'
     from the import.
   analyzerCode: CONST_DEFERRED_CLASS
@@ -4038,7 +4038,7 @@
     }
 
 CyclicRedirectingFactoryConstructors:
-  template: "Cyclic definition of factory '#name'."
+  problemMessage: "Cyclic definition of factory '#name'."
   analyzerCode: RECURSIVE_FACTORY_REDIRECT
   script: |
     class Foo {
@@ -4048,14 +4048,14 @@
     main() { var foo = new Foo.foo(); }
 
 GenericFunctionTypeInBound:
-  template: "Type variables can't have generic function types in their bounds."
+  problemMessage: "Type variables can't have generic function types in their bounds."
   analyzerCode: GENERIC_FUNCTION_TYPE_CANNOT_BE_BOUND
   script: |
     // @dart=2.13
     class Hest<X extends Y Function<Y>(Y)> {}
 
 VoidExpression:
-  template: "This expression has type 'void' and can't be used."
+  problemMessage: "This expression has type 'void' and can't be used."
   analyzerCode: USE_OF_VOID_RESULT
   statement: |
     {
@@ -4064,12 +4064,12 @@
     }
 
 ReturnFromVoidFunction:
-  template: "Can't return a value from a void function."
+  problemMessage: "Can't return a value from a void function."
   analyzerCode: RETURN_OF_INVALID_TYPE
   declaration: "void foo() { return 1; }"
 
 ReturnWithoutExpression:
-  template: "Must explicitly return a value from a non-void function."
+  problemMessage: "Must explicitly return a value from a non-void function."
   severity: WARNING
   analyzerCode: RETURN_WITHOUT_VALUE
   script: |
@@ -4077,79 +4077,79 @@
     int foo() { return; }
 
 ReturnWithoutExpressionSync:
-  template: "A value must be explicitly returned from a non-void function."
+  problemMessage: "A value must be explicitly returned from a non-void function."
   configuration: nnbd-strong
   script: |
     import "dart:async";
     FutureOr<Object?> foo() { return; }
 
 ReturnWithoutExpressionAsync:
-  template: "A value must be explicitly returned from a non-void async function."
+  problemMessage: "A value must be explicitly returned from a non-void async function."
   configuration: nnbd-strong
   declaration: "Future<int> foo() async { return; }"
 
 InvalidReturn:
-  template: "A value of type '#type' can't be returned from a function with return type '#type2'."
+  problemMessage: "A value of type '#type' can't be returned from a function with return type '#type2'."
   configuration: nnbd-strong
   declaration: "int foo() { return true; }"
 
 InvalidReturnNullability:
-  template: "A value of type '#type' can't be returned from a function with return type '#type2' because '#type' is nullable and '#type2' isn't."
+  problemMessage: "A value of type '#type' can't be returned from a function with return type '#type2' because '#type' is nullable and '#type2' isn't."
   configuration: nnbd-strong
   declaration: "int foo(int? i) { return i; }"
 
 InvalidReturnPartNullability:
-  template: "A value of type '#type' can't be returned from a function with return type '#type2' because '#type3' is nullable and '#type4' isn't."
+  problemMessage: "A value of type '#type' can't be returned from a function with return type '#type2' because '#type3' is nullable and '#type4' isn't."
   configuration: nnbd-strong
   declaration: "List<int> foo(List<int?> list) { return list; }"
 
 InvalidReturnNullabilityNull:
-  template: "The value 'null' can't be returned from a function with return type '#type' because '#type' is not nullable."
+  problemMessage: "The value 'null' can't be returned from a function with return type '#type' because '#type' is not nullable."
   configuration: nnbd-strong
   declaration: "int foo() { return null; }"
 
 InvalidReturnNullabilityNullType:
-  template: "A value of type '#type' can't be returned from a function with return type '#type2' because '#type2' is not nullable."
+  problemMessage: "A value of type '#type' can't be returned from a function with return type '#type2' because '#type2' is not nullable."
   configuration: nnbd-strong
   declaration: "int foo(Null i) { return i; }"
 
 InvalidReturnAsync:
-  template: "A value of type '#type' can't be returned from an async function with return type '#type2'."
+  problemMessage: "A value of type '#type' can't be returned from an async function with return type '#type2'."
   configuration: nnbd-strong
   declaration: "Future<int> foo() async { return true; }"
 
 InvalidReturnAsyncNullability:
-  template: "A value of type '#type' can't be returned from an async function with return type '#type2' because '#type' is nullable and '#type2' isn't."
+  problemMessage: "A value of type '#type' can't be returned from an async function with return type '#type2' because '#type' is nullable and '#type2' isn't."
   configuration: nnbd-strong
   declaration: "Future<int> foo(int? i) async { return i; }"
 
 InvalidReturnAsyncPartNullability:
-  template: "A value of type '#type' can't be returned from an async function with return type '#type2' because '#type3' is nullable and '#type4' isn't."
+  problemMessage: "A value of type '#type' can't be returned from an async function with return type '#type2' because '#type3' is nullable and '#type4' isn't."
   configuration: nnbd-strong
   declaration: "Future<List<int>> foo(List<int?> list) async { return list; }"
 
 InvalidReturnAsyncNullabilityNull:
-  template: "The value 'null' can't be returned from an async function with return type '#type' because '#type' is not nullable."
+  problemMessage: "The value 'null' can't be returned from an async function with return type '#type' because '#type' is not nullable."
   configuration: nnbd-strong
   declaration: "Future<int> foo() async { return null; }"
 
 InvalidReturnAsyncNullabilityNullType:
-  template: "A value of type '#type' can't be returned from an async function with return type '#type2' because '#type2' is not nullable."
+  problemMessage: "A value of type '#type' can't be returned from an async function with return type '#type2' because '#type2' is not nullable."
   configuration: nnbd-strong
   declaration: "Future<int> foo(Null n) async { return n; }"
 
 ImplicitReturnNull:
-  template: "A non-null value must be returned since the return type '#type' doesn't allow null."
+  problemMessage: "A non-null value must be returned since the return type '#type' doesn't allow null."
   configuration: nnbd-strong
   script: |
     String method() {}
 
 RethrowNotCatch:
-  template: "'rethrow' can only be used in catch clauses."
+  problemMessage: "'rethrow' can only be used in catch clauses."
   analyzerCode: RETHROW_OUTSIDE_CATCH
 
 InvokeNonFunction:
-  template: "'#name' isn't a function or method and can't be invoked."
+  problemMessage: "'#name' isn't a function or method and can't be invoked."
   analyzerCode: INVOCATION_OF_NON_FUNCTION
   script: |
     // @dart=2.9
@@ -4162,15 +4162,15 @@
     }
 
 ConstInstanceField:
-  template: "Only static fields can be declared as const."
-  tip: "Try using 'final' instead of 'const', or adding the keyword 'static'."
+  problemMessage: "Only static fields can be declared as const."
+  correctionMessage: "Try using 'final' instead of 'const', or adding the keyword 'static'."
   analyzerCode: CONST_INSTANCE_FIELD
   script:
     - "class C { const field = 0; }"
 
 DefaultValueInRedirectingFactoryConstructor:
-  template: "Can't have a default value here because any default values of '#name' would be used instead."
-  tip: "Try removing the default value."
+  problemMessage: "Can't have a default value here because any default values of '#name' would be used instead."
+  correctionMessage: "Try removing the default value."
   analyzerCode: DEFAULT_VALUE_IN_REDIRECTING_FACTORY_CONSTRUCTOR
   script:
     - >-
@@ -4180,7 +4180,7 @@
       }
 
 UntranslatableUri:
-  template: "Not found: '#uri'"
+  problemMessage: "Not found: '#uri'"
   analyzerCode: URI_DOES_NOT_EXIST
   script: |
     import "dart:non_existing_library";
@@ -4189,7 +4189,7 @@
     }
 
 CantReadFile:
-  template: "Error when reading '#uri': #string"
+  problemMessage: "Error when reading '#uri': #string"
   analyzerCode: URI_DOES_NOT_EXIST
   external: test/packages_format_error_test.dart
   script: |
@@ -4199,14 +4199,14 @@
     }
 
 ExceptionReadingFile:
-  template: "Exception when reading '#uri': #string"
+  problemMessage: "Exception when reading '#uri': #string"
 
 PackagesFileFormat:
-  template: "Problem in packages configuration file: #string"
+  problemMessage: "Problem in packages configuration file: #string"
   external: test/packages_format_error_test.dart
 
 IncompatibleRedirecteeFunctionType:
-  template: "The constructor function type '#type' isn't a subtype of '#type2'."
+  problemMessage: "The constructor function type '#type' isn't a subtype of '#type2'."
   analyzerCode: REDIRECT_TO_INVALID_TYPE
   script:
     - >-
@@ -4243,8 +4243,8 @@
       class B<T extends int, S extends String> implements A<T> {}
 
 RedirectingFactoryIncompatibleTypeArgument:
-  template: "The type '#type' doesn't extend '#type2'."
-  tip: "Try using a different type as argument."
+  problemMessage: "The type '#type' doesn't extend '#type2'."
+  correctionMessage: "Try using a different type as argument."
   analyzerCode: TYPE_ARGUMENT_NOT_MATCHING_BOUNDS
   script:
     - >-
@@ -4254,68 +4254,68 @@
       class B<T extends int, S extends String> implements A<T> {}
 
 SyntheticToken:
-  template: "This couldn't be parsed."
+  problemMessage: "This couldn't be parsed."
   frontendInternal: true
 
 IncorrectTypeArgument:
-  template: "Type argument '#type' doesn't conform to the bound '#type2' of the type variable '#name' on '#name2'."
-  tip: "Try changing type arguments so that they conform to the bounds."
+  problemMessage: "Type argument '#type' doesn't conform to the bound '#type2' of the type variable '#name' on '#name2'."
+  correctionMessage: "Try changing type arguments so that they conform to the bounds."
   analyzerCode: TYPE_ARGUMENT_NOT_MATCHING_BOUNDS
   script: >
     class C<T extends num> {}
     main() { new C<String>(); }
 
 IncorrectTypeArgumentQualified:
-  template: "Type argument '#type' doesn't conform to the bound '#type2' of the type variable '#name' on '#type3.#name2'."
-  tip: "Try changing type arguments so that they conform to the bounds."
+  problemMessage: "Type argument '#type' doesn't conform to the bound '#type2' of the type variable '#name' on '#type3.#name2'."
+  correctionMessage: "Try changing type arguments so that they conform to the bounds."
   analyzerCode: TYPE_ARGUMENT_NOT_MATCHING_BOUNDS
   script: >
     class C<T> { foo<U extends num>() {} }
     main() { new C<String>().foo<String>(); }
 
 IncorrectTypeArgumentInSupertype:
-  template: "Type argument '#type' doesn't conform to the bound '#type2' of the type variable '#name' on '#name2' in the supertype '#name3' of class '#name4'."
-  tip: "Try changing type arguments so that they conform to the bounds."
+  problemMessage: "Type argument '#type' doesn't conform to the bound '#type2' of the type variable '#name' on '#name2' in the supertype '#name3' of class '#name4'."
+  correctionMessage: "Try changing type arguments so that they conform to the bounds."
   analyzerCode: TYPE_ARGUMENT_NOT_MATCHING_BOUNDS
   script: >
     class A<T extends num> {}
     class B extends A<String> {}
 
 IncorrectTypeArgumentInReturnType:
-  template: "Type argument '#type' doesn't conform to the bound '#type2' of the type variable '#name' on '#name2' in the return type."
-  tip: "Try changing type arguments so that they conform to the bounds."
+  problemMessage: "Type argument '#type' doesn't conform to the bound '#type2' of the type variable '#name' on '#name2' in the return type."
+  correctionMessage: "Try changing type arguments so that they conform to the bounds."
   analyzerCode: TYPE_ARGUMENT_NOT_MATCHING_BOUNDS
   script: >
     class A<T extends num> {}
     A<String> foo() => throw '';
 
 IncorrectTypeArgumentInferred:
-  template: "Inferred type argument '#type' doesn't conform to the bound '#type2' of the type variable '#name' on '#name2'."
-  tip: "Try specifying type arguments explicitly so that they conform to the bounds."
+  problemMessage: "Inferred type argument '#type' doesn't conform to the bound '#type2' of the type variable '#name' on '#name2'."
+  correctionMessage: "Try specifying type arguments explicitly so that they conform to the bounds."
   analyzerCode: TYPE_ARGUMENT_NOT_MATCHING_BOUNDS
   script: >
     void foo<T extends num>(T t) {}
     main() { foo("bar"); }
 
 IncorrectTypeArgumentQualifiedInferred:
-  template: "Inferred type argument '#type' doesn't conform to the bound '#type2' of the type variable '#name' on '#type3.#name2'."
-  tip: "Try specifying type arguments explicitly so that they conform to the bounds."
+  problemMessage: "Inferred type argument '#type' doesn't conform to the bound '#type2' of the type variable '#name' on '#type3.#name2'."
+  correctionMessage: "Try specifying type arguments explicitly so that they conform to the bounds."
   analyzerCode: TYPE_ARGUMENT_NOT_MATCHING_BOUNDS
   script: >
     class C<T> { foo<U extends num>(U u) {} }
     main() { new C<String>().foo(""); }
 
 IncorrectTypeArgumentInSupertypeInferred:
-  template: "Inferred type argument '#type' doesn't conform to the bound '#type2' of the type variable '#name' on '#name2' in the supertype '#name3' of class '#name4'."
-  tip: "Try specifying type arguments explicitly so that they conform to the bounds."
+  problemMessage: "Inferred type argument '#type' doesn't conform to the bound '#type2' of the type variable '#name' on '#name2' in the supertype '#name3' of class '#name4'."
+  correctionMessage: "Try specifying type arguments explicitly so that they conform to the bounds."
   analyzerCode: TYPE_ARGUMENT_NOT_MATCHING_BOUNDS
   script: >
     class A<T extends A<T>> {}
     class B extends A {}
 
 IncorrectTypeArgumentInstantiation:
-  template: "Type argument '#type' doesn't conform to the bound '#type2' of the type variable '#name' on '#type3'."
-  tip: "Try changing type arguments so that they conform to the bounds."
+  problemMessage: "Type argument '#type' doesn't conform to the bound '#type2' of the type variable '#name' on '#type3'."
+  correctionMessage: "Try changing type arguments so that they conform to the bounds."
   analyzerCode: TYPE_ARGUMENT_NOT_MATCHING_BOUNDS
   experiments: constructor-tearoffs
   script: |
@@ -4325,8 +4325,8 @@
     }
 
 IncorrectTypeArgumentInstantiationInferred:
-  template: "Inferred type argument '#type' doesn't conform to the bound '#type2' of the type variable '#name' on '#type3'."
-  tip: "Try specifying type arguments explicitly so that they conform to the bounds."
+  problemMessage: "Inferred type argument '#type' doesn't conform to the bound '#type2' of the type variable '#name' on '#type3'."
+  correctionMessage: "Try specifying type arguments explicitly so that they conform to the bounds."
   analyzerCode: TYPE_ARGUMENT_NOT_MATCHING_BOUNDS
   script: |
     X bounded<X extends num>(X x) => x;
@@ -4335,15 +4335,15 @@
     }
 
 IncorrectTypeArgumentVariable:
-  template: "This is the type variable whose bound isn't conformed to."
+  problemMessage: "This is the type variable whose bound isn't conformed to."
   severity: CONTEXT
 
 SuperBoundedHint:
-  template: "If you want '#type' to be a super-bounded type, note that the inverted type '#type2' must then satisfy its bounds, which it does not."
+  problemMessage: "If you want '#type' to be a super-bounded type, note that the inverted type '#type2' must then satisfy its bounds, which it does not."
   severity: CONTEXT
 
 InferredPackageUri:
-  template: "Interpreting this as package URI, '#uri'."
+  problemMessage: "Interpreting this as package URI, '#uri'."
   severity: WARNING
   frontendInternal: true
   script:
@@ -4353,7 +4353,7 @@
       example:./
 
 MixinApplicationIncompatibleSupertype:
-  template: "'#type' doesn't implement '#type2' so it can't be used with '#type3'."
+  problemMessage: "'#type' doesn't implement '#type2' so it can't be used with '#type3'."
   analyzerCode: MIXIN_APPLICATION_NOT_IMPLEMENTED_INTERFACE
   script: >-
     class I {}
@@ -4361,8 +4361,8 @@
     class C = Object with M;
 
 GenericFunctionTypeUsedAsActualTypeArgument:
-  template: "A generic function type can't be used as a type argument."
-  tip: "Try using a non-generic function type."
+  problemMessage: "A generic function type can't be used as a type argument."
+  correctionMessage: "Try using a non-generic function type."
   analyzerCode: GENERIC_FUNCTION_CANNOT_BE_TYPE_ARGUMENT
   script:
     - |
@@ -4381,8 +4381,8 @@
       }
 
 GenericFunctionTypeInferredAsActualTypeArgument:
-  template: "Generic function type '#type' inferred as a type argument."
-  tip: "Try providing a non-generic function type explicitly."
+  problemMessage: "Generic function type '#type' inferred as a type argument."
+  correctionMessage: "Try providing a non-generic function type explicitly."
   analyzerCode: GENERIC_FUNCTION_CANNOT_BE_TYPE_ARGUMENT
   script: |
     // @dart=2.13
@@ -4393,32 +4393,32 @@
 # These two message templates are used for constructing supplemental text
 # about the origins of raw interface types in error messages containing types.
 TypeOrigin:
-  template: "'#name' is from '#uri'."
+  problemMessage: "'#name' is from '#uri'."
   frontendInternal: true
   external: test/type_labeler_test.dart
 
 TypeOriginWithFileUri:
-  template: "'#name' is from '#uri' ('#uri2')."
+  problemMessage: "'#name' is from '#uri' ('#uri2')."
   frontendInternal: true
   external: test/type_labeler_test.dart
 
 ObjectExtends:
-  template: "The class 'Object' can't have a superclass."
+  problemMessage: "The class 'Object' can't have a superclass."
   frontendInternal: true
   external: test/fasta/object_supertype_test.dart
 
 ObjectImplements:
-  template: "The class 'Object' can't implement anything."
+  problemMessage: "The class 'Object' can't implement anything."
   frontendInternal: true
   external: test/fasta/object_supertype_test.dart
 
 ObjectMixesIn:
-  template: "The class 'Object' can't use mixins."
+  problemMessage: "The class 'Object' can't use mixins."
   frontendInternal: true
   external: test/fasta/object_supertype_test.dart
 
 StaticAndInstanceConflict:
-  template: "This static member conflicts with an instance member."
+  problemMessage: "This static member conflicts with an instance member."
   script:
     - |
       class C {
@@ -4433,139 +4433,139 @@
   analyzerCode: CONFLICTING_STATIC_AND_INSTANCE
 
 StaticAndInstanceConflictCause:
-  template: "This is the instance member."
+  problemMessage: "This is the instance member."
   severity: CONTEXT
 
 FfiTypeMismatch:
   # Used by dart:ffi
-  template: "Expected type '#type' to be '#type2', which is the Dart type corresponding to '#type3'."
+  problemMessage: "Expected type '#type' to be '#type2', which is the Dart type corresponding to '#type3'."
   external: test/ffi_test.dart
 
 FfiEmptyStruct:
   # Used by dart:ffi
-  template: "#string '#name' is empty. Empty structs and unions are undefined behavior."
+  problemMessage: "#string '#name' is empty. Empty structs and unions are undefined behavior."
   external: test/ffi_test.dart
 
 FfiTypeInvalid:
   # Used by dart:ffi
-  template: "Expected type '#type' to be a valid and instantiated subtype of 'NativeType'."
+  problemMessage: "Expected type '#type' to be a valid and instantiated subtype of 'NativeType'."
   external: test/ffi_test.dart
 
 FfiFieldNull:
   # Used by dart:ffi
-  template: "Field '#name' cannot have type 'Null', it must be `int`, `double`, `Pointer`, or a subtype of `Struct` or `Union`."
+  problemMessage: "Field '#name' cannot have type 'Null', it must be `int`, `double`, `Pointer`, or a subtype of `Struct` or `Union`."
   external: test/ffi_test.dart
 
 FfiFieldAnnotation:
   # Used by dart:ffi
-  template: "Field '#name' requires exactly one annotation to declare its native type, which cannot be Void. dart:ffi Structs and Unions cannot have regular Dart fields."
+  problemMessage: "Field '#name' requires exactly one annotation to declare its native type, which cannot be Void. dart:ffi Structs and Unions cannot have regular Dart fields."
   external: test/ffi_test.dart
 
 FfiFieldNoAnnotation:
   # Used by dart:ffi
-  template: "Field '#name' requires no annotation to declare its native type, it is a Pointer which is represented by the same type in Dart and native code."
+  problemMessage: "Field '#name' requires no annotation to declare its native type, it is a Pointer which is represented by the same type in Dart and native code."
   external: test/ffi_test.dart
 
 FfiFieldCyclic:
   # Used by dart:ffi
-  template: |
+  problemMessage: |
     #string '#name' contains itself. Cycle elements:
     #names
   external: test/ffi_test.dart
 
 FfiNotStatic:
   # Used by dart:ffi
-  template: "#name expects a static function as parameter. dart:ffi only supports calling static Dart functions from native code. Closures and tear-offs are not supported because they can capture context."
+  problemMessage: "#name expects a static function as parameter. dart:ffi only supports calling static Dart functions from native code. Closures and tear-offs are not supported because they can capture context."
   external: test/ffi_test.dart
 
 FfiFieldInitializer:
   # Used by dart:ffi
-  template: "Field '#name' is a dart:ffi Pointer to a struct field and therefore cannot be initialized before constructor execution."
-  tip: "Mark the field as external to avoid having to initialize it."
+  problemMessage: "Field '#name' is a dart:ffi Pointer to a struct field and therefore cannot be initialized before constructor execution."
+  correctionMessage: "Mark the field as external to avoid having to initialize it."
   external: test/ffi_test.dart
 
 FfiExtendsOrImplementsSealedClass:
   # Used by dart:ffi
-  template: "Class '#name' cannot be extended or implemented."
+  problemMessage: "Class '#name' cannot be extended or implemented."
   external: test/ffi_test.dart
 
 FfiPackedAnnotation:
   # Used by dart:ffi
-  template: "Struct '#name' must have at most one 'Packed' annotation."
+  problemMessage: "Struct '#name' must have at most one 'Packed' annotation."
   external: test/ffi_test.dart
 
 FfiPackedAnnotationAlignment:
   # Used by dart:ffi
-  template: "Only packing to 1, 2, 4, 8, and 16 bytes is supported."
+  problemMessage: "Only packing to 1, 2, 4, 8, and 16 bytes is supported."
   external: test/ffi_test.dart
 
 FfiPackedNestingNonPacked:
   # Used by dart:ffi
-  template: "Nesting the non-packed or less tightly packed struct '#name' in a packed struct '#name2' is not supported."
+  problemMessage: "Nesting the non-packed or less tightly packed struct '#name' in a packed struct '#name2' is not supported."
   external: test/ffi_test.dart
 
 FfiSizeAnnotation:
   # Used by dart:ffi
-  template: "Field '#name' must have exactly one 'Array' annotation."
+  problemMessage: "Field '#name' must have exactly one 'Array' annotation."
   external: test/ffi_test.dart
 
 FfiSizeAnnotationDimensions:
   # Used by dart:ffi
-  template: "Field '#name' must have an 'Array' annotation that matches the dimensions."
+  problemMessage: "Field '#name' must have an 'Array' annotation that matches the dimensions."
   external: test/ffi_test.dart
 
 FfiStructGeneric:
   # Used by dart:ffi
-  template: "#string '#name' should not be generic."
+  problemMessage: "#string '#name' should not be generic."
   external: test/ffi_test.dart
 
 FfiDartTypeMismatch:
   # Used by dart:ffi
-  template: "Expected '#type' to be a subtype of '#type2'."
+  problemMessage: "Expected '#type' to be a subtype of '#type2'."
   external: test/ffi_test.dart
 
 FfiExpectedExceptionalReturn:
   # Used by dart:ffi
-  template: "Expected an exceptional return value for a native callback returning '#type'."
+  problemMessage: "Expected an exceptional return value for a native callback returning '#type'."
   external: test/ffi_test.dart
 
 FfiExpectedNoExceptionalReturn:
   # Used by dart:ffi
-  template: "Exceptional return value cannot be provided for a native callback returning '#type'."
+  problemMessage: "Exceptional return value cannot be provided for a native callback returning '#type'."
   external: test/ffi_test.dart
 
 FfiExpectedConstant:
   # Used by dart:ffi
-  template: "Exceptional return value must be a constant."
+  problemMessage: "Exceptional return value must be a constant."
   external: test/ffi_test.dart
 
 FfiExceptionalReturnNull:
   # Used by dart:ffi
-  template: "Exceptional return value must not be null."
+  problemMessage: "Exceptional return value must not be null."
   external: test/ffi_test.dart
 
 FfiExpectedConstantArg:
   # Used by dart:ffi
-  template: "Argument '#name' must be a constant."
+  problemMessage: "Argument '#name' must be a constant."
   external: test/ffi_test.dart
 
 FfiLeafCallMustNotTakeHandle:
   # Used by dart:ffi
-  template: "FFI leaf call must not have Handle argument types."
+  problemMessage: "FFI leaf call must not have Handle argument types."
   external: test/ffi_test.dart
 
 FfiLeafCallMustNotReturnHandle:
   # Used by dart:ffi
-  template: "FFI leaf call must not have Handle return type."
+  problemMessage: "FFI leaf call must not have Handle return type."
   external: test/ffi_test.dart
 
 FfiNativeAnnotationMustAnnotateStatic:
   # Used by dart:ffi
-  template: "FfiNative annotations can only be used on static functions."
+  problemMessage: "FfiNative annotations can only be used on static functions."
   external: test/ffi_test.dart
 
 SpreadTypeMismatch:
-  template: "Unexpected type '#type' of a spread.  Expected 'dynamic' or an Iterable."
+  problemMessage: "Unexpected type '#type' of a spread.  Expected 'dynamic' or an Iterable."
   script:
     - |
       main() {
@@ -4579,7 +4579,7 @@
       }
 
 SpreadElementTypeMismatch:
-  template: "Can't assign spread elements of type '#type' to collection elements of type '#type2'."
+  problemMessage: "Can't assign spread elements of type '#type' to collection elements of type '#type2'."
   analyzerCode: LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
   script: >
     main() {
@@ -4588,7 +4588,7 @@
     }
 
 SpreadElementTypeMismatchNullability:
-  template: "Can't assign spread elements of type '#type' to collection elements of type '#type2' because '#type' is nullable and '#type2' isn't."
+  problemMessage: "Can't assign spread elements of type '#type' to collection elements of type '#type2' because '#type' is nullable and '#type2' isn't."
   analyzerCode: LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
   configuration: nnbd-strong
   script: >
@@ -4598,7 +4598,7 @@
     }
 
 SpreadElementTypeMismatchPartNullability:
-  template: "Can't assign spread elements of type '#type' to collection elements of type '#type2' because '#type3' is nullable and '#type4' isn't."
+  problemMessage: "Can't assign spread elements of type '#type' to collection elements of type '#type2' because '#type3' is nullable and '#type4' isn't."
   analyzerCode: LIST_ELEMENT_TYPE_NOT_ASSIGNABLE
   configuration: nnbd-strong
   script: >
@@ -4608,7 +4608,7 @@
     }
 
 SpreadMapEntryTypeMismatch:
-  template: "Unexpected type '#type' of a map spread entry.  Expected 'dynamic' or a Map."
+  problemMessage: "Unexpected type '#type' of a map spread entry.  Expected 'dynamic' or a Map."
   script:
     - |
       main() {
@@ -4622,7 +4622,7 @@
       }
 
 SpreadMapEntryElementKeyTypeMismatch:
-  template: "Can't assign spread entry keys of type '#type' to map entry keys of type '#type2'."
+  problemMessage: "Can't assign spread entry keys of type '#type' to map entry keys of type '#type2'."
   analyzerCode: MAP_KEY_TYPE_NOT_ASSIGNABLE
   script: >
     main() {
@@ -4631,7 +4631,7 @@
     }
 
 SpreadMapEntryElementKeyTypeMismatchNullability:
-  template: "Can't assign spread entry keys of type '#type' to map entry keys of type '#type2' because '#type' is nullable and '#type2' isn't."
+  problemMessage: "Can't assign spread entry keys of type '#type' to map entry keys of type '#type2' because '#type' is nullable and '#type2' isn't."
   analyzerCode: MAP_KEY_TYPE_NOT_ASSIGNABLE
   configuration: nnbd-strong
   script: >
@@ -4641,7 +4641,7 @@
     }
 
 SpreadMapEntryElementKeyTypeMismatchPartNullability:
-  template: "Can't assign spread entry keys of type '#type' to map entry keys of type '#type2' because '#type3' is nullable and '#type4' isn't."
+  problemMessage: "Can't assign spread entry keys of type '#type' to map entry keys of type '#type2' because '#type3' is nullable and '#type4' isn't."
   analyzerCode: MAP_KEY_TYPE_NOT_ASSIGNABLE
   configuration: nnbd-strong
   script: >
@@ -4651,7 +4651,7 @@
     }
 
 SpreadMapEntryElementValueTypeMismatch:
-  template: "Can't assign spread entry values of type '#type' to map entry values of type '#type2'."
+  problemMessage: "Can't assign spread entry values of type '#type' to map entry values of type '#type2'."
   analyzerCode: MAP_VALUE_TYPE_NOT_ASSIGNABLE
   script: >
     main() {
@@ -4660,7 +4660,7 @@
     }
 
 SpreadMapEntryElementValueTypeMismatchNullability:
-  template: "Can't assign spread entry values of type '#type' to map entry values of type '#type2' because '#type' is nullable and '#type2' isn't."
+  problemMessage: "Can't assign spread entry values of type '#type' to map entry values of type '#type2' because '#type' is nullable and '#type2' isn't."
   analyzerCode: MAP_VALUE_TYPE_NOT_ASSIGNABLE
   configuration: nnbd-strong
   script: >
@@ -4670,7 +4670,7 @@
     }
 
 SpreadMapEntryElementValueTypeMismatchPartNullability:
-  template: "Can't assign spread entry values of type '#type' to map entry values of type '#type2' because '#type3' is nullable and '#type4' isn't."
+  problemMessage: "Can't assign spread entry values of type '#type' to map entry values of type '#type2' because '#type3' is nullable and '#type4' isn't."
   analyzerCode: MAP_VALUE_TYPE_NOT_ASSIGNABLE
   configuration: nnbd-strong
   script: >
@@ -4680,30 +4680,30 @@
     }
 
 CantDisambiguateNotEnoughInformation:
-  template: "Not enough type information to disambiguate between literal set and literal map."
-  tip: "Try providing type arguments for the literal explicitly to disambiguate it."
+  problemMessage: "Not enough type information to disambiguate between literal set and literal map."
+  correctionMessage: "Try providing type arguments for the literal explicitly to disambiguate it."
   script: >
     foo(dynamic spread) {
       var a = {...spread};
     }
 
 CantDisambiguateAmbiguousInformation:
-  template: "Both Iterable and Map spread elements encountered in ambiguous literal."
+  problemMessage: "Both Iterable and Map spread elements encountered in ambiguous literal."
   script: >
     foo(Iterable<int> iterableSpread, Map<int, int> mapSpread) {
       var c = {...iterableSpread, ...mapSpread};
     }
 
 SpreadElement:
-  template: "Iterable spread."
+  problemMessage: "Iterable spread."
   severity: CONTEXT
 
 SpreadMapElement:
-  template: "Map spread."
+  problemMessage: "Map spread."
   severity: CONTEXT
 
 NonNullAwareSpreadIsNull:
-  template: "Can't spread a value with static type '#type'."
+  problemMessage: "Can't spread a value with static type '#type'."
   script: >
     main() {
       <int>[...null];
@@ -4711,30 +4711,30 @@
 
 NonPositiveArrayDimensions:
   # Used by dart:ffi
-  template: "Array dimensions must be positive numbers."
+  problemMessage: "Array dimensions must be positive numbers."
   external: test/ffi_test.dart
 
 InvalidTypeVariableInSupertype:
-  template: "Can't use implicitly 'out' variable '#name' in an '#string2' position in supertype '#name2'."
+  problemMessage: "Can't use implicitly 'out' variable '#name' in an '#string2' position in supertype '#name2'."
   script: >
     class A<X> {}
     class B<Y> extends A<Function(Y)> {}
 
 InvalidTypeVariableInSupertypeWithVariance:
-  template: "Can't use '#string' type variable '#name' in an '#string2' position in supertype '#name2'."
+  problemMessage: "Can't use '#string' type variable '#name' in an '#string2' position in supertype '#name2'."
   script: >
     class A<out X> {}
     class B<out Y> extends A<Function(Y)> {}
 
 InvalidTypeVariableVariancePosition:
-  template: "Can't use '#string' type variable '#name' in an '#string2' position."
+  problemMessage: "Can't use '#string' type variable '#name' in an '#string2' position."
   script: >
     class A<out T> {
       void method(T x) {}
     }
 
 InvalidTypeVariableVariancePositionInReturnType:
-  template: "Can't use '#string' type variable '#name' in an '#string2' position in the return type."
+  problemMessage: "Can't use '#string' type variable '#name' in an '#string2' position in the return type."
   script: >
     class A<in T> {
       T method() {
@@ -4743,8 +4743,8 @@
     }
 
 CombinedMemberSignatureFailed:
-  template: "Class '#name' inherits multiple members named '#name2' with incompatible signatures."
-  tip: "Try adding a declaration of '#name2' to '#name'."
+  problemMessage: "Class '#name' inherits multiple members named '#name2' with incompatible signatures."
+  correctionMessage: "Try adding a declaration of '#name2' to '#name'."
   analyzerCode: INCONSISTENT_INHERITANCE
   script:
     - |
@@ -4759,12 +4759,12 @@
       abstract class C implements I2, I1 {}
 
 LanguageVersionTooHigh:
-  template: "The specified language version is too high. The highest supported language version is #count.#count2."
+  problemMessage: "The specified language version is too high. The highest supported language version is #count.#count2."
   script: >
     // @dart = 100.200
 
 LanguageVersionInvalidInDotPackages:
-  template: "The language version is not specified correctly in the packages file."
+  problemMessage: "The language version is not specified correctly in the packages file."
   exampleAllowMoreCodes: true
   script:
     main.dart: "import 'package:foo/foo.dart';"
@@ -4782,7 +4782,7 @@
       }
 
 LanguageVersionMismatchInPart:
-  template: "The language version override has to be the same in the library and its part(s)."
+  problemMessage: "The language version override has to be the same in the library and its part(s)."
   script:
     main.dart: >
       // @dart = 2.4
@@ -4794,90 +4794,90 @@
       part of 'main.dart';
 
 LanguageVersionMismatchInPatch:
-  template: "The language version override has to be the same in the library and its patch(es)."
+  problemMessage: "The language version override has to be the same in the library and its patch(es)."
 
 LanguageVersionLibraryContext:
-  template: "This is language version annotation in the library."
+  problemMessage: "This is language version annotation in the library."
   severity: CONTEXT
 
 LanguageVersionPartContext:
-  template: "This is language version annotation in the part."
+  problemMessage: "This is language version annotation in the part."
   severity: CONTEXT
 
 LanguageVersionPatchContext:
-  template: "This is language version annotation in the patch."
+  problemMessage: "This is language version annotation in the patch."
   severity: CONTEXT
 
 ExplicitExtensionArgumentMismatch:
-  template: "Explicit extension application requires exactly 1 positional argument."
+  problemMessage: "Explicit extension application requires exactly 1 positional argument."
 
 ExplicitExtensionTypeArgumentMismatch:
-  template: "Explicit extension application of extension '#name' takes '#count' type argument(s)."
+  problemMessage: "Explicit extension application of extension '#name' takes '#count' type argument(s)."
 
 ExplicitExtensionAsExpression:
-  template: "Explicit extension application cannot be used as an expression."
+  problemMessage: "Explicit extension application cannot be used as an expression."
 
 ExplicitExtensionAsLvalue:
-  template: "Explicit extension application cannot be a target for assignment."
+  problemMessage: "Explicit extension application cannot be a target for assignment."
 
 DeferredExtensionImport:
-  template: "Extension '#name' cannot be imported through a deferred import."
-  tip: "Try adding the `hide #name` to the import."
+  problemMessage: "Extension '#name' cannot be imported through a deferred import."
+  correctionMessage: "Try adding the `hide #name` to the import."
   script:
     main.dart: "import 'lib.dart' deferred as prefix;"
     lib.dart: "extension Extension on void {}"
 
 MultipleVarianceModifiers:
   index: 97
-  template: "Each type parameter can have at most one variance modifier."
-  tip: "Use at most one of the 'in', 'out', or 'inout' modifiers."
+  problemMessage: "Each type parameter can have at most one variance modifier."
+  correctionMessage: "Use at most one of the 'in', 'out', or 'inout' modifiers."
   analyzerCode: ParserErrorCode.MULTIPLE_VARIANCE_MODIFIERS
 
 VariableCouldBeNullDueToWrite:
-  template: "Variable '#name' could not be promoted due to an assignment."
-  tip: "Try null checking the variable after the assignment.  See #string"
+  problemMessage: "Variable '#name' could not be promoted due to an assignment."
+  correctionMessage: "Try null checking the variable after the assignment.  See #string"
 
 FieldNotPromoted:
-  template: "'#name' refers to a property so it couldn't be promoted."
-  tip: "See #string"
+  problemMessage: "'#name' refers to a property so it couldn't be promoted."
+  correctionMessage: "See #string"
 
 ThisNotPromoted:
-  template: "'this' can't be promoted."
-  tip: "See #string"
+  problemMessage: "'this' can't be promoted."
+  correctionMessage: "See #string"
 
 NullablePropertyAccessError:
-  template: "Property '#name' cannot be accessed on '#type' because it is potentially null."
-  tip: "Try accessing using ?. instead."
+  problemMessage: "Property '#name' cannot be accessed on '#type' because it is potentially null."
+  correctionMessage: "Try accessing using ?. instead."
 
 NullableMethodCallError:
-  template: "Method '#name' cannot be called on '#type' because it is potentially null."
-  tip: "Try calling using ?. instead."
+  problemMessage: "Method '#name' cannot be called on '#type' because it is potentially null."
+  correctionMessage: "Try calling using ?. instead."
 
 NullableExpressionCallError:
-  template: "Can't use an expression of type '#type' as a function because it's potentially null."
-  tip: "Try calling using ?.call instead."
+  problemMessage: "Can't use an expression of type '#type' as a function because it's potentially null."
+  correctionMessage: "Try calling using ?.call instead."
 
 NullableOperatorCallError:
-  template: "Operator '#name' cannot be called on '#type' because it is potentially null."
+  problemMessage: "Operator '#name' cannot be called on '#type' because it is potentially null."
 
 NullableTearoffError:
-  template: "Can't tear off method '#name' from a potentially null value."
+  problemMessage: "Can't tear off method '#name' from a potentially null value."
 
 NullableSpreadError:
-  template: "An expression whose value can be 'null' must be null-checked before it can be dereferenced."
+  problemMessage: "An expression whose value can be 'null' must be null-checked before it can be dereferenced."
 
 ThrowingNotAssignableToObjectError:
-  template: "Can't throw a value of '#type' since it is neither dynamic nor non-nullable."
+  problemMessage: "Can't throw a value of '#type' since it is neither dynamic nor non-nullable."
 
 RequiredNamedParameterHasDefaultValueError:
-  template: "Named parameter '#name' is required and can't have a default value."
+  problemMessage: "Named parameter '#name' is required and can't have a default value."
 
 ValueForRequiredParameterNotProvidedError:
-  template: "Required named parameter '#name' must be provided."
+  problemMessage: "Required named parameter '#name' must be provided."
 
 OptionalNonNullableWithoutInitializerError:
-  template: "The parameter '#name' can't have a value of 'null' because of its type '#type', but the implicit default value is 'null'."
-  tip: "Try adding either an explicit non-'null' default value or the 'required' modifier."
+  problemMessage: "The parameter '#name' can't have a value of 'null' because of its type '#type', but the implicit default value is 'null'."
+  correctionMessage: "Try adding either an explicit non-'null' default value or the 'required' modifier."
   analyzerCode: MISSING_DEFAULT_VALUE_FOR_PARAMETER
   configuration: nnbd-strong
   script:
@@ -4885,94 +4885,94 @@
     - method2([int a]) {}
 
 FieldNonNullableWithoutInitializerError:
-  template: "Field '#name' should be initialized because its type '#type' doesn't allow null."
+  problemMessage: "Field '#name' should be initialized because its type '#type' doesn't allow null."
 
 FieldNonNullableNotInitializedByConstructorError:
-  template: "This constructor should initialize field '#name' because its type '#type' doesn't allow null."
+  problemMessage: "This constructor should initialize field '#name' because its type '#type' doesn't allow null."
 
 NonNullableOptOutExplicit:
-  template: "Null safety features are disabled for this library."
-  tip: "Try removing the `@dart=` annotation or setting the language version to #string or higher."
+  problemMessage: "Null safety features are disabled for this library."
+  correctionMessage: "Try removing the `@dart=` annotation or setting the language version to #string or higher."
 
 NonNullableOptOutImplicit:
-  template: "Null safety features are disabled for this library."
-  tip: "Try removing the package language version or setting the language version to #string or higher."
+  problemMessage: "Null safety features are disabled for this library."
+  correctionMessage: "Try removing the package language version or setting the language version to #string or higher."
 
 NonNullableOptOutComment:
-  template: "This is the annotation that opts out this library from null safety features."
+  problemMessage: "This is the annotation that opts out this library from null safety features."
   severity: CONTEXT
 
 AwaitInLateLocalInitializer:
-  template: "`await` expressions are not supported in late local initializers."
+  problemMessage: "`await` expressions are not supported in late local initializers."
 
 NullableSuperclassError:
-  template: "Can't extend '#name' because it's marked with '?'."
+  problemMessage: "Can't extend '#name' because it's marked with '?'."
 
 NullableInterfaceError:
-  template: "Can't implement '#name' because it's marked with '?'."
+  problemMessage: "Can't implement '#name' because it's marked with '?'."
 
 NullableMixinError:
-  template: "Can't mix '#name' in because it's marked with '?'."
+  problemMessage: "Can't mix '#name' in because it's marked with '?'."
 
 JsInteropAnonymousFactoryPositionalParameters:
-  template: "Factory constructors for @anonymous JS interop classes should not contain any positional parameters."
-  tip: "Try replacing them with named parameters instead."
+  problemMessage: "Factory constructors for @anonymous JS interop classes should not contain any positional parameters."
+  correctionMessage: "Try replacing them with named parameters instead."
 
 JsInteropDartClassExtendsJSClass:
-  template: "Dart class '#name' cannot extend JS interop class '#name2'."
-  tip: "Try adding the JS interop annotation or removing it from the parent class."
+  problemMessage: "Dart class '#name' cannot extend JS interop class '#name2'."
+  correctionMessage: "Try adding the JS interop annotation or removing it from the parent class."
 
 JsInteropEnclosingClassJSAnnotation:
-  template: "Member has a JS interop annotation but the enclosing class does not."
-  tip: "Try adding the annotation to the enclosing class."
+  problemMessage: "Member has a JS interop annotation but the enclosing class does not."
+  correctionMessage: "Try adding the annotation to the enclosing class."
 
 JsInteropEnclosingClassJSAnnotationContext:
-  template: "This is the enclosing class."
+  problemMessage: "This is the enclosing class."
   severity: CONTEXT
 
 JsInteropExternalExtensionMemberOnTypeInvalid:
-  template: "JS interop or Native class required for 'external' extension members."
-  tip: "Try adding a JS interop annotation to the on type class of the extension."
+  problemMessage: "JS interop or Native class required for 'external' extension members."
+  correctionMessage: "Try adding a JS interop annotation to the on type class of the extension."
 
 JsInteropExternalMemberNotJSAnnotated:
-  template: "Only JS interop members may be 'external'."
-  tip: "Try removing the 'external' keyword or adding a JS interop annotation."
+  problemMessage: "Only JS interop members may be 'external'."
+  correctionMessage: "Try removing the 'external' keyword or adding a JS interop annotation."
 
 JsInteropIndexNotSupported:
-  template: "JS interop classes do not support [] and []= operator methods."
-  tip: "Try replacing with a normal method."
+  problemMessage: "JS interop classes do not support [] and []= operator methods."
+  correctionMessage: "Try replacing with a normal method."
 
 JsInteropJSClassExtendsDartClass:
-  template: "JS interop class '#name' cannot extend Dart class '#name2'."
-  tip: "Try removing the JS interop annotation or adding it to the parent class."
+  problemMessage: "JS interop class '#name' cannot extend Dart class '#name2'."
+  correctionMessage: "Try removing the JS interop annotation or adding it to the parent class."
 
 JsInteropNamedParameters:
-  template: "Named parameters for JS interop functions are only allowed in a factory constructor of an @anonymous JS class."
-  tip: "Try replacing them with normal or optional parameters."
+  problemMessage: "Named parameters for JS interop functions are only allowed in a factory constructor of an @anonymous JS class."
+  correctionMessage: "Try replacing them with normal or optional parameters."
 
 JsInteropNativeClassInAnnotation:
-  template: "JS interop class '#name' conflicts with natively supported class '#name2' in '#string3'."
-  tip: "Try making the @JS class into an @anonymous class or use js_util on the JS object."
+  problemMessage: "JS interop class '#name' conflicts with natively supported class '#name2' in '#string3'."
+  correctionMessage: "Try making the @JS class into an @anonymous class or use js_util on the JS object."
 
 JsInteropNonExternalConstructor:
-  template: "JS interop classes do not support non-external constructors."
-  tip: "Try annotating with `external`."
+  problemMessage: "JS interop classes do not support non-external constructors."
+  correctionMessage: "Try annotating with `external`."
 
 JsInteropNonExternalMember:
-  template: "This JS interop member must be annotated with `external`. Only factories and static methods can be non-external."
-  tip: "Try annotating the member with `external`."
+  problemMessage: "This JS interop member must be annotated with `external`. Only factories and static methods can be non-external."
+  correctionMessage: "Try annotating the member with `external`."
 
 DefaultListConstructorError:
-  template: "Can't use the default List constructor."
-  tip: "Try using List.filled instead."
+  problemMessage: "Can't use the default List constructor."
+  correctionMessage: "Try using List.filled instead."
 
 NonNullableInNullAware:
-  template: "Operand of null-aware operation '#name' has type '#type' which excludes null."
+  problemMessage: "Operand of null-aware operation '#name' has type '#type' which excludes null."
   severity: WARNING
 
 ThisInNullAwareReceiver:
-  template: "The receiver 'this' cannot be null."
-  tip: "Try replacing '?.' with '.'"
+  problemMessage: "The receiver 'this' cannot be null."
+  correctionMessage: "Try replacing '?.' with '.'"
   severity: WARNING
   configuration: nnbd-strong
   script: |
@@ -4984,8 +4984,8 @@
     }
 
 ClassInNullAwareReceiver:
-  template: "The class '#name' cannot be null."
-  tip: "Try replacing '?.' with '.'"
+  problemMessage: "The class '#name' cannot be null."
+  correctionMessage: "Try replacing '?.' with '.'"
   severity: WARNING
   configuration: nnbd-strong
   script: |
@@ -4997,7 +4997,7 @@
     }
 
 NonNullableNotAssignedError:
-  template: "Non-nullable variable '#name' must be assigned before it can be used."
+  problemMessage: "Non-nullable variable '#name' must be assigned before it can be used."
   configuration: nnbd-strong
   script: |
     method<T>() {
@@ -5005,7 +5005,7 @@
     }
 
 FinalNotAssignedError:
-  template: "Final variable '#name' must be assigned before it can be used."
+  problemMessage: "Final variable '#name' must be assigned before it can be used."
   analyzerCode: READ_POTENTIALLY_UNASSIGNED_FINAL
   configuration: nnbd-strong
   script: >
@@ -5018,7 +5018,7 @@
     }
 
 LateDefinitelyUnassignedError:
-  template: "Late variable '#name' without initializer is definitely unassigned."
+  problemMessage: "Late variable '#name' without initializer is definitely unassigned."
   configuration: nnbd-strong
   script: |
     method<T>() {
@@ -5026,7 +5026,7 @@
     }
 
 LateDefinitelyAssignedError:
-  template: "Late final variable '#name' definitely assigned."
+  problemMessage: "Late final variable '#name' definitely assigned."
   configuration: nnbd-strong
   script: |
     method() {
@@ -5036,7 +5036,7 @@
     }
 
 FinalPossiblyAssignedError:
-  template: "Final variable '#name' might already be assigned at this point."
+  problemMessage: "Final variable '#name' might already be assigned at this point."
   analyzerCode: ASSIGNMENT_TO_FINAL_LOCAL
   configuration: nnbd-strong
   script: |
@@ -5047,10 +5047,10 @@
     }
 
 NonAgnosticConstant:
-  template: "Constant value is not strong/weak mode agnostic."
+  problemMessage: "Constant value is not strong/weak mode agnostic."
 
 ExportOptOutFromOptIn:
-  template: "Null safe libraries are not allowed to export declarations from of opt-out libraries."
+  problemMessage: "Null safe libraries are not allowed to export declarations from of opt-out libraries."
   configuration: nnbd-weak
   script:
     main.dart: |
@@ -5060,28 +5060,28 @@
       class A {}
 
 ExtendFunction:
-  template: "Extending 'Function' is deprecated."
-  tip: "Try removing 'Function' from the 'extends' clause."
+  problemMessage: "Extending 'Function' is deprecated."
+  correctionMessage: "Try removing 'Function' from the 'extends' clause."
   severity: IGNORED
   script: |
     class A extends Function {}
 
 ImplementFunction:
-  template: "Implementing 'Function' is deprecated."
-  tip: "Try removing 'Function' from the 'implements' clause."
+  problemMessage: "Implementing 'Function' is deprecated."
+  correctionMessage: "Try removing 'Function' from the 'implements' clause."
   severity: IGNORED
   script: |
     class A implements Function {}
 
 MixinFunction:
-  template: "Mixing in 'Function' is deprecated."
-  tip: "Try removing 'Function' from the 'with' clause."
+  problemMessage: "Mixing in 'Function' is deprecated."
+  correctionMessage: "Try removing 'Function' from the 'with' clause."
   severity: IGNORED
   script: |
     class A extends Object with Function {}
 
 CannotAssignToFinalVariable:
-  template: "Can't assign to the final variable '#name'."
+  problemMessage: "Can't assign to the final variable '#name'."
   script: |
      main() {
        final int i = 0;
@@ -5089,7 +5089,7 @@
      }
 
 CannotAssignToConstVariable:
-  template: "Can't assign to the const variable '#name'."
+  problemMessage: "Can't assign to the const variable '#name'."
   script: |
     main() {
       const int i = 0;
@@ -5097,7 +5097,7 @@
     }
 
 CannotAssignToExtensionThis:
-  template: "Can't assign to 'this'."
+  problemMessage: "Can't assign to 'this'."
   script: |
     extension E on String {
       method() {
@@ -5106,50 +5106,50 @@
     }
 
 CannotAssignToTypeLiteral:
-  template: "Can't assign to a type literal."
+  problemMessage: "Can't assign to a type literal."
   script: |
     main() {
       Object = String;
     }
 
 NonVoidReturnOperator:
-  template: "The return type of the operator []= must be 'void'."
-  tip: "Try changing the return type to 'void'."
+  problemMessage: "The return type of the operator []= must be 'void'."
+  correctionMessage: "Try changing the return type to 'void'."
   analyzerCode: NON_VOID_RETURN_FOR_OPERATOR
   script:
     - class Class { int operator[]=(a, b) {} }
     - class Class { dynamic operator[]=(a, b) {} }
 
 NonVoidReturnSetter:
-  template: "The return type of the setter must be 'void' or absent."
-  tip: "Try removing the return type, or define a method rather than a setter."
+  problemMessage: "The return type of the setter must be 'void' or absent."
+  correctionMessage: "Try removing the return type, or define a method rather than a setter."
   analyzerCode: NON_VOID_RETURN_FOR_SETTER
   script:
     - int set setter(_) {}
     - dynamic set setter(_) {}
 
 NeverReachableSwitchDefaultError:
-  template: "`null` encountered as case in a switch expression with a non-nullable enum type."
+  problemMessage: "`null` encountered as case in a switch expression with a non-nullable enum type."
 
 NeverReachableSwitchDefaultWarning:
-  template: "The default case is not reachable with sound null safety because the switch expression is non-nullable."
+  problemMessage: "The default case is not reachable with sound null safety because the switch expression is non-nullable."
   severity: WARNING
 
 NeverValueError:
-  template: "`null` encountered as the result from expression with type `Never`."
+  problemMessage: "`null` encountered as the result from expression with type `Never`."
 
 NeverValueWarning:
-  template: "The expression can not result in a value with sound null safety because the expression type is `Never`."
+  problemMessage: "The expression can not result in a value with sound null safety because the expression type is `Never`."
   severity: WARNING
 
 MainNotFunctionDeclaration:
-  template: "The 'main' declaration must be a function declaration."
+  problemMessage: "The 'main' declaration must be a function declaration."
   configuration: nnbd-strong
   script:
     - var main;
 
 MainNotFunctionDeclarationExported:
-  template: "The exported 'main' declaration must be a function declaration."
+  problemMessage: "The exported 'main' declaration must be a function declaration."
   configuration: nnbd-strong
   exampleAllowMoreCodes: true
   script:
@@ -5159,13 +5159,13 @@
       var main;
 
 MainTooManyRequiredParameters:
-  template: "The 'main' method must have at most 2 required parameters."
+  problemMessage: "The 'main' method must have at most 2 required parameters."
   configuration: nnbd-strong
   script:
     - main(a, b, c) {}
 
 MainTooManyRequiredParametersExported:
-  template: "The exported 'main' method must have at most 2 required parameters."
+  problemMessage: "The exported 'main' method must have at most 2 required parameters."
   configuration: nnbd-strong
   exampleAllowMoreCodes: true
   script:
@@ -5175,13 +5175,13 @@
       main(a, b, c) {}
 
 MainRequiredNamedParameters:
-  template: "The 'main' method cannot have required named parameters."
+  problemMessage: "The 'main' method cannot have required named parameters."
   configuration: nnbd-strong
   script:
     - main({required a}) {}
 
 MainRequiredNamedParametersExported:
-  template: "The exported 'main' method cannot have required named parameters."
+  problemMessage: "The exported 'main' method cannot have required named parameters."
   configuration: nnbd-strong
   exampleAllowMoreCodes: true
   script:
@@ -5191,13 +5191,13 @@
       main({required a}) {}
 
 MainWrongParameterType:
-  template: "The type '#type' of the first parameter of the 'main' method is not a supertype of '#type2'."
+  problemMessage: "The type '#type' of the first parameter of the 'main' method is not a supertype of '#type2'."
   configuration: nnbd-strong
   script:
     - main(Set<String> args) {}
 
 MainWrongParameterTypeExported:
-  template: "The type '#type' of the first parameter of the exported 'main' method is not a supertype of '#type2'."
+  problemMessage: "The type '#type' of the first parameter of the exported 'main' method is not a supertype of '#type2'."
   configuration: nnbd-strong
   exampleAllowMoreCodes: true
   script:
@@ -5207,11 +5207,11 @@
       main(Set<String> args) {}
 
 ExportedMain:
-  template: "This is exported 'main' declaration."
+  problemMessage: "This is exported 'main' declaration."
   severity: CONTEXT
 
 UnexpectedModifierInNonNnbd:
-  template: "The modifier '#lexeme' is only available in null safe libraries."
+  problemMessage: "The modifier '#lexeme' is only available in null safe libraries."
   exampleAllowMoreCodes: true
   analyzerCode: UNEXPECTED_TOKEN
   script: |
@@ -5219,14 +5219,14 @@
     late int x;
 
 CompilingWithSoundNullSafety:
-  template: "Compiling with sound null safety"
+  problemMessage: "Compiling with sound null safety"
   configuration: nnbd-strong,compile
   severity: INFO
   script: |
     main() {}
 
 CompilingWithoutSoundNullSafety:
-  template: "Compiling without sound null safety"
+  problemMessage: "Compiling without sound null safety"
   configuration: nnbd-weak,compile
   severity: INFO
   script: |
@@ -5234,45 +5234,45 @@
     main() {}
 
 UnsupportedDartExt:
-  template: "Dart native extensions are no longer supported."
-  tip: "Migrate to using FFI instead (https://dart.dev/guides/libraries/c-interop)"
+  problemMessage: "Dart native extensions are no longer supported."
+  correctionMessage: "Migrate to using FFI instead (https://dart.dev/guides/libraries/c-interop)"
   script: |
     import 'dart-ext:foo.dart';
 
 InstantiationNonGenericFunctionType:
-  template: "The static type of the explicit instantiation operand must be a generic function type but is '#type'."
-  tip: "Try changing the operand or remove the type arguments."
+  problemMessage: "The static type of the explicit instantiation operand must be a generic function type but is '#type'."
+  correctionMessage: "Try changing the operand or remove the type arguments."
   experiments: constructor-tearoffs
   script: |
     f() {}
     main() => f<int>;
 
 InstantiationTooFewArguments:
-  template: "Too few type arguments: #count required, #count2 given."
-  tip: "Try adding the missing type arguments."
+  problemMessage: "Too few type arguments: #count required, #count2 given."
+  correctionMessage: "Try adding the missing type arguments."
   experiments: constructor-tearoffs
   script: |
     f<X, Y>() {}
     main() => f<int>;
 
 InstantiationTooManyArguments:
-  template: "Too many type arguments: #count allowed, but #count2 found."
-  tip: "Try removing the extra type arguments."
+  problemMessage: "Too many type arguments: #count allowed, but #count2 found."
+  correctionMessage: "Try removing the extra type arguments."
   experiments: constructor-tearoffs
   script: |
     f<X>() {}
     main() => f<int, String>;
 
 AbstractClassConstructorTearOff:
-  template: "Constructors on abstract classes can't be torn off."
+  problemMessage: "Constructors on abstract classes can't be torn off."
   experiments: constructor-tearoffs
   script: |
     abstract class Class {}
     main() => Class.new;
 
 StaticTearOffFromInstantiatedClass:
-  template: "Cannot access static member on an instantiated generic class."
-  tip: "Try removing the type arguments or placing them after the member name."
+  problemMessage: "Cannot access static member on an instantiated generic class."
+  correctionMessage: "Try removing the type arguments or placing them after the member name."
   experiments: constructor-tearoffs
   script: |
     class A<X> { static f() {} }
@@ -5280,8 +5280,8 @@
 
 
 ConstructorTearOffWithTypeArguments:
-  template: "A constructor tear-off can't have type arguments after the constructor name."
-  tip: "Try removing the type arguments or placing them after the class name."
+  problemMessage: "A constructor tear-off can't have type arguments after the constructor name."
+  correctionMessage: "Try removing the type arguments or placing them after the class name."
   experiments: constructor-tearoffs
   script:
     - "class C<X> { C.foo(); } bar() { C.foo<int>; }"
diff --git a/pkg/front_end/test/fasta/messages_suite.dart b/pkg/front_end/test/fasta/messages_suite.dart
index b62fceb..152fa07 100644
--- a/pkg/front_end/test/fasta/messages_suite.dart
+++ b/pkg/front_end/test/fasta/messages_suite.dart
@@ -218,7 +218,7 @@
         // characters with two characters without actually having the string
         // "backslash n".
         switch (key) {
-          case "template":
+          case "problemMessage":
             spell.SpellingResult spellingResult = spell.spellcheckString(
                 node.span.text.replaceAll(r"\n", "\n\n"),
                 dictionaries: const [
@@ -230,14 +230,14 @@
               spellingMessages.addAll(formatSpellingMistakes(
                   spellingResult,
                   node.span.start.offset,
-                  "Template has the following word that is "
+                  "problemMessage has the following word that is "
                       "not in our dictionary",
-                  "Template has the following word that is "
+                  "problemMessage has the following word that is "
                       "on our deny-list"));
             }
             break;
 
-          case "tip":
+          case "correctionMessage":
             spell.SpellingResult spellingResult = spell.spellcheckString(
                 node.span.text.replaceAll(r"\n", "\n\n"),
                 dictionaries: const [
@@ -249,9 +249,9 @@
               spellingMessages.addAll(formatSpellingMistakes(
                   spellingResult,
                   node.span.start.offset,
-                  "Tip has the following word that is "
+                  "correctionMessage has the following word that is "
                       "not in our dictionary",
-                  "Tip has the following word that is "
+                  "correctionMessage has the following word that is "
                       "on our deny-list"));
             }
             break;
diff --git a/pkg/front_end/tool/_fasta/generate_messages.dart b/pkg/front_end/tool/_fasta/generate_messages.dart
index 97bf6d8..55d233a 100644
--- a/pkg/front_end/tool/_fasta/generate_messages.dart
+++ b/pkg/front_end/tool/_fasta/generate_messages.dart
@@ -96,7 +96,7 @@
     }
     Map<dynamic, dynamic>? map = description;
     if (map == null) {
-      throw "No 'template:' in key $name.";
+      throw "No 'problemMessage:' in key $name.";
     }
     var index = map['index'];
     if (index != null) {
@@ -121,8 +121,8 @@
         }
       }
     }
-    Template template = compileTemplate(name, index, map['template'],
-        map['tip'], map['analyzerCode'], map['severity']);
+    Template template = compileTemplate(name, index, map['problemMessage'],
+        map['correctionMessage'], map['analyzerCode'], map['severity']);
     if (template.isShared) {
       sharedMessages.writeln(template.text);
     } else {
@@ -164,17 +164,17 @@
   Template(this.text, {this.isShared}) : assert(isShared != null);
 }
 
-Template compileTemplate(String name, int? index, String? template, String? tip,
-    Object? analyzerCode, String? severity) {
-  if (template == null) {
-    print('Error: missing template for message: $name');
+Template compileTemplate(String name, int? index, String? problemMessage,
+    String? correctionMessage, Object? analyzerCode, String? severity) {
+  if (problemMessage == null) {
+    print('Error: missing problemMessage for message: $name');
     exitCode = 1;
     return new Template('', isShared: true);
   }
   // Remove trailing whitespace. This is necessary for templates defined with
   // `|` (verbatim) as they always contain a trailing newline that we don't
   // want.
-  template = template.trimRight();
+  problemMessage = problemMessage.trimRight();
   const String ignoreNotNull = "// ignore: unnecessary_null_comparison";
   var parameters = new Set<String>();
   var conversions = new Set<String>();
@@ -190,8 +190,8 @@
     canBeShared = false;
   }
 
-  for (Match match
-      in placeholderPattern.allMatches("$template\n${tip ?? ''}")) {
+  for (Match match in placeholderPattern
+      .allMatches("$problemMessage\n${correctionMessage ?? ''}")) {
     String name = match[1]!;
     String? padding = match[2];
     String? fractionDigits = match[3];
@@ -429,11 +429,11 @@
 
   if (parameters.isEmpty && conversions.isEmpty && arguments.isEmpty) {
     // ignore: unnecessary_null_comparison
-    if (template != null) {
-      codeArguments.add('message: r"""$template"""');
+    if (problemMessage != null) {
+      codeArguments.add('message: r"""$problemMessage"""');
     }
-    if (tip != null) {
-      codeArguments.add('tip: r"""$tip"""');
+    if (correctionMessage != null) {
+      codeArguments.add('tip: r"""$correctionMessage"""');
     }
 
     return new Template("""
@@ -448,23 +448,23 @@
 
   List<String> templateArguments = <String>[];
   // ignore: unnecessary_null_comparison
-  if (template != null) {
-    templateArguments.add('messageTemplate: r"""$template"""');
+  if (problemMessage != null) {
+    templateArguments.add('messageTemplate: r"""$problemMessage"""');
   }
-  if (tip != null) {
-    templateArguments.add('tipTemplate: r"""$tip"""');
+  if (correctionMessage != null) {
+    templateArguments.add('tipTemplate: r"""$correctionMessage"""');
   }
 
   templateArguments.add("withArguments: _withArguments$name");
 
   List<String> messageArguments = <String>[];
-  String message = interpolate(template);
+  String message = interpolate(problemMessage);
   if (hasLabeler) {
     message += " + labeler.originMessages";
   }
   messageArguments.add("message: ${message}");
-  if (tip != null) {
-    messageArguments.add("tip: ${interpolate(tip)}");
+  if (correctionMessage != null) {
+    messageArguments.add("tip: ${interpolate(correctionMessage)}");
   }
   messageArguments.add("arguments: { ${arguments.join(', ')} }");
 
diff --git a/tools/VERSION b/tools/VERSION
index 3eb35a7..bd4c19d 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 15
 PATCH 0
-PRERELEASE 172
+PRERELEASE 173
 PRERELEASE_PATCH 0
\ No newline at end of file
diff --git a/tools/manage_deps.dart b/tools/manage_deps.dart
new file mode 100755
index 0000000..0d1e8b4
--- /dev/null
+++ b/tools/manage_deps.dart
@@ -0,0 +1,261 @@
+#!tools/sdks/dart-sdk/bin/dart
+// Copyright (c) 2021, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+/// Helps rolling dependency to the newest version available
+/// (or a target version).
+///
+/// Usage: ./tools/manage_deps.dart bump <dependency> [--branch <branch>] [--target <ref>]
+///
+/// This will:
+/// 0. Check that git is clean
+/// 1. Create branch `<branch> ?? bump_<dependency>`
+/// 2. Update `DEPS` for `<dependency>`
+/// 3. Create a commit with `git log` of imported commits in the message.
+/// 4. Prompt to create a CL
+
+// @dart = 2.13
+library bump;
+
+import 'dart:io';
+import 'package:args/command_runner.dart';
+
+import 'package:path/path.dart' as p;
+
+class BumpCommand extends Command<int> {
+  @override
+  String get description => '''
+Bump a dependency in DEPS and create a CL
+
+This will:
+0. Check that git is clean
+1. Create branch `<branch> ?? bump_<dependency>`
+2. Update `DEPS` for `<dependency>`
+3. Create a commit with `git log` of imported commits in the message.
+4. Prompt to create a CL
+''';
+
+  String get invocation =>
+      './tools/manage_deps.dart bump <path/to/dependency> <options>';
+
+  BumpCommand() {
+    argParser.addOption(
+      'branch',
+      help: 'The name of the branch where the update is created.',
+      valueHelp: 'branch-name',
+    );
+    argParser.addOption(
+      'target',
+      help: 'The git ref to update to.',
+      valueHelp: 'ref',
+    );
+  }
+
+  @override
+  String get name => 'bump';
+
+  @override
+  Future<int> run() async {
+    final argResults = this.argResults!;
+    if (argResults.rest.length != 1) {
+      usageException('No dependency directory given');
+    }
+    final status = runProcessForLines(['git', 'status', '--porcelain'],
+        explanation: 'Checking if your git checkout is clean');
+    if (status.isNotEmpty) {
+      print('Note your git checkout is dirty!');
+    }
+
+    final pkgDir = argResults.rest.first;
+    if (!Directory(pkgDir).existsSync()) {
+      usageException('No directory $pkgDir');
+    }
+    final toUpdate = p.split(pkgDir).last;
+    final branchName = argResults['branch'] ?? 'bump_$toUpdate';
+
+    final exists = runProcessForExitCode(
+        ['git', 'show-ref', '--quiet', 'refs/head/$branchName'],
+        explanation: 'Checking if branch-name exists');
+    if (exists != 0) {
+      print('Branch $branchName already exist - delete it?');
+      if (!prompt()) {
+        print('Ok - exiting');
+        exit(-1);
+      }
+      runProcessAssumingSuccess(
+        ['git', 'branch', '-D', branchName],
+        explanation: 'Deleting existing branch',
+      );
+    }
+    runProcessAssumingSuccess(
+      ['git', 'checkout', '-b', branchName],
+      explanation: 'Creating branch',
+    );
+
+    final currentRev = runProcessForLines(
+      ['gclient', 'getdep', '-r', p.join('sdk', pkgDir)],
+      explanation: 'Finding current revision',
+    ).first;
+
+    final originUrl = runProcessForLines(
+      ['git', 'config', '--get', 'remote.origin.url'],
+      workingDirectory: pkgDir,
+      explanation: 'Finding origin url',
+    ).first;
+
+    runProcessAssumingSuccess(
+      ['git', 'fetch', 'origin'],
+      workingDirectory: pkgDir,
+      explanation: 'Retrieving updates to $toUpdate',
+    );
+
+    final gitRevParseResult = runProcessForLines([
+      'git',
+      'rev-parse',
+      if (argResults.wasParsed('target'))
+        argResults['target']
+      else
+        'origin/HEAD',
+    ], workingDirectory: pkgDir, explanation: 'Finding sha-id');
+
+    final target = gitRevParseResult.first;
+    if (currentRev == target) {
+      print('Already at $target - nothing to do');
+      return -1;
+    }
+    runProcessAssumingSuccess(
+      ['gclient', 'setdep', '-r', '${p.join('sdk', pkgDir)}@$target'],
+      explanation: 'Updating $toUpdate',
+    );
+    runProcessAssumingSuccess(
+      ['gclient', 'sync', '-D'],
+      explanation: 'Syncing your deps',
+    );
+    runProcessAssumingSuccess(
+      [
+        Platform.resolvedExecutable,
+        'tools/generate_package_config.dart',
+      ],
+      explanation: 'Updating package config',
+    );
+    final gitLogResult = runProcessForLines([
+      'git',
+      'log',
+      '--format=%C(auto) $originUrl/+/%h %s ',
+      '$currentRev..$target',
+    ], workingDirectory: pkgDir, explanation: 'Listing new commits');
+    final commitMessage = '''
+Bump $toUpdate to $target
+
+Changes:
+```
+> git log --format="%C(auto) %h %s" ${currentRev.substring(0, 7)}..${target.substring(0, 7)}
+${gitLogResult.join('\n')}
+```
+Diff: $originUrl/+/$currentRev~..$target/
+''';
+    runProcessAssumingSuccess(['git', 'commit', '-am', commitMessage],
+        explanation: 'Committing');
+    print('Consider updating CHANGELOG.md');
+    print('Do you want to create a CL?');
+    if (prompt()) {
+      await runProcessInteractively(
+        ['git', 'cl', 'upload', '-m', commitMessage],
+        explanation: 'Creating CL',
+      );
+    }
+    return 0;
+  }
+}
+
+Future<void> main(List<String> args) async {
+  final runner = CommandRunner<int>(
+      'manage_deps.dart', 'helps managing the DEPS file',
+      usageLineLength: 80)
+    ..addCommand(BumpCommand());
+  try {
+    exit(await runner.run(args) ?? -1);
+  } on UsageException catch (e) {
+    print(e.message);
+    print(e.usage);
+  }
+}
+
+bool prompt() {
+  stdout.write('(y/N):');
+  final answer = stdin.readLineSync() ?? '';
+  return answer.trim().toLowerCase() == 'y';
+}
+
+void printRunningLine(
+    List<String> cmd, String? explanation, String? workingDirectory) {
+  stdout.write(
+      "${explanation ?? 'Running'}: `${cmd.join(' ')}` ${workingDirectory == null ? '' : 'in $workingDirectory'}");
+}
+
+void printSuccessTrailer(ProcessResult result, String? onFailure) {
+  if (result.exitCode == 0) {
+    stdout.writeln(' ✓');
+  } else {
+    stdout.writeln(' X');
+    stderr.write(result.stdout);
+    stderr.write(result.stderr);
+    if (onFailure != null) {
+      print(onFailure);
+    }
+    throw Exception();
+  }
+}
+
+void runProcessAssumingSuccess(List<String> cmd,
+    {String? explanation,
+    String? workingDirectory,
+    Map<String, String> environment = const {},
+    String? onFailure}) {
+  printRunningLine(cmd, explanation, workingDirectory);
+  final result = Process.runSync(
+    cmd[0],
+    cmd.skip(1).toList(),
+    workingDirectory: workingDirectory,
+    environment: environment,
+  );
+  printSuccessTrailer(result, onFailure);
+}
+
+List<String> runProcessForLines(List<String> cmd,
+    {String? explanation, String? workingDirectory, String? onFailure}) {
+  printRunningLine(cmd, explanation, workingDirectory);
+  final result = Process.runSync(
+    cmd[0],
+    cmd.skip(1).toList(),
+    workingDirectory: workingDirectory,
+  );
+  printSuccessTrailer(result, onFailure);
+  final output = (result.stdout as String);
+  return output == '' ? <String>[] : output.split('\n');
+}
+
+Future<void> runProcessInteractively(List<String> cmd,
+    {String? explanation, String? workingDirectory}) async {
+  printRunningLine(cmd, explanation, workingDirectory);
+  stdout.writeln('');
+  final process = await Process.start(cmd[0], cmd.skip(1).toList(),
+      workingDirectory: workingDirectory, mode: ProcessStartMode.inheritStdio);
+  final exitCode = await process.exitCode;
+  if (exitCode != 0) {
+    throw Exception();
+  }
+}
+
+int runProcessForExitCode(List<String> cmd,
+    {String? explanation, String? workingDirectory}) {
+  printRunningLine(cmd, explanation, workingDirectory);
+  final result = Process.runSync(
+    cmd[0],
+    cmd.skip(1).toList(),
+    workingDirectory: workingDirectory,
+  );
+  stdout.writeln(' => ${result.exitCode}');
+  return result.exitCode;
+}