diff --git a/DEPS b/DEPS
index 436dc5d..b71fa4d 100644
--- a/DEPS
+++ b/DEPS
@@ -45,7 +45,7 @@
   # hashes. It requires access to the dart-build-access group, which EngProd
   # has.
   "co19_rev": "88b4f0556b0889067efcac45f2b96bc630e5b96c",
-  "co19_2_rev": "e48b3090826cf40b8037648f19d211e8eab1b4b6",
+  "co19_2_rev": "cf6eed0535e45413672bb5bb6e65df9f59846372",
 
   # The internal benchmarks to use. See go/dart-benchmarks-internal
   "benchmarks_internal_rev": "354c978979c57e4a76f62e22cf644ed0804f4421",
diff --git a/pkg/analysis_server/lib/src/analysis_server_abstract.dart b/pkg/analysis_server/lib/src/analysis_server_abstract.dart
index 5589872..f7d620e 100644
--- a/pkg/analysis_server/lib/src/analysis_server_abstract.dart
+++ b/pkg/analysis_server/lib/src/analysis_server_abstract.dart
@@ -112,7 +112,12 @@
   final OverlayResourceProvider resourceProvider;
 
   /// The next modification stamp for a changed file in the [resourceProvider].
-  int overlayModificationStamp = 0;
+  ///
+  /// This value is increased each time it is used and used instead of real
+  /// modification stamps. It's seeded with `millisecondsSinceEpoch` to reduce
+  /// the chance of colliding with values used in previous analysis sessions if
+  /// used as a cache key.
+  int overlayModificationStamp = DateTime.now().millisecondsSinceEpoch;
 
   AbstractAnalysisServer(
     this.options,
diff --git a/pkg/analysis_server/lib/src/context_manager.dart b/pkg/analysis_server/lib/src/context_manager.dart
index ce8ab76..42ef0da 100644
--- a/pkg/analysis_server/lib/src/context_manager.dart
+++ b/pkg/analysis_server/lib/src/context_manager.dart
@@ -434,7 +434,9 @@
         if (_isContainedInDotFolder(contextImpl.contextRoot.root.path, file)) {
           continue;
         }
-        if (file_paths.isDart(pathContext, file)) {
+        if (file_paths.isAndroidManifestXml(pathContext, file)) {
+          _analyzeAndroidManifestXml(driver, file);
+        } else if (file_paths.isDart(pathContext, file)) {
           driver.addFile(file);
         }
       }
@@ -455,28 +457,6 @@
       if (pubspecFile.exists) {
         _analyzePubspecYaml(driver, pubspecFile.path);
       }
-
-      void checkManifestFilesIn(Folder folder) {
-        // Don't traverse into dot directories.
-        if (folder.shortName.startsWith('.')) {
-          return;
-        }
-
-        for (var child in folder.getChildren()) {
-          if (child is File) {
-            if (file_paths.isAndroidManifestXml(pathContext, child.path) &&
-                !excludedPaths.contains(child.path)) {
-              _analyzeAndroidManifestXml(driver, child.path);
-            }
-          } else if (child is Folder) {
-            if (!excludedPaths.contains(child.path)) {
-              checkManifestFilesIn(child);
-            }
-          }
-        }
-      }
-
-      checkManifestFilesIn(rootFolder);
     }
 
     callbacks.afterContextsCreated();
diff --git a/pkg/analysis_server/lib/src/services/correction/fix.dart b/pkg/analysis_server/lib/src/services/correction/fix.dart
index 4138e15..aac827c 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix.dart
@@ -143,27 +143,27 @@
 
 /// An enumeration of quick fix kinds found in a Dart file.
 class DartFixKind {
-  static const ADD_ASYNC =
-      FixKind('dart.fix.add.async', 50, "Add 'async' modifier");
-  static const ADD_AWAIT =
-      FixKind('dart.fix.add.await', 50, "Add 'await' keyword");
+  static const ADD_ASYNC = FixKind('dart.fix.add.async',
+      DartFixKindPriority.DEFAULT, "Add 'async' modifier");
+  static const ADD_AWAIT = FixKind(
+      'dart.fix.add.await', DartFixKindPriority.DEFAULT, "Add 'await' keyword");
   static const ADD_AWAIT_MULTI = FixKind('dart.fix.add.await.multi',
       DartFixKindPriority.IN_FILE, "Add 'await's everywhere in file");
-  static const ADD_EXPLICIT_CAST =
-      FixKind('dart.fix.add.explicitCast', 50, 'Add cast');
-  static const ADD_CONST =
-      FixKind('dart.fix.add.const', 50, "Add 'const' modifier");
+  static const ADD_EXPLICIT_CAST = FixKind(
+      'dart.fix.add.explicitCast', DartFixKindPriority.DEFAULT, 'Add cast');
+  static const ADD_CONST = FixKind('dart.fix.add.const',
+      DartFixKindPriority.DEFAULT, "Add 'const' modifier");
   static const ADD_CONST_MULTI = FixKind('dart.fix.add.const.multi',
       DartFixKindPriority.IN_FILE, "Add 'const' modifiers everywhere in file");
-  static const ADD_CURLY_BRACES =
-      FixKind('dart.fix.add.curlyBraces', 50, 'Add curly braces');
+  static const ADD_CURLY_BRACES = FixKind('dart.fix.add.curlyBraces',
+      DartFixKindPriority.DEFAULT, 'Add curly braces');
   static const ADD_CURLY_BRACES_MULTI = FixKind(
       'dart.fix.add.curlyBraces.multi',
       DartFixKindPriority.IN_FILE,
       'Add curly braces everywhere in file');
   static const ADD_DIAGNOSTIC_PROPERTY_REFERENCE = FixKind(
       'dart.fix.add.diagnosticPropertyReference',
-      50,
+      DartFixKindPriority.DEFAULT,
       'Add a debug reference to this property');
   static const ADD_DIAGNOSTIC_PROPERTY_REFERENCE_MULTI = FixKind(
       'dart.fix.add.diagnosticPropertyReference.multi',
@@ -173,10 +173,12 @@
       'dart.fix.add.fieldFormalParameters',
       70,
       'Add final field formal parameters');
-  static const ADD_LATE =
-      FixKind('dart.fix.add.late', 50, "Add 'late' modifier");
+  static const ADD_LATE = FixKind(
+      'dart.fix.add.late', DartFixKindPriority.DEFAULT, "Add 'late' modifier");
   static const ADD_MISSING_ENUM_CASE_CLAUSES = FixKind(
-      'dart.fix.add.missingEnumCaseClauses', 50, 'Add missing case clauses');
+      'dart.fix.add.missingEnumCaseClauses',
+      DartFixKindPriority.DEFAULT,
+      'Add missing case clauses');
   static const ADD_MISSING_PARAMETER_NAMED = FixKind(
       'dart.fix.add.missingParameterNamed', 70, "Add named parameter '{0}'");
   static const ADD_MISSING_PARAMETER_POSITIONAL = FixKind(
@@ -191,406 +193,458 @@
       'dart.fix.add.missingRequiredArgument',
       70,
       "Add required argument '{0}'");
-  static const ADD_NE_NULL = FixKind('dart.fix.add.neNull', 50, 'Add != null');
+  static const ADD_NE_NULL = FixKind(
+      'dart.fix.add.neNull', DartFixKindPriority.DEFAULT, 'Add != null');
   static const ADD_NE_NULL_MULTI = FixKind('dart.fix.add.neNull.multi',
       DartFixKindPriority.IN_FILE, 'Add != null everywhere in file');
-  static const ADD_NULL_CHECK =
-      FixKind('dart.fix.add.nullCheck', 50, 'Add a null check (!)');
-  static const ADD_OVERRIDE =
-      FixKind('dart.fix.add.override', 50, "Add '@override' annotation");
+  static const ADD_NULL_CHECK = FixKind('dart.fix.add.nullCheck',
+      DartFixKindPriority.DEFAULT, 'Add a null check (!)');
+  static const ADD_OVERRIDE = FixKind('dart.fix.add.override',
+      DartFixKindPriority.DEFAULT, "Add '@override' annotation");
   static const ADD_OVERRIDE_MULTI = FixKind(
       'dart.fix.add.override.multi',
       DartFixKindPriority.IN_FILE,
       "Add '@override' annotations everywhere in file");
-  static const ADD_REQUIRED =
-      FixKind('dart.fix.add.required', 50, "Add '@required' annotation");
+  static const ADD_REQUIRED = FixKind('dart.fix.add.required',
+      DartFixKindPriority.DEFAULT, "Add '@required' annotation");
   static const ADD_REQUIRED_MULTI = FixKind(
       'dart.fix.add.required.multi',
       DartFixKindPriority.IN_FILE,
       "Add '@required' annotations everywhere in file");
-  static const ADD_REQUIRED2 =
-      FixKind('dart.fix.add.required', 50, "Add 'required' keyword");
+  static const ADD_REQUIRED2 = FixKind('dart.fix.add.required',
+      DartFixKindPriority.DEFAULT, "Add 'required' keyword");
   static const ADD_REQUIRED2_MULTI = FixKind(
       'dart.fix.add.required.multi',
       DartFixKindPriority.IN_FILE,
       "Add 'required' keywords everywhere in file");
-  static const ADD_RETURN_TYPE =
-      FixKind('dart.fix.add.returnType', 50, 'Add return type');
+  static const ADD_RETURN_TYPE = FixKind('dart.fix.add.returnType',
+      DartFixKindPriority.DEFAULT, 'Add return type');
   static const ADD_RETURN_TYPE_MULTI = FixKind('dart.fix.add.returnType.multi',
       DartFixKindPriority.IN_FILE, 'Add return types everywhere in file');
-  static const ADD_STATIC =
-      FixKind('dart.fix.add.static', 50, "Add 'static' modifier");
+  static const ADD_STATIC = FixKind('dart.fix.add.static',
+      DartFixKindPriority.DEFAULT, "Add 'static' modifier");
   static const ADD_SUPER_CONSTRUCTOR_INVOCATION = FixKind(
       'dart.fix.add.superConstructorInvocation',
-      50,
+      DartFixKindPriority.DEFAULT,
       'Add super constructor {0} invocation');
-  static const ADD_TYPE_ANNOTATION =
-      FixKind('dart.fix.add.typeAnnotation', 50, 'Add type annotation');
+  static const ADD_TYPE_ANNOTATION = FixKind('dart.fix.add.typeAnnotation',
+      DartFixKindPriority.DEFAULT, 'Add type annotation');
   static const ADD_TYPE_ANNOTATION_MULTI = FixKind(
       'dart.fix.add.typeAnnotation.multi',
       DartFixKindPriority.IN_FILE,
       'Add type annotations everywhere in file');
   static const CHANGE_ARGUMENT_NAME =
       FixKind('dart.fix.change.argumentName', 60, "Change to '{0}'");
-  static const CHANGE_TO = FixKind('dart.fix.change.to', 51, "Change to '{0}'");
+  static const CHANGE_TO = FixKind(
+      'dart.fix.change.to', DartFixKindPriority.DEFAULT + 1, "Change to '{0}'");
   static const CHANGE_TO_NEAREST_PRECISE_VALUE = FixKind(
       'dart.fix.change.toNearestPreciseValue',
-      50,
+      DartFixKindPriority.DEFAULT,
       'Change to nearest precise int-as-double value: {0}');
   static const CHANGE_TO_STATIC_ACCESS = FixKind(
       'dart.fix.change.toStaticAccess',
-      50,
+      DartFixKindPriority.DEFAULT,
       "Change access to static using '{0}'");
   static const CHANGE_TYPE_ANNOTATION = FixKind(
       'dart.fix.change.typeAnnotation',
-      50,
+      DartFixKindPriority.DEFAULT,
       "Change '{0}' to '{1}' type annotation");
   static const CONVERT_FLUTTER_CHILD = FixKind(
-      'dart.fix.flutter.convert.childToChildren', 50, 'Convert to children:');
+      'dart.fix.flutter.convert.childToChildren',
+      DartFixKindPriority.DEFAULT,
+      'Convert to children:');
   static const CONVERT_FLUTTER_CHILDREN = FixKind(
-      'dart.fix.flutter.convert.childrenToChild', 50, 'Convert to child:');
+      'dart.fix.flutter.convert.childrenToChild',
+      DartFixKindPriority.DEFAULT,
+      'Convert to child:');
   static const CONVERT_INTO_EXPRESSION_BODY = FixKind(
-      'dart.fix.convert.toExpressionBody', 50, 'Convert to expression body');
+      'dart.fix.convert.toExpressionBody',
+      DartFixKindPriority.DEFAULT,
+      'Convert to expression body');
   static const CONVERT_INTO_EXPRESSION_BODY_MULTI = FixKind(
       'dart.fix.convert.toExpressionBody.multi',
       DartFixKindPriority.IN_FILE,
       'Convert to expression bodies everywhere in file');
-  static const CONVERT_TO_CONTAINS =
-      FixKind('dart.fix.convert.toContains', 50, "Convert to using 'contains'");
+  static const CONVERT_TO_CONTAINS = FixKind('dart.fix.convert.toContains',
+      DartFixKindPriority.DEFAULT, "Convert to using 'contains'");
   static const CONVERT_TO_CONTAINS_MULTI = FixKind(
       'dart.fix.convert.toContains.multi',
       DartFixKindPriority.IN_FILE,
       "Convert to using 'contains' everywhere in file");
-  static const CONVERT_TO_FOR_ELEMENT = FixKind(
-      'dart.fix.convert.toForElement', 50, "Convert to a 'for' element");
+  static const CONVERT_TO_FOR_ELEMENT = FixKind('dart.fix.convert.toForElement',
+      DartFixKindPriority.DEFAULT, "Convert to a 'for' element");
   static const CONVERT_TO_FOR_ELEMENT_MULTI = FixKind(
       'dart.fix.convert.toForElement.multi',
       DartFixKindPriority.IN_FILE,
       "Convert to 'for' elements everywhere in file");
   static const CONVERT_TO_GENERIC_FUNCTION_SYNTAX = FixKind(
       'dart.fix.convert.toGenericFunctionSyntax',
-      50,
+      DartFixKindPriority.DEFAULT,
       "Convert into 'Function' syntax");
   static const CONVERT_TO_GENERIC_FUNCTION_SYNTAX_MULTI = FixKind(
       'dart.fix.convert.toGenericFunctionSyntax.multi',
       DartFixKindPriority.IN_FILE,
       "Convert to 'Function' syntax everywhere in file");
-  static const CONVERT_TO_IF_ELEMENT =
-      FixKind('dart.fix.convert.toIfElement', 50, "Convert to an 'if' element");
+  static const CONVERT_TO_IF_ELEMENT = FixKind('dart.fix.convert.toIfElement',
+      DartFixKindPriority.DEFAULT, "Convert to an 'if' element");
   static const CONVERT_TO_IF_ELEMENT_MULTI = FixKind(
       'dart.fix.convert.toIfElement.multi',
       DartFixKindPriority.IN_FILE,
       "Convert to 'if' elements everywhere in file");
-  static const CONVERT_TO_IF_NULL =
-      FixKind('dart.fix.convert.toIfNull', 50, "Convert to use '??'");
+  static const CONVERT_TO_IF_NULL = FixKind('dart.fix.convert.toIfNull',
+      DartFixKindPriority.DEFAULT, "Convert to use '??'");
   static const CONVERT_TO_IF_NULL_MULTI = FixKind(
       'dart.fix.convert.toIfNull.multi',
       DartFixKindPriority.IN_FILE,
       "Convert to '??'s everywhere in file");
-  static const CONVERT_TO_INT_LITERAL =
-      FixKind('dart.fix.convert.toIntLiteral', 50, 'Convert to an int literal');
+  static const CONVERT_TO_INT_LITERAL = FixKind('dart.fix.convert.toIntLiteral',
+      DartFixKindPriority.DEFAULT, 'Convert to an int literal');
   static const CONVERT_TO_INT_LITERAL_MULTI = FixKind(
       'dart.fix.convert.toIntLiteral.multi',
       DartFixKindPriority.IN_FILE,
       'Convert to int literals everywhere in file');
   static const CONVERT_TO_LINE_COMMENT = FixKind(
       'dart.fix.convert.toLineComment',
-      50,
+      DartFixKindPriority.DEFAULT,
       'Convert to line documentation comment');
   static const CONVERT_TO_LINE_COMMENT_MULTI = FixKind(
       'dart.fix.convert.toLineComment.multi',
       DartFixKindPriority.IN_FILE,
       'Convert to line documentation comments everywhere in file');
-  static const CONVERT_TO_LIST_LITERAL =
-      FixKind('dart.fix.convert.toListLiteral', 50, 'Convert to list literal');
+  static const CONVERT_TO_LIST_LITERAL = FixKind(
+      'dart.fix.convert.toListLiteral',
+      DartFixKindPriority.DEFAULT,
+      'Convert to list literal');
   static const CONVERT_TO_LIST_LITERAL_MULTI = FixKind(
       'dart.fix.convert.toListLiteral.multi',
       DartFixKindPriority.IN_FILE,
       'Convert to list literals everywhere in file');
-  static const CONVERT_TO_MAP_LITERAL =
-      FixKind('dart.fix.convert.toMapLiteral', 50, 'Convert to map literal');
+  static const CONVERT_TO_MAP_LITERAL = FixKind('dart.fix.convert.toMapLiteral',
+      DartFixKindPriority.DEFAULT, 'Convert to map literal');
   static const CONVERT_TO_MAP_LITERAL_MULTI = FixKind(
       'dart.fix.convert.toMapLiteral.multi',
       DartFixKindPriority.IN_FILE,
       'Convert to map literals everywhere in file');
   static const CONVERT_TO_NAMED_ARGUMENTS = FixKind(
-      'dart.fix.convert.toNamedArguments', 50, 'Convert to named arguments');
-  static const CONVERT_TO_NULL_AWARE =
-      FixKind('dart.fix.convert.toNullAware', 50, "Convert to use '?.'");
+      'dart.fix.convert.toNamedArguments',
+      DartFixKindPriority.DEFAULT,
+      'Convert to named arguments');
+  static const CONVERT_TO_NULL_AWARE = FixKind('dart.fix.convert.toNullAware',
+      DartFixKindPriority.DEFAULT, "Convert to use '?.'");
   static const CONVERT_TO_NULL_AWARE_MULTI = FixKind(
       'dart.fix.convert.toNullAware.multi',
       DartFixKindPriority.IN_FILE,
       "Convert to use '?.' everywhere in file");
   static const CONVERT_TO_NULL_AWARE_SPREAD = FixKind(
-      'dart.fix.convert.toNullAwareSpread', 50, "Convert to use '...?'");
+      'dart.fix.convert.toNullAwareSpread',
+      DartFixKindPriority.DEFAULT,
+      "Convert to use '...?'");
   static const CONVERT_TO_NULL_AWARE_SPREAD_MULTI = FixKind(
       'dart.fix.convert.toNullAwareSpread.multi',
       DartFixKindPriority.IN_FILE,
       "Convert to use '...?' everywhere in file");
-  static const CONVERT_TO_ON_TYPE =
-      FixKind('dart.fix.convert.toOnType', 50, "Convert to 'on {0}'");
+  static const CONVERT_TO_ON_TYPE = FixKind('dart.fix.convert.toOnType',
+      DartFixKindPriority.DEFAULT, "Convert to 'on {0}'");
   static const CONVERT_TO_PACKAGE_IMPORT = FixKind(
-      'dart.fix.convert.toPackageImport', 50, "Convert to 'package:' import");
+      'dart.fix.convert.toPackageImport',
+      DartFixKindPriority.DEFAULT,
+      "Convert to 'package:' import");
   static const CONVERT_TO_PACKAGE_IMPORT_MULTI = FixKind(
       'dart.fix.convert.toPackageImport.multi',
       DartFixKindPriority.IN_FILE,
       "Convert to 'package:' imports everywhere in file");
   static const CONVERT_TO_RELATIVE_IMPORT = FixKind(
-      'dart.fix.convert.toRelativeImport', 50, 'Convert to relative import');
+      'dart.fix.convert.toRelativeImport',
+      DartFixKindPriority.DEFAULT,
+      'Convert to relative import');
   static const CONVERT_TO_RELATIVE_IMPORT_MULTI = FixKind(
       'dart.fix.convert.toRelativeImport.multi',
       DartFixKindPriority.IN_FILE,
       'Convert to relative imports everywhere in file');
-  static const CONVERT_TO_SET_LITERAL =
-      FixKind('dart.fix.convert.toSetLiteral', 50, 'Convert to set literal');
+  static const CONVERT_TO_SET_LITERAL = FixKind('dart.fix.convert.toSetLiteral',
+      DartFixKindPriority.DEFAULT, 'Convert to set literal');
   static const CONVERT_TO_SET_LITERAL_MULTI = FixKind(
       'dart.fix.convert.toSetLiteral.multi',
       DartFixKindPriority.IN_FILE,
       'Convert to set literals everywhere in file');
   static const CONVERT_TO_SINGLE_QUOTED_STRING = FixKind(
       'dart.fix.convert.toSingleQuotedString',
-      50,
+      DartFixKindPriority.DEFAULT,
       'Convert to single quoted string');
   static const CONVERT_TO_SINGLE_QUOTED_STRING_MULTI = FixKind(
       'dart.fix.convert.toSingleQuotedString.multi',
       DartFixKindPriority.IN_FILE,
       'Convert to single quoted strings everywhere in file');
-  static const CONVERT_TO_SPREAD =
-      FixKind('dart.fix.convert.toSpread', 50, 'Convert to a spread');
+  static const CONVERT_TO_SPREAD = FixKind('dart.fix.convert.toSpread',
+      DartFixKindPriority.DEFAULT, 'Convert to a spread');
   static const CONVERT_TO_SPREAD_MULTI = FixKind(
       'dart.fix.convert.toSpread.multi',
       DartFixKindPriority.IN_FILE,
       'Convert to spreads everywhere in file');
-  static const CONVERT_TO_WHERE_TYPE =
-      FixKind('dart.fix.convert.toWhereType', 50, "Convert to use 'whereType'");
+  static const CONVERT_TO_WHERE_TYPE = FixKind('dart.fix.convert.toWhereType',
+      DartFixKindPriority.DEFAULT, "Convert to use 'whereType'");
   static const CONVERT_TO_WHERE_TYPE_MULTI = FixKind(
       'dart.fix.convert.toWhereType.multi',
       DartFixKindPriority.IN_FILE,
       "Convert to using 'whereType' everywhere in file");
-  static const CREATE_CLASS =
-      FixKind('dart.fix.create.class', 50, "Create class '{0}'");
-  static const CREATE_CONSTRUCTOR =
-      FixKind('dart.fix.create.constructor', 50, "Create constructor '{0}'");
+  static const CREATE_CLASS = FixKind('dart.fix.create.class',
+      DartFixKindPriority.DEFAULT, "Create class '{0}'");
+  static const CREATE_CONSTRUCTOR = FixKind('dart.fix.create.constructor',
+      DartFixKindPriority.DEFAULT, "Create constructor '{0}'");
   static const CREATE_CONSTRUCTOR_FOR_FINAL_FIELDS = FixKind(
       'dart.fix.create.constructorForFinalFields',
-      50,
+      DartFixKindPriority.DEFAULT,
       'Create constructor for final fields');
   static const CREATE_CONSTRUCTOR_SUPER = FixKind(
-      'dart.fix.create.constructorSuper', 50, 'Create constructor to call {0}');
+      'dart.fix.create.constructorSuper',
+      DartFixKindPriority.DEFAULT,
+      'Create constructor to call {0}');
   static const CREATE_FIELD =
       FixKind('dart.fix.create.field', 49, "Create field '{0}'");
-  static const CREATE_FILE =
-      FixKind('dart.fix.create.file', 50, "Create file '{0}'");
+  static const CREATE_FILE = FixKind(
+      'dart.fix.create.file', DartFixKindPriority.DEFAULT, "Create file '{0}'");
   static const CREATE_FUNCTION =
       FixKind('dart.fix.create.function', 49, "Create function '{0}'");
-  static const CREATE_GETTER =
-      FixKind('dart.fix.create.getter', 50, "Create getter '{0}'");
-  static const CREATE_LOCAL_VARIABLE = FixKind(
-      'dart.fix.create.localVariable', 50, "Create local variable '{0}'");
-  static const CREATE_METHOD =
-      FixKind('dart.fix.create.method', 50, "Create method '{0}'");
+  static const CREATE_GETTER = FixKind('dart.fix.create.getter',
+      DartFixKindPriority.DEFAULT, "Create getter '{0}'");
+  static const CREATE_LOCAL_VARIABLE = FixKind('dart.fix.create.localVariable',
+      DartFixKindPriority.DEFAULT, "Create local variable '{0}'");
+  static const CREATE_METHOD = FixKind('dart.fix.create.method',
+      DartFixKindPriority.DEFAULT, "Create method '{0}'");
   // todo (pq): used by LintNames.hash_and_equals; consider removing.
   static const CREATE_METHOD_MULTI = FixKind('dart.fix.create.method.multi',
       DartFixKindPriority.IN_FILE, 'Create methods in file');
   static const CREATE_MISSING_OVERRIDES = FixKind(
-      'dart.fix.create.missingOverrides', 51, 'Create {0} missing override(s)');
-  static const CREATE_MIXIN =
-      FixKind('dart.fix.create.mixin', 50, "Create mixin '{0}'");
+      'dart.fix.create.missingOverrides',
+      DartFixKindPriority.DEFAULT + 1,
+      'Create {0} missing override(s)');
+  static const CREATE_MIXIN = FixKind('dart.fix.create.mixin',
+      DartFixKindPriority.DEFAULT, "Create mixin '{0}'");
   static const CREATE_NO_SUCH_METHOD = FixKind(
       'dart.fix.create.noSuchMethod', 49, "Create 'noSuchMethod' method");
-  static const CREATE_SETTER =
-      FixKind('dart.fix.create.setter', 50, "Create setter '{0}'");
-  static const DATA_DRIVEN = FixKind('dart.fix.dataDriven', 50, '{0}');
-  static const EXTEND_CLASS_FOR_MIXIN =
-      FixKind('dart.fix.extendClassForMixin', 50, "Extend the class '{0}'");
+  static const CREATE_SETTER = FixKind('dart.fix.create.setter',
+      DartFixKindPriority.DEFAULT, "Create setter '{0}'");
+  static const DATA_DRIVEN =
+      FixKind('dart.fix.dataDriven', DartFixKindPriority.DEFAULT, '{0}');
+  static const EXTEND_CLASS_FOR_MIXIN = FixKind('dart.fix.extendClassForMixin',
+      DartFixKindPriority.DEFAULT, "Extend the class '{0}'");
   static const IMPORT_ASYNC =
       FixKind('dart.fix.import.async', 49, "Import 'dart:async'");
   static const IMPORT_LIBRARY_PREFIX = FixKind('dart.fix.import.libraryPrefix',
       49, "Use imported library '{0}' with prefix '{1}'");
-  static const IMPORT_LIBRARY_PROJECT1 =
-      FixKind('dart.fix.import.libraryProject1', 53, "Import library '{0}'");
-  static const IMPORT_LIBRARY_PROJECT2 =
-      FixKind('dart.fix.import.libraryProject2', 52, "Import library '{0}'");
-  static const IMPORT_LIBRARY_PROJECT3 =
-      FixKind('dart.fix.import.libraryProject3', 51, "Import library '{0}'");
-  static const IMPORT_LIBRARY_SDK =
-      FixKind('dart.fix.import.librarySdk', 54, "Import library '{0}'");
-  static const IMPORT_LIBRARY_SHOW =
-      FixKind('dart.fix.import.libraryShow', 55, "Update library '{0}' import");
-  static const INLINE_INVOCATION =
-      FixKind('dart.fix.inlineInvocation', 30, "Inline invocation of '{0}'");
+  static const IMPORT_LIBRARY_PROJECT1 = FixKind(
+      'dart.fix.import.libraryProject1',
+      DartFixKindPriority.DEFAULT + 3,
+      "Import library '{0}'");
+  static const IMPORT_LIBRARY_PROJECT2 = FixKind(
+      'dart.fix.import.libraryProject2',
+      DartFixKindPriority.DEFAULT + 2,
+      "Import library '{0}'");
+  static const IMPORT_LIBRARY_PROJECT3 = FixKind(
+      'dart.fix.import.libraryProject3',
+      DartFixKindPriority.DEFAULT + 1,
+      "Import library '{0}'");
+  static const IMPORT_LIBRARY_SDK = FixKind('dart.fix.import.librarySdk',
+      DartFixKindPriority.DEFAULT + 4, "Import library '{0}'");
+  static const IMPORT_LIBRARY_SHOW = FixKind('dart.fix.import.libraryShow',
+      DartFixKindPriority.DEFAULT + 5, "Update library '{0}' import");
+  static const INLINE_INVOCATION = FixKind('dart.fix.inlineInvocation',
+      DartFixKindPriority.DEFAULT - 20, "Inline invocation of '{0}'");
   static const INLINE_INVOCATION_MULTI = FixKind(
       'dart.fix.inlineInvocation.multi',
       DartFixKindPriority.IN_FILE - 20,
       'Inline invocations everywhere in file');
-  static const INLINE_TYPEDEF =
-      FixKind('dart.fix.inlineTypedef', 30, "Inline the definition of '{0}'");
+  static const INLINE_TYPEDEF = FixKind('dart.fix.inlineTypedef',
+      DartFixKindPriority.DEFAULT - 20, "Inline the definition of '{0}'");
   static const INLINE_TYPEDEF_MULTI = FixKind(
       'dart.fix.inlineTypedef.multi',
       DartFixKindPriority.IN_FILE - 20,
       'Inline type definitions everywhere in file');
-  static const INSERT_SEMICOLON =
-      FixKind('dart.fix.insertSemicolon', 50, "Insert ';'");
-  static const MAKE_CLASS_ABSTRACT =
-      FixKind('dart.fix.makeClassAbstract', 50, "Make class '{0}' abstract");
-  static const MAKE_FIELD_NOT_FINAL =
-      FixKind('dart.fix.makeFieldNotFinal', 50, "Make field '{0}' not final");
-  static const MAKE_FINAL = FixKind('dart.fix.makeFinal', 50, 'Make final');
+  static const INSERT_SEMICOLON = FixKind(
+      'dart.fix.insertSemicolon', DartFixKindPriority.DEFAULT, "Insert ';'");
+  static const MAKE_CLASS_ABSTRACT = FixKind('dart.fix.makeClassAbstract',
+      DartFixKindPriority.DEFAULT, "Make class '{0}' abstract");
+  static const MAKE_FIELD_NOT_FINAL = FixKind('dart.fix.makeFieldNotFinal',
+      DartFixKindPriority.DEFAULT, "Make field '{0}' not final");
+  static const MAKE_FINAL =
+      FixKind('dart.fix.makeFinal', DartFixKindPriority.DEFAULT, 'Make final');
   // todo (pq): consider parameterizing: 'Make {fields} final...'
   static const MAKE_FINAL_MULTI = FixKind('dart.fix.makeFinal.multi',
       DartFixKindPriority.IN_FILE, 'Make final where possible in file');
   static const MAKE_RETURN_TYPE_NULLABLE = FixKind(
-      'dart.fix.makeReturnTypeNullable', 50, 'Make the return type nullable');
+      'dart.fix.makeReturnTypeNullable',
+      DartFixKindPriority.DEFAULT,
+      'Make the return type nullable');
   static const MOVE_TYPE_ARGUMENTS_TO_CLASS = FixKind(
       'dart.fix.moveTypeArgumentsToClass',
-      50,
+      DartFixKindPriority.DEFAULT,
       'Move type arguments to after class name');
   static const MAKE_VARIABLE_NOT_FINAL = FixKind(
-      'dart.fix.makeVariableNotFinal', 50, "Make variable '{0}' not final");
-  static const MAKE_VARIABLE_NULLABLE =
-      FixKind('dart.fix.makeVariableNullable', 50, "Make '{0}' nullable");
-  static const ORGANIZE_IMPORTS =
-      FixKind('dart.fix.organize.imports', 50, 'Organize Imports');
-  static const QUALIFY_REFERENCE =
-      FixKind('dart.fix.qualifyReference', 50, "Use '{0}'");
-  static const REMOVE_ANNOTATION =
-      FixKind('dart.fix.remove.annotation', 50, "Remove the '{0}' annotation");
-  static const REMOVE_ARGUMENT =
-      FixKind('dart.fix.remove.argument', 50, 'Remove argument');
+      'dart.fix.makeVariableNotFinal',
+      DartFixKindPriority.DEFAULT,
+      "Make variable '{0}' not final");
+  static const MAKE_VARIABLE_NULLABLE = FixKind('dart.fix.makeVariableNullable',
+      DartFixKindPriority.DEFAULT, "Make '{0}' nullable");
+  static const ORGANIZE_IMPORTS = FixKind('dart.fix.organize.imports',
+      DartFixKindPriority.DEFAULT, 'Organize Imports');
+  static const QUALIFY_REFERENCE = FixKind(
+      'dart.fix.qualifyReference', DartFixKindPriority.DEFAULT, "Use '{0}'");
+  static const REMOVE_ANNOTATION = FixKind('dart.fix.remove.annotation',
+      DartFixKindPriority.DEFAULT, "Remove the '{0}' annotation");
+  static const REMOVE_ARGUMENT = FixKind('dart.fix.remove.argument',
+      DartFixKindPriority.DEFAULT, 'Remove argument');
   // todo (pq): used by LintNames.avoid_redundant_argument_values; consider a parameterized message
   static const REMOVE_ARGUMENT_MULTI = FixKind('dart.fix.remove.argument.multi',
       DartFixKindPriority.IN_FILE, 'Remove arguments in file');
-  static const REMOVE_AWAIT =
-      FixKind('dart.fix.remove.await', 50, 'Remove await');
+  static const REMOVE_AWAIT = FixKind(
+      'dart.fix.remove.await', DartFixKindPriority.DEFAULT, 'Remove await');
   static const REMOVE_AWAIT_MULTI = FixKind('dart.fix.remove.await.multi',
       DartFixKindPriority.IN_FILE, 'Remove awaits in file');
-  static const REMOVE_COMPARISON =
-      FixKind('dart.fix.remove.comparison', 50, 'Remove comparison');
-  static const REMOVE_CONST =
-      FixKind('dart.fix.remove.const', 50, 'Remove const');
-  static const REMOVE_DEAD_CODE =
-      FixKind('dart.fix.remove.deadCode', 50, 'Remove dead code');
-  static const REMOVE_DUPLICATE_CASE = FixKind(
-      'dart.fix.remove.duplicateCase', 50, 'Remove duplicate case statement');
+  static const REMOVE_COMPARISON = FixKind('dart.fix.remove.comparison',
+      DartFixKindPriority.DEFAULT, 'Remove comparison');
+  static const REMOVE_CONST = FixKind(
+      'dart.fix.remove.const', DartFixKindPriority.DEFAULT, 'Remove const');
+  static const REMOVE_DEAD_CODE = FixKind('dart.fix.remove.deadCode',
+      DartFixKindPriority.DEFAULT, 'Remove dead code');
+  static const REMOVE_DUPLICATE_CASE = FixKind('dart.fix.remove.duplicateCase',
+      DartFixKindPriority.DEFAULT, 'Remove duplicate case statement');
   // todo (pq): is this dangerous to bulk apply?  Consider removing.
   static const REMOVE_DUPLICATE_CASE_MULTI = FixKind(
       'dart.fix.remove.duplicateCase.multi',
       DartFixKindPriority.IN_FILE,
       'Remove duplicate case statement');
-  static const REMOVE_EMPTY_CATCH =
-      FixKind('dart.fix.remove.emptyCatch', 50, 'Remove empty catch clause');
+  static const REMOVE_EMPTY_CATCH = FixKind('dart.fix.remove.emptyCatch',
+      DartFixKindPriority.DEFAULT, 'Remove empty catch clause');
   static const REMOVE_EMPTY_CATCH_MULTI = FixKind(
       'dart.fix.remove.emptyCatch.multi',
       DartFixKindPriority.IN_FILE,
       'Remove empty catch clauses everywhere in file');
   static const REMOVE_EMPTY_CONSTRUCTOR_BODY = FixKind(
       'dart.fix.remove.emptyConstructorBody',
-      50,
+      DartFixKindPriority.DEFAULT,
       'Remove empty constructor body');
   static const REMOVE_EMPTY_CONSTRUCTOR_BODY_MULTI = FixKind(
       'dart.fix.remove.emptyConstructorBody.multi',
       DartFixKindPriority.IN_FILE,
       'Remove empty constructor bodies in file');
-  static const REMOVE_EMPTY_ELSE =
-      FixKind('dart.fix.remove.emptyElse', 50, 'Remove empty else clause');
+  static const REMOVE_EMPTY_ELSE = FixKind('dart.fix.remove.emptyElse',
+      DartFixKindPriority.DEFAULT, 'Remove empty else clause');
   static const REMOVE_EMPTY_ELSE_MULTI = FixKind(
       'dart.fix.remove.emptyElse.multi',
       DartFixKindPriority.IN_FILE,
       'Remove empty else clauses everywhere in file');
-  static const REMOVE_EMPTY_STATEMENT =
-      FixKind('dart.fix.remove.emptyStatement', 50, 'Remove empty statement');
+  static const REMOVE_EMPTY_STATEMENT = FixKind(
+      'dart.fix.remove.emptyStatement',
+      DartFixKindPriority.DEFAULT,
+      'Remove empty statement');
   static const REMOVE_EMPTY_STATEMENT_MULTI = FixKind(
       'dart.fix.remove.emptyStatement.multi',
       DartFixKindPriority.IN_FILE,
       'Remove empty statements everywhere in file');
-  static const REMOVE_IF_NULL_OPERATOR =
-      FixKind('dart.fix.remove.ifNullOperator', 50, "Remove the '??' operator");
+  static const REMOVE_IF_NULL_OPERATOR = FixKind(
+      'dart.fix.remove.ifNullOperator',
+      DartFixKindPriority.DEFAULT,
+      "Remove the '??' operator");
   static const REMOVE_IF_NULL_OPERATOR_MULTI = FixKind(
       'dart.fix.remove.ifNullOperator.multi',
       DartFixKindPriority.IN_FILE,
       "Remove unnecessary '??' operators everywhere in file");
-  static const REMOVE_INITIALIZER =
-      FixKind('dart.fix.remove.initializer', 50, 'Remove initializer');
+  static const REMOVE_INITIALIZER = FixKind('dart.fix.remove.initializer',
+      DartFixKindPriority.DEFAULT, 'Remove initializer');
   static const REMOVE_INITIALIZER_MULTI = FixKind(
       'dart.fix.remove.initializer.multi',
       DartFixKindPriority.IN_FILE,
       'Remove unnecessary initializers everywhere in file');
   static const REMOVE_INTERPOLATION_BRACES = FixKind(
       'dart.fix.remove.interpolationBraces',
-      50,
+      DartFixKindPriority.DEFAULT,
       'Remove unnecessary interpolation braces');
   static const REMOVE_INTERPOLATION_BRACES_MULTI = FixKind(
       'dart.fix.remove.interpolationBraces.multi',
       DartFixKindPriority.IN_FILE,
       'Remove unnecessary interpolation braces everywhere in file');
   static const REMOVE_METHOD_DECLARATION = FixKind(
-      'dart.fix.remove.methodDeclaration', 50, 'Remove method declaration');
+      'dart.fix.remove.methodDeclaration',
+      DartFixKindPriority.DEFAULT,
+      'Remove method declaration');
   // todo (pq): parameterize to make scope explicit
   static const REMOVE_METHOD_DECLARATION_MULTI = FixKind(
       'dart.fix.remove.methodDeclaration.multi',
       DartFixKindPriority.IN_FILE,
       'Remove unnecessary method declarations in file');
   static const REMOVE_NAME_FROM_COMBINATOR = FixKind(
-      'dart.fix.remove.nameFromCombinator', 50, "Remove name from '{0}'");
-  static const REMOVE_NON_NULL_ASSERTION =
-      FixKind('dart.fix.remove.nonNullAssertion', 50, "Remove the '!'");
-  static const REMOVE_OPERATOR =
-      FixKind('dart.fix.remove.operator', 50, 'Remove the operator');
+      'dart.fix.remove.nameFromCombinator',
+      DartFixKindPriority.DEFAULT,
+      "Remove name from '{0}'");
+  static const REMOVE_NON_NULL_ASSERTION = FixKind(
+      'dart.fix.remove.nonNullAssertion',
+      DartFixKindPriority.DEFAULT,
+      "Remove the '!'");
+  static const REMOVE_OPERATOR = FixKind('dart.fix.remove.operator',
+      DartFixKindPriority.DEFAULT, 'Remove the operator');
   static const REMOVE_OPERATOR_MULTI = FixKind(
       'dart.fix.remove.operator.multi.multi',
       DartFixKindPriority.IN_FILE,
       'Remove operators in file');
   static const REMOVE_PARAMETERS_IN_GETTER_DECLARATION = FixKind(
       'dart.fix.remove.parametersInGetterDeclaration',
-      50,
+      DartFixKindPriority.DEFAULT,
       'Remove parameters in getter declaration');
   static const REMOVE_PARENTHESIS_IN_GETTER_INVOCATION = FixKind(
       'dart.fix.remove.parenthesisInGetterInvocation',
-      50,
+      DartFixKindPriority.DEFAULT,
       'Remove parentheses in getter invocation');
-  static const REMOVE_QUESTION_MARK =
-      FixKind('dart.fix.remove.questionMark', 50, "Remove the '?'");
+  static const REMOVE_QUESTION_MARK = FixKind('dart.fix.remove.questionMark',
+      DartFixKindPriority.DEFAULT, "Remove the '?'");
   static const REMOVE_QUESTION_MARK_MULTI = FixKind(
       'dart.fix.remove.questionMark.multi',
       DartFixKindPriority.IN_FILE,
       'Remove unnecessary question marks in file');
-  static const REMOVE_THIS_EXPRESSION =
-      FixKind('dart.fix.remove.thisExpression', 50, 'Remove this expression');
+  static const REMOVE_THIS_EXPRESSION = FixKind(
+      'dart.fix.remove.thisExpression',
+      DartFixKindPriority.DEFAULT,
+      'Remove this expression');
   static const REMOVE_THIS_EXPRESSION_MULTI = FixKind(
       'dart.fix.remove.thisExpression.multi',
       DartFixKindPriority.IN_FILE,
       'Remove unnecessary this expressions everywhere in file');
-  static const REMOVE_TYPE_ANNOTATION =
-      FixKind('dart.fix.remove.typeAnnotation', 50, 'Remove type annotation');
+  static const REMOVE_TYPE_ANNOTATION = FixKind(
+      'dart.fix.remove.typeAnnotation',
+      DartFixKindPriority.DEFAULT,
+      'Remove type annotation');
   static const REMOVE_TYPE_ANNOTATION_MULTI = FixKind(
       'dart.fix.remove.typeAnnotation.multi',
       DartFixKindPriority.IN_FILE,
       'Remove unnecessary type annotations in file');
   static const REMOVE_TYPE_ARGUMENTS =
       FixKind('dart.fix.remove.typeArguments', 49, 'Remove type arguments');
-  static const REMOVE_UNNECESSARY_CAST =
-      FixKind('dart.fix.remove.unnecessaryCast', 50, 'Remove unnecessary cast');
+  static const REMOVE_UNNECESSARY_CAST = FixKind(
+      'dart.fix.remove.unnecessaryCast',
+      DartFixKindPriority.DEFAULT,
+      'Remove unnecessary cast');
   static const REMOVE_UNNECESSARY_CAST_MULTI = FixKind(
       'dart.fix.remove.unnecessaryCast.multi',
       DartFixKindPriority.IN_FILE,
       'Remove all unnecessary casts in file');
   static const REMOVE_UNNECESSARY_CONST = FixKind(
       'dart.fix.remove.unnecessaryConst',
-      50,
+      DartFixKindPriority.DEFAULT,
       'Remove unnecessary const keyword');
   static const REMOVE_UNNECESSARY_CONST_MULTI = FixKind(
       'dart.fix.remove.unnecessaryConst.multi',
       DartFixKindPriority.IN_FILE,
       'Remove unnecessary const keywords everywhere in file');
   static const REMOVE_UNNECESSARY_NEW = FixKind(
-      'dart.fix.remove.unnecessaryNew', 50, 'Remove unnecessary new keyword');
+      'dart.fix.remove.unnecessaryNew',
+      DartFixKindPriority.DEFAULT,
+      'Remove unnecessary new keyword');
   static const REMOVE_UNNECESSARY_NEW_MULTI = FixKind(
       'dart.fix.remove.unnecessaryNew.multi',
       DartFixKindPriority.IN_FILE,
       'Remove unnecessary new keywords everywhere in file');
   static const REMOVE_UNNECESSARY_PARENTHESES = FixKind(
       'dart.fix.remove.unnecessaryParentheses',
-      50,
+      DartFixKindPriority.DEFAULT,
       'Remove unnecessary parentheses');
   static const REMOVE_UNNECESSARY_PARENTHESES_MULTI = FixKind(
       'dart.fix.remove.unnecessaryParentheses.multi',
@@ -598,201 +652,232 @@
       'Remove all unnecessary parentheses in file');
   static const REMOVE_UNNECESSARY_STRING_INTERPOLATION = FixKind(
       'dart.fix.remove.unnecessaryStringInterpolation',
-      50,
+      DartFixKindPriority.DEFAULT,
       'Remove unnecessary string interpolation');
   static const REMOVE_UNNECESSARY_STRING_INTERPOLATION_MULTI = FixKind(
       'dart.fix.remove.unnecessaryStringInterpolation.multi',
       DartFixKindPriority.IN_FILE,
       'Remove all unnecessary string interpolations in file');
   static const REMOVE_UNUSED_CATCH_CLAUSE = FixKind(
-      'dart.fix.remove.unusedCatchClause', 50, "Remove unused 'catch' clause");
+      'dart.fix.remove.unusedCatchClause',
+      DartFixKindPriority.DEFAULT,
+      "Remove unused 'catch' clause");
   static const REMOVE_UNUSED_CATCH_STACK = FixKind(
       'dart.fix.remove.unusedCatchStack',
-      50,
+      DartFixKindPriority.DEFAULT,
       'Remove unused stack trace variable');
-  static const REMOVE_UNUSED_ELEMENT =
-      FixKind('dart.fix.remove.unusedElement', 50, 'Remove unused element');
-  static const REMOVE_UNUSED_FIELD =
-      FixKind('dart.fix.remove.unusedField', 50, 'Remove unused field');
-  static const REMOVE_UNUSED_IMPORT =
-      FixKind('dart.fix.remove.unusedImport', 50, 'Remove unused import');
+  static const REMOVE_UNUSED_ELEMENT = FixKind('dart.fix.remove.unusedElement',
+      DartFixKindPriority.DEFAULT, 'Remove unused element');
+  static const REMOVE_UNUSED_FIELD = FixKind('dart.fix.remove.unusedField',
+      DartFixKindPriority.DEFAULT, 'Remove unused field');
+  static const REMOVE_UNUSED_IMPORT = FixKind('dart.fix.remove.unusedImport',
+      DartFixKindPriority.DEFAULT, 'Remove unused import');
   static const REMOVE_UNUSED_IMPORT_MULTI = FixKind(
       'dart.fix.remove.unusedImport.multi',
       DartFixKindPriority.IN_FILE,
       'Remove all unused imports in file');
-  static const REMOVE_UNUSED_LABEL =
-      FixKind('dart.fix.remove.unusedLabel', 50, 'Remove unused label');
+  static const REMOVE_UNUSED_LABEL = FixKind('dart.fix.remove.unusedLabel',
+      DartFixKindPriority.DEFAULT, 'Remove unused label');
   static const REMOVE_UNUSED_LOCAL_VARIABLE = FixKind(
       'dart.fix.remove.unusedLocalVariable',
-      50,
+      DartFixKindPriority.DEFAULT,
       'Remove unused local variable');
   static const REMOVE_UNUSED_PARAMETER = FixKind(
-      'dart.fix.remove.unusedParameter', 50, 'Remove the unused parameter');
+      'dart.fix.remove.unusedParameter',
+      DartFixKindPriority.DEFAULT,
+      'Remove the unused parameter');
   static const REMOVE_UNUSED_PARAMETER_MULTI = FixKind(
       'dart.fix.remove.unusedParameter.multi',
       DartFixKindPriority.IN_FILE,
       'Remove unused parameters everywhere in file');
-  static const RENAME_TO_CAMEL_CASE =
-      FixKind('dart.fix.rename.toCamelCase', 50, "Rename to '{0}'");
+  static const RENAME_TO_CAMEL_CASE = FixKind('dart.fix.rename.toCamelCase',
+      DartFixKindPriority.DEFAULT, "Rename to '{0}'");
   static const RENAME_TO_CAMEL_CASE_MULTI = FixKind(
       'dart.fix.rename.toCamelCase.multi',
       DartFixKindPriority.IN_FILE,
       'Rename to camel case everywhere in file');
   static const REPLACE_BOOLEAN_WITH_BOOL = FixKind(
-      'dart.fix.replace.booleanWithBool', 50, "Replace 'boolean' with 'bool'");
+      'dart.fix.replace.booleanWithBool',
+      DartFixKindPriority.DEFAULT,
+      "Replace 'boolean' with 'bool'");
   static const REPLACE_BOOLEAN_WITH_BOOL_MULTI = FixKind(
       'dart.fix.replace.booleanWithBool.multi',
       DartFixKindPriority.IN_FILE,
       "Replace all 'boolean's with 'bool' in file");
-  static const REPLACE_CASCADE_WITH_DOT =
-      FixKind('dart.fix.replace.cascadeWithDot', 50, "Replace '..' with '.'");
+  static const REPLACE_CASCADE_WITH_DOT = FixKind(
+      'dart.fix.replace.cascadeWithDot',
+      DartFixKindPriority.DEFAULT,
+      "Replace '..' with '.'");
   static const REPLACE_CASCADE_WITH_DOT_MULTI = FixKind(
       'dart.fix.replace.cascadeWithDot.multi',
       DartFixKindPriority.IN_FILE,
       "Replace unnecessary '..'s with '.'s everywhere in file");
-  static const REPLACE_COLON_WITH_EQUALS =
-      FixKind('dart.fix.replace.colonWithEquals', 50, "Replace ':' with '='");
+  static const REPLACE_COLON_WITH_EQUALS = FixKind(
+      'dart.fix.replace.colonWithEquals',
+      DartFixKindPriority.DEFAULT,
+      "Replace ':' with '='");
   static const REPLACE_COLON_WITH_EQUALS_MULTI = FixKind(
       'dart.fix.replace.colonWithEquals.multi',
       DartFixKindPriority.IN_FILE,
       "Replace ':'s with '='s everywhere in file");
   static const REPLACE_WITH_FILLED = FixKind(
-      'dart.fix.replace.finalWithListFilled', 50, "Replace with 'List.filled'");
+      'dart.fix.replace.finalWithListFilled',
+      DartFixKindPriority.DEFAULT,
+      "Replace with 'List.filled'");
   static const REPLACE_FINAL_WITH_CONST = FixKind(
-      'dart.fix.replace.finalWithConst', 50, "Replace 'final' with 'const'");
+      'dart.fix.replace.finalWithConst',
+      DartFixKindPriority.DEFAULT,
+      "Replace 'final' with 'const'");
   static const REPLACE_FINAL_WITH_CONST_MULTI = FixKind(
       'dart.fix.replace.finalWithConst.multi',
       DartFixKindPriority.IN_FILE,
       "Replace 'final' with 'const' where possible in file");
-  static const REPLACE_NEW_WITH_CONST = FixKind(
-      'dart.fix.replace.newWithConst', 50, "Replace 'new' with 'const'");
+  static const REPLACE_NEW_WITH_CONST = FixKind('dart.fix.replace.newWithConst',
+      DartFixKindPriority.DEFAULT, "Replace 'new' with 'const'");
   static const REPLACE_NEW_WITH_CONST_MULTI = FixKind(
       'dart.fix.replace.newWithConst.multi',
       DartFixKindPriority.IN_FILE,
       "Replace 'new' with 'const' where possible in file");
   static const REPLACE_NULL_WITH_CLOSURE = FixKind(
-      'dart.fix.replace.nullWithClosure', 50, "Replace 'null' with a closure");
+      'dart.fix.replace.nullWithClosure',
+      DartFixKindPriority.DEFAULT,
+      "Replace 'null' with a closure");
   static const REPLACE_NULL_WITH_CLOSURE_MULTI = FixKind(
       'dart.fix.replace.nullWithClosure.multi',
       DartFixKindPriority.IN_FILE,
       "Replace 'null's with closures where possible in file");
   static const REPLACE_RETURN_TYPE_FUTURE = FixKind(
       'dart.fix.replace.returnTypeFuture',
-      50,
+      DartFixKindPriority.DEFAULT,
       "Return 'Future' from 'async' function");
   static const REPLACE_VAR_WITH_DYNAMIC = FixKind(
-      'dart.fix.replace.varWithDynamic', 50, "Replace 'var' with 'dynamic'");
-  static const REPLACE_WITH_EIGHT_DIGIT_HEX =
-      FixKind('dart.fix.replace.withEightDigitHex', 50, "Replace with '{0}'");
+      'dart.fix.replace.varWithDynamic',
+      DartFixKindPriority.DEFAULT,
+      "Replace 'var' with 'dynamic'");
+  static const REPLACE_WITH_EIGHT_DIGIT_HEX = FixKind(
+      'dart.fix.replace.withEightDigitHex',
+      DartFixKindPriority.DEFAULT,
+      "Replace with '{0}'");
   static const REPLACE_WITH_EIGHT_DIGIT_HEX_MULTI = FixKind(
       'dart.fix.replace.withEightDigitHex.multi',
       DartFixKindPriority.IN_FILE,
       'Replace with hex digits everywhere in file');
-  static const REPLACE_WITH_BRACKETS =
-      FixKind('dart.fix.replace.withBrackets', 50, 'Replace with { }');
+  static const REPLACE_WITH_BRACKETS = FixKind('dart.fix.replace.withBrackets',
+      DartFixKindPriority.DEFAULT, 'Replace with { }');
   static const REPLACE_WITH_BRACKETS_MULTI = FixKind(
       'dart.fix.replace.withBrackets.multi',
       DartFixKindPriority.IN_FILE,
       'Replace with { } everywhere in file');
   static const REPLACE_WITH_CONDITIONAL_ASSIGNMENT = FixKind(
-      'dart.fix.replace.withConditionalAssignment', 50, 'Replace with ??=');
+      'dart.fix.replace.withConditionalAssignment',
+      DartFixKindPriority.DEFAULT,
+      'Replace with ??=');
   static const REPLACE_WITH_CONDITIONAL_ASSIGNMENT_MULTI = FixKind(
       'dart.fix.replace.withConditionalAssignment.multi',
       DartFixKindPriority.IN_FILE,
       'Replace with ??= everywhere in file');
-  static const REPLACE_WITH_EXTENSION_NAME =
-      FixKind('dart.fix.replace.withExtensionName', 50, "Replace with '{0}'");
-  static const REPLACE_WITH_IDENTIFIER =
-      FixKind('dart.fix.replace.withIdentifier', 50, 'Replace with identifier');
+  static const REPLACE_WITH_EXTENSION_NAME = FixKind(
+      'dart.fix.replace.withExtensionName',
+      DartFixKindPriority.DEFAULT,
+      "Replace with '{0}'");
+  static const REPLACE_WITH_IDENTIFIER = FixKind(
+      'dart.fix.replace.withIdentifier',
+      DartFixKindPriority.DEFAULT,
+      'Replace with identifier');
   // todo (pq): parameterize message (used by LintNames.avoid_types_on_closure_parameters)
   static const REPLACE_WITH_IDENTIFIER_MULTI = FixKind(
       'dart.fix.replace.withIdentifier.multi',
       DartFixKindPriority.IN_FILE,
       'Replace with identifier everywhere in file');
   static const REPLACE_WITH_INTERPOLATION = FixKind(
-      'dart.fix.replace.withInterpolation', 50, 'Replace with interpolation');
+      'dart.fix.replace.withInterpolation',
+      DartFixKindPriority.DEFAULT,
+      'Replace with interpolation');
   static const REPLACE_WITH_INTERPOLATION_MULTI = FixKind(
       'dart.fix.replace.withInterpolation.multi',
       DartFixKindPriority.IN_FILE,
       'Replace with interpolations everywhere in file');
-  static const REPLACE_WITH_IS_EMPTY =
-      FixKind('dart.fix.replace.withIsEmpty', 50, "Replace with 'isEmpty'");
+  static const REPLACE_WITH_IS_EMPTY = FixKind('dart.fix.replace.withIsEmpty',
+      DartFixKindPriority.DEFAULT, "Replace with 'isEmpty'");
   static const REPLACE_WITH_IS_EMPTY_MULTI = FixKind(
       'dart.fix.replace.withIsEmpty.multi',
       DartFixKindPriority.IN_FILE,
       "Replace with 'isEmpty' everywhere in file");
   static const REPLACE_WITH_IS_NOT_EMPTY = FixKind(
-      'dart.fix.replace.withIsNotEmpty', 50, "Replace with 'isNotEmpty'");
+      'dart.fix.replace.withIsNotEmpty',
+      DartFixKindPriority.DEFAULT,
+      "Replace with 'isNotEmpty'");
   static const REPLACE_WITH_IS_NOT_EMPTY_MULTI = FixKind(
       'dart.fix.replace.withIsNotEmpty.multi',
       DartFixKindPriority.IN_FILE,
       "Replace with 'isNotEmpty' everywhere in file");
-  static const REPLACE_WITH_NOT_NULL_AWARE =
-      FixKind('dart.fix.replace.withNotNullAware', 50, "Replace with '{0}'");
+  static const REPLACE_WITH_NOT_NULL_AWARE = FixKind(
+      'dart.fix.replace.withNotNullAware',
+      DartFixKindPriority.DEFAULT,
+      "Replace with '{0}'");
   static const REPLACE_WITH_NULL_AWARE = FixKind(
       'dart.fix.replace.withNullAware',
-      50,
+      DartFixKindPriority.DEFAULT,
       "Replace the '.' with a '?.' in the invocation");
   static const REPLACE_WITH_TEAR_OFF = FixKind('dart.fix.replace.withTearOff',
-      50, 'Replace function literal with tear-off');
+      DartFixKindPriority.DEFAULT, 'Replace function literal with tear-off');
   static const REPLACE_WITH_TEAR_OFF_MULTI = FixKind(
       'dart.fix.replace.withTearOff.multi',
       DartFixKindPriority.IN_FILE,
       'Replace function literals with tear-offs everywhere in file');
-  static const REPLACE_WITH_VAR = FixKind(
-      'dart.fix.replace.withVar', 50, "Replace type annotation with 'var'");
+  static const REPLACE_WITH_VAR = FixKind('dart.fix.replace.withVar',
+      DartFixKindPriority.DEFAULT, "Replace type annotation with 'var'");
   static const REPLACE_WITH_VAR_MULTI = FixKind(
       'dart.fix.replace.withVar.multi',
       DartFixKindPriority.IN_FILE,
       "Replace unnecessary type annotations with 'var' in file");
   static const SORT_CHILD_PROPERTY_LAST = FixKind(
       'dart.fix.sort.childPropertyLast',
-      50,
+      DartFixKindPriority.DEFAULT,
       'Move child property to end of arguments');
   static const SORT_CHILD_PROPERTY_LAST_MULTI = FixKind(
       'dart.fix.sort.childPropertyLast.multi',
       DartFixKindPriority.IN_FILE,
       'Move child properties to ends of arguments everywhere in file');
-  static const UPDATE_SDK_CONSTRAINTS = FixKind(
-      'dart.fix.updateSdkConstraints', 50, 'Update the SDK constraints');
-  static const USE_CONST =
-      FixKind('dart.fix.use.const', 50, 'Change to constant');
+  static const UPDATE_SDK_CONSTRAINTS = FixKind('dart.fix.updateSdkConstraints',
+      DartFixKindPriority.DEFAULT, 'Update the SDK constraints');
+  static const USE_CONST = FixKind(
+      'dart.fix.use.const', DartFixKindPriority.DEFAULT, 'Change to constant');
   static const USE_EFFECTIVE_INTEGER_DIVISION = FixKind(
       'dart.fix.use.effectiveIntegerDivision',
-      50,
+      DartFixKindPriority.DEFAULT,
       'Use effective integer division ~/');
-  static const USE_EQ_EQ_NULL =
-      FixKind('dart.fix.use.eqEqNull', 50, "Use == null instead of 'is Null'");
+  static const USE_EQ_EQ_NULL = FixKind('dart.fix.use.eqEqNull',
+      DartFixKindPriority.DEFAULT, "Use == null instead of 'is Null'");
   static const USE_EQ_EQ_NULL_MULTI = FixKind(
       'dart.fix.use.eqEqNull.multi',
       DartFixKindPriority.IN_FILE,
       "Use == null instead of 'is Null' everywhere in file");
-  static const USE_IS_NOT_EMPTY = FixKind('dart.fix.use.isNotEmpty', 50,
-      "Use x.isNotEmpty instead of '!x.isEmpty'");
+  static const USE_IS_NOT_EMPTY = FixKind('dart.fix.use.isNotEmpty',
+      DartFixKindPriority.DEFAULT, "Use x.isNotEmpty instead of '!x.isEmpty'");
   static const USE_IS_NOT_EMPTY_MULTI = FixKind(
       'dart.fix.use.isNotEmpty.multi',
       DartFixKindPriority.IN_FILE,
       "Use x.isNotEmpty instead of '!x.isEmpty' everywhere in file");
-  static const USE_NOT_EQ_NULL = FixKind(
-      'dart.fix.use.notEqNull', 50, "Use != null instead of 'is! Null'");
+  static const USE_NOT_EQ_NULL = FixKind('dart.fix.use.notEqNull',
+      DartFixKindPriority.DEFAULT, "Use != null instead of 'is! Null'");
   static const USE_NOT_EQ_NULL_MULTI = FixKind(
       'dart.fix.use.notEqNull.multi',
       DartFixKindPriority.IN_FILE,
       "Use != null instead of 'is! Null' everywhere in file");
-  static const USE_RETHROW =
-      FixKind('dart.fix.use.rethrow', 50, 'Replace throw with rethrow');
+  static const USE_RETHROW = FixKind('dart.fix.use.rethrow',
+      DartFixKindPriority.DEFAULT, 'Replace throw with rethrow');
   static const USE_RETHROW_MULTI = FixKind(
       'dart.fix.use.rethrow.multi',
       DartFixKindPriority.IN_FILE,
       'Replace throw with rethrow where possible in file');
-  static const WRAP_IN_FUTURE =
-      FixKind('dart.fix.wrap.future', 50, "Wrap in 'Future.value'");
-  static const WRAP_IN_TEXT =
-      FixKind('dart.fix.flutter.wrap.text', 50, "Wrap in a 'Text' widget");
+  static const WRAP_IN_FUTURE = FixKind('dart.fix.wrap.future',
+      DartFixKindPriority.DEFAULT, "Wrap in 'Future.value'");
+  static const WRAP_IN_TEXT = FixKind('dart.fix.flutter.wrap.text',
+      DartFixKindPriority.DEFAULT, "Wrap in a 'Text' widget");
 }
 
 class DartFixKindPriority {
-  // todo (pq): update all priorities to use these constants.
   static const int DEFAULT = 50;
   static const int IN_FILE = 40;
 }
diff --git a/pkg/analysis_server/test/services/refactoring/rename_local_test.dart b/pkg/analysis_server/test/services/refactoring/rename_local_test.dart
index 0e6b663..533456b 100644
--- a/pkg/analysis_server/test/services/refactoring/rename_local_test.dart
+++ b/pkg/analysis_server/test/services/refactoring/rename_local_test.dart
@@ -641,4 +641,30 @@
     // old name
     expect(refactoring.oldName, 'test');
   }
+
+  Future<void> test_reuseNameOfCalledConstructor() async {
+    // https://github.com/dart-lang/sdk/issues/45105
+    await indexTestUnit('''
+class Foo {
+  Foo.now();
+}
+
+test() {
+  final foo = Foo.now();
+}
+''');
+    // configure refactoring
+    createRenameRefactoringAtString('foo =');
+    refactoring.newName = 'now';
+    // validate change
+    return assertSuccessfulRefactoring('''
+class Foo {
+  Foo.now();
+}
+
+test() {
+  final now = Foo.now();
+}
+''');
+  }
 }
diff --git a/pkg/analyzer/analysis_options.yaml b/pkg/analyzer/analysis_options.yaml
index 3f9b8e3..ed9332f 100644
--- a/pkg/analyzer/analysis_options.yaml
+++ b/pkg/analyzer/analysis_options.yaml
@@ -26,6 +26,7 @@
 
 linter:
   rules:
+    - always_use_package_imports
     - avoid_unused_constructor_parameters
     - await_only_futures
     - empty_statements
diff --git a/pkg/analyzer/lib/src/dart/analysis/byte_store.dart b/pkg/analyzer/lib/src/dart/analysis/byte_store.dart
index 85ac05d..740ddc2 100644
--- a/pkg/analyzer/lib/src/dart/analysis/byte_store.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/byte_store.dart
@@ -2,7 +2,7 @@
 // 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 'cache.dart';
+import 'package:analyzer/src/dart/analysis/cache.dart';
 
 /// Store of bytes associated with string keys.
 ///
diff --git a/pkg/analyzer/lib/src/dart/analysis/file_byte_store.dart b/pkg/analyzer/lib/src/dart/analysis/file_byte_store.dart
index f40d219..ef80de5 100644
--- a/pkg/analyzer/lib/src/dart/analysis/file_byte_store.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/file_byte_store.dart
@@ -6,11 +6,10 @@
 import 'dart:isolate';
 import 'dart:typed_data';
 
+import 'package:analyzer/src/dart/analysis/byte_store.dart';
+import 'package:analyzer/src/dart/analysis/fletcher16.dart';
 import 'package:path/path.dart';
 
-import 'byte_store.dart';
-import 'fletcher16.dart';
-
 /// The request that is sent from the main isolate to the clean-up isolate.
 class CacheCleanUpRequest {
   final String cachePath;
diff --git a/pkg/analyzer/lib/src/dart/ast/ast.dart b/pkg/analyzer/lib/src/dart/ast/ast.dart
index df1ca02..03053ed 100644
--- a/pkg/analyzer/lib/src/dart/ast/ast.dart
+++ b/pkg/analyzer/lib/src/dart/ast/ast.dart
@@ -8825,6 +8825,8 @@
       return identical(parent.identifier, this);
     } else if (parent is PropertyAccess) {
       return identical(parent.propertyName, this);
+    } else if (parent is ConstructorName) {
+      return identical(parent.name, this);
     } else if (parent is MethodInvocation) {
       MethodInvocation invocation = parent;
       return identical(invocation.methodName, this) &&
diff --git a/pkg/analyzer/lib/src/error/codes.dart b/pkg/analyzer/lib/src/error/codes.dart
index 3044797..92d84fd 100644
--- a/pkg/analyzer/lib/src/error/codes.dart
+++ b/pkg/analyzer/lib/src/error/codes.dart
@@ -3,8 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/error/error.dart';
-
-import 'analyzer_error_code.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';
diff --git a/pkg/analyzer/lib/src/manifest/manifest_validator.dart b/pkg/analyzer/lib/src/manifest/manifest_validator.dart
index 3b9650a..549a367 100644
--- a/pkg/analyzer/lib/src/manifest/manifest_validator.dart
+++ b/pkg/analyzer/lib/src/manifest/manifest_validator.dart
@@ -5,14 +5,13 @@
 import 'package:analyzer/error/error.dart';
 import 'package:analyzer/error/listener.dart';
 import 'package:analyzer/src/generated/source.dart';
+import 'package:analyzer/src/manifest/charcodes.dart';
+import 'package:analyzer/src/manifest/manifest_values.dart';
+import 'package:analyzer/src/manifest/manifest_warning_code.dart';
 import 'package:collection/collection.dart';
 import 'package:meta/meta.dart';
 import 'package:source_span/source_span.dart';
 
-import 'charcodes.dart';
-import 'manifest_values.dart';
-import 'manifest_warning_code.dart';
-
 /// A rudimentary parser for Android Manifest files.
 ///
 /// Android Manifest files are written in XML. In order to validate an Android
diff --git a/pkg/analyzer/lib/src/summary/format.dart b/pkg/analyzer/lib/src/summary/format.dart
index 834a4e1..c98c9d6 100644
--- a/pkg/analyzer/lib/src/summary/format.dart
+++ b/pkg/analyzer/lib/src/summary/format.dart
@@ -16,8 +16,7 @@
 
 import 'package:analyzer/src/summary/api_signature.dart' as api_sig;
 import 'package:analyzer/src/summary/flat_buffers.dart' as fb;
-
-import 'idl.dart' as idl;
+import 'package:analyzer/src/summary/idl.dart' as idl;
 
 class _AvailableDeclarationKindReader
     extends fb.Reader<idl.AvailableDeclarationKind> {
diff --git a/pkg/analyzer/lib/src/summary/idl.dart b/pkg/analyzer/lib/src/summary/idl.dart
index 25bd28f..d66803a 100644
--- a/pkg/analyzer/lib/src/summary/idl.dart
+++ b/pkg/analyzer/lib/src/summary/idl.dart
@@ -39,9 +39,9 @@
 ///
 /// Except as otherwise noted, synthetic elements are not stored in the summary;
 /// they are re-synthesized at the time the summary is read.
-import 'base.dart' as base;
-import 'base.dart' show Id, TopLevel;
-import 'format.dart' as generated;
+import 'package:analyzer/src/summary/base.dart' as base;
+import 'package:analyzer/src/summary/base.dart' show Id, TopLevel;
+import 'package:analyzer/src/summary/format.dart' as generated;
 
 /// Annotation describing information which is not part of Dart semantics; in
 /// other words, if this information (or any information it refers to) changes,
diff --git a/pkg/analyzer/test/dart/ast/ast_test.dart b/pkg/analyzer/test/dart/ast/ast_test.dart
index d5a0cf9..0c854a3 100644
--- a/pkg/analyzer/test/dart/ast/ast_test.dart
+++ b/pkg/analyzer/test/dart/ast/ast_test.dart
@@ -1173,6 +1173,13 @@
     expect(identifier.inSetterContext(), isTrue);
   }
 
+  void test_isQualified_inConstructorName() {
+    ConstructorName constructor = AstTestFactory.constructorName(
+        AstTestFactory.typeName4('MyClass'), "test");
+    SimpleIdentifier name = constructor.name!;
+    expect(name.isQualified, isTrue);
+  }
+
   void test_isQualified_inMethodInvocation_noTarget() {
     MethodInvocation invocation = AstTestFactory.methodInvocation2(
         "test", [AstTestFactory.identifier3("arg0")]);
diff --git a/pkg/analyzer/tool/summary/generate.dart b/pkg/analyzer/tool/summary/generate.dart
index 5e37425..b7d456d 100644
--- a/pkg/analyzer/tool/summary/generate.dart
+++ b/pkg/analyzer/tool/summary/generate.dart
@@ -660,8 +660,7 @@
     out();
     out("import 'package:analyzer/src/summary/api_signature.dart' as api_sig;");
     out("import 'package:analyzer/src/summary/flat_buffers.dart' as fb;");
-    out();
-    out("import 'idl.dart' as idl;");
+    out("import 'package:analyzer/src/summary/idl.dart' as idl;");
     out();
     for (idl_model.EnumDeclaration enum_ in _idl.enums.values) {
       _EnumReaderGenerator(_idl, _outBuffer, enum_).generate();
diff --git a/tests/co19/co19-co19.status b/tests/co19/co19-co19.status
index 32c17f0..0f04e9d 100644
--- a/tests/co19/co19-co19.status
+++ b/tests/co19/co19-co19.status
@@ -2,56 +2,30 @@
 # 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.
 
-Language/Classes/Constructors/Factories/redirecting_constructor_call_t03: Skip # Type aliases are not fully implemented
-Language/Classes/Constructors/Factories/redirecting_constructor_t04: Skip # Type aliases are not fully implemented
-Language/Classes/Superclasses/Inheritance_and_Overriding/inheritance_t07: Skip # Type aliases are not fully implemented
 Language/Expressions/Assignment/Compound_Assignment/null_aware_compound_assignment_static_t12: Skip # Triple shift is not implemented yet
 Language/Expressions/Assignment/Compound_Assignment/null_aware_compound_assignment_t12: Skip # Triple shift is not implemented yet
 Language/Expressions/Assignment/Compound_Assignment/variable_assignment_t12: Skip # Triple shift is not implemented yet
 Language/Expressions/Bitwise_Expressions/syntax_t01: Skip # Triple shift is not implemented yet
 Language/Expressions/Constants/bitwise_operators_t01: Skip # Triple shift is not implemented yet
 Language/Expressions/Equality/syntax_t01: Skip # Triple shift is not implemented yet
-Language/Expressions/Instance_Creation/New/type_t09: Skip # Type aliases are not fully implemented
 Language/Expressions/Lists/syntax_t01: Skip # Triple shift is not implemented yet
 Language/Expressions/Maps/syntax_t01: Skip # Triple shift is not implemented yet
-Language/Generics/Superbounded_types/typedef2_A01_t02: Skip # Non function type aliases are not implemented yet
-Language/Generics/Superbounded_types/typedef2_A01_t03: Skip # Non function type aliases are not implemented yet
-Language/Generics/Superbounded_types/typedef2_A01_t04: Skip # Non function type aliases are not implemented yet
-Language/Generics/parameter_A01_t03: Skip # Type aliases are not fully implemented
-Language/Generics/syntax_t31: Skip # Type aliases are not fully implemented
-Language/Generics/typedef_A01_t10: Skip # Type aliases are not fully implemented
 Language/Reference/Operator_Precedence/precedence_01_assignment_t14: Skip # Triple shift is not implemented yet
 Language/Reference/Operator_Precedence/precedence_12_Shift_t04: Skip # Triple shift is not implemented yet
 Language/Reference/Operator_Precedence/precedence_t05: Skip # Triple shift is not implemented yet
-Language/Statements/Expression_Statements/syntax_t06: Skip # Type aliases are not fully implemented
+Language/Statements/Expression_Statements/syntax_t06: Skip # Triple shift is not implemented for integers yet
 Language/Types/Type_Aliases/built-in_types_t11: Skip # Triple shift is not implemented yet
 LanguageFeatures/Extension-methods/explicit_extension_member_invocation_A15_t09: Skip # Triple shift is not implemented yet
-LanguageFeatures/Instantiate-to-bound/nonfunction_typedef/static/*: Skip # Type aliases are not fully implemented
-LanguageFeatures/Simple-bounds/dynamic/type-aliases/*: Skip # Type aliases are not fully implemented
-LanguageFeatures/Simple-bounds/static/type-aliases/*: Skip # Type aliases are not fully implemented
 LanguageFeatures/Triple-Shift/*: Skip # Triple shift is not implemented yet
 LanguageFeatures/nnbd/local_variable_read_A01_t03: Skip # Triple shift is not implemented yet
 LanguageFeatures/nnbd/local_variable_read_A02_t03: Skip # Triple shift is not implemented yet
 LanguageFeatures/nnbd/local_variable_read_A03_t03: Skip # Triple shift is not implemented yet
-LanguageFeatures/regression/34560_t02/01: Skip # Type aliases are not fully implemented
 LibTest/io/RawDatagramSocket/*: Skip # https://github.com/dart-lang/co19/issues/195
 
 [ $compiler == dart2analyzer ]
 Language/Classes/Instance_Methods/Operators/allowed_names_t01: Skip # Triple shift is not fully implemented
 Language/Classes/Instance_Methods/Operators/arity_1_t19: Skip # Triple shift is not fully implemented (https://github.com/dart-lang/sdk/issues/42353)
 Language/Functions/syntax_t03: Skip # Triple shift is not implemented yet
-LanguageFeatures/Subtyping/static/tests/left_bottom_A01_t02: Skip # Type aliases are not supported by analyzer
-LanguageFeatures/Subtyping/static/tests/left_bottom_A01_t04: Skip # Type aliases are not supported by analyzer
-LanguageFeatures/Subtyping/static/tests/left_bottom_A01_t06: Skip # Type aliases are not supported by analyzer
-LanguageFeatures/nnbd/Least-greatest-closure/nonfunction_typedef/nonfunction_dynamic_t01: Skip # Type aliases are not fully supported by analyzer yet
-LanguageFeatures/nnbd/Least-greatest-closure/nonfunction_typedef/nonfunction_dynamic_t02: Skip # Type aliases are not fully supported by analyzer yet
-LanguageFeatures/nnbd/Least-greatest-closure/nonfunction_typedef/nonfunction_dynamic_t03: Skip # Type aliases are not fully supported by analyzer yet
-LanguageFeatures/nnbd/Least-greatest-closure/nonfunction_typedef/nonfunction_static_t01: Skip # Type aliases are not fully supported by analyzer yet
-LanguageFeatures/nnbd/Least-greatest-closure/nonfunction_typedef/nonfunction_static_t02: Skip # Type aliases are not fully supported by analyzer yet
-LanguageFeatures/nnbd/Least-greatest-closure/nonfunction_typedef/nonfunction_static_t03: Skip # Type aliases are not fully supported by analyzer yet
-
-[ $compiler == fasta ]
-Language/Classes/Superclasses/Inheritance_and_Overriding/inheritance_t10: Skip # Type aliases are not fully implemented
 
 [ $compiler != fasta ]
 Language/Classes/Abstract_Instance_Members/inherited_t13: Skip # github.com/dart-lang/language/issues/115
diff --git a/tests/co19/co19-runtime.status b/tests/co19/co19-runtime.status
index 8eb32b2..7922202 100644
--- a/tests/co19/co19-runtime.status
+++ b/tests/co19/co19-runtime.status
@@ -39,6 +39,7 @@
 LibTest/collection/ListMixin/ListMixin_class_A01_t04: SkipSlow # Very slow on sim* architectures.
 LibTest/collection/ListMixin/ListMixin_class_A01_t05: SkipSlow # Very slow on sim* architectures.
 LibTest/collection/ListMixin/ListMixin_class_A01_t06: SkipSlow # Very slow on sim* architectures.
+LibTest/ffi/*: SkipByDesign # dart:ffi is not supported on sim architectures
 
 [ $compiler == fasta || $runtime == dart_precompiled || $runtime == vm ]
 LibTest/html/*: SkipByDesign # dart:html not supported on VM.
diff --git a/tools/VERSION b/tools/VERSION
index 2f4288c..afab02a 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 13
 PATCH 0
-PRERELEASE 79
+PRERELEASE 80
 PRERELEASE_PATCH 0
\ No newline at end of file
