diff --git a/.dart_tool/package_config.json b/.dart_tool/package_config.json
index 8400a1c..cba63c1 100644
--- a/.dart_tool/package_config.json
+++ b/.dart_tool/package_config.json
@@ -11,7 +11,7 @@
     "constraint, update this by running tools/generate_package_config.dart."
   ],
   "configVersion": 2,
-  "generated": "2021-02-23T11:38:53.873726",
+  "generated": "2021-02-24T07:33:35.310314",
   "generator": "tools/generate_package_config.dart",
   "packages": [
     {
@@ -569,7 +569,7 @@
       "name": "shelf_packages_handler",
       "rootUri": "../third_party/pkg/shelf_packages_handler",
       "packageUri": "lib/",
-      "languageVersion": "2.0"
+      "languageVersion": "2.12"
     },
     {
       "name": "shelf_proxy",
@@ -581,13 +581,13 @@
       "name": "shelf_static",
       "rootUri": "../third_party/pkg/shelf_static",
       "packageUri": "lib/",
-      "languageVersion": "2.3"
+      "languageVersion": "2.12"
     },
     {
       "name": "shelf_web_socket",
       "rootUri": "../third_party/pkg/shelf_web_socket",
       "packageUri": "lib/",
-      "languageVersion": "2.1"
+      "languageVersion": "2.12"
     },
     {
       "name": "smith",
diff --git a/DEPS b/DEPS
index 6c57713..436dc5d 100644
--- a/DEPS
+++ b/DEPS
@@ -140,11 +140,11 @@
   "resource_rev": "6b79867d0becf5395e5819a75720963b8298e9a7",
   "root_certificates_rev": "7e5ec82c99677a2e5b95ce296c4d68b0d3378ed8",
   "rust_revision": "b7856f695d65a8ebc846754f97d15814bcb1c244",
-  "shelf_static_rev": "779a6e99b320ce9ed4ff6b88bd0cdc40ea5c62c4",
-  "shelf_packages_handler_tag": "2.0.0",
+  "shelf_static_rev": "bafde9eaddb5d02040a614e41deddd971b4d67e6",
+  "shelf_packages_handler_rev": "78302e67c035047e6348e692b0c1182131f0fe35",
   "shelf_proxy_tag": "0.1.0+7",
   "shelf_rev": "fa5afaa38bd51dedeeaa25b7bfd8822cabbcc57f",
-  "shelf_web_socket_rev": "dedd6040d45159bd0661eb5252c7e936d6b7514a",
+  "shelf_web_socket_rev": "091d2ed2105827b7f376668fafc88b2b8c845d71",
   "source_map_stack_trace_rev": "1c3026f69d9771acf2f8c176a1ab750463309cce",
   "source_maps-0.9.4_rev": "38524",
   "source_maps_rev": "53eb92ccfe6e64924054f83038a534b959b12b3e",
@@ -407,7 +407,7 @@
       Var("dart_git") + "shelf.git" + "@" + Var("shelf_rev"),
   Var("dart_root") + "/third_party/pkg/shelf_packages_handler":
       Var("dart_git") + "shelf_packages_handler.git"
-      + "@" + Var("shelf_packages_handler_tag"),
+      + "@" + Var("shelf_packages_handler_rev"),
   Var("dart_root") + "/third_party/pkg/shelf_proxy":
       Var("dart_git") + "shelf_proxy.git" + "@" + Var("shelf_proxy_tag"),
   Var("dart_root") + "/third_party/pkg/shelf_static":
diff --git a/pkg/analyzer/lib/src/generated/testing/element_factory.dart b/pkg/analyzer/lib/src/generated/testing/element_factory.dart
index 30a9ab0..560e904 100644
--- a/pkg/analyzer/lib/src/generated/testing/element_factory.dart
+++ b/pkg/analyzer/lib/src/generated/testing/element_factory.dart
@@ -2,22 +2,17 @@
 // 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 'dart:collection';
-
 import 'package:analyzer/dart/analysis/features.dart';
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/dart/ast/token.dart';
 import 'package:analyzer/dart/element/element.dart';
 import 'package:analyzer/dart/element/nullability_suffix.dart';
 import 'package:analyzer/dart/element/type.dart';
-import 'package:analyzer/dart/element/type_provider.dart';
 import 'package:analyzer/src/dart/analysis/experiments.dart';
 import 'package:analyzer/src/dart/analysis/session.dart';
 import 'package:analyzer/src/dart/element/element.dart';
 import 'package:analyzer/src/dart/element/type.dart';
-import 'package:analyzer/src/dart/element/type_system.dart';
 import 'package:analyzer/src/dart/resolver/variance.dart';
-import 'package:analyzer/src/generated/constant.dart';
 import 'package:analyzer/src/generated/engine.dart';
 import 'package:analyzer/src/generated/source.dart';
 import 'package:analyzer/src/generated/testing/ast_test_factory.dart';
@@ -137,76 +132,6 @@
           [List<DartType> argumentTypes = const []]) =>
       constructorElement(definingClass, name, false, argumentTypes);
 
-  @deprecated
-  static EnumElementImpl enumElement(TypeProvider typeProvider, String enumName,
-      [List<String> constantNames = const []]) {
-    var typeSystem = TypeSystemImpl(
-      implicitCasts: false,
-      isNonNullableByDefault: false,
-      strictInference: false,
-      typeProvider: typeProvider,
-    );
-    //
-    // Build the enum.
-    //
-    EnumElementImpl enumElement = EnumElementImpl(enumName, -1);
-    var enumType = enumElement.instantiate(
-      typeArguments: const [],
-      nullabilitySuffix: NullabilitySuffix.star,
-    ) as InterfaceTypeImpl;
-    //
-    // Populate the fields.
-    //
-    List<FieldElement> fields = <FieldElement>[];
-    InterfaceType intType = typeProvider.intType;
-    InterfaceType stringType = typeProvider.stringType;
-    String indexFieldName = "index";
-    FieldElementImpl indexField = FieldElementImpl(indexFieldName, -1);
-    indexField.isFinal = true;
-    indexField.type = intType;
-    fields.add(indexField);
-    String nameFieldName = "_name";
-    FieldElementImpl nameField = FieldElementImpl(nameFieldName, -1);
-    nameField.isFinal = true;
-    nameField.type = stringType;
-    fields.add(nameField);
-    FieldElementImpl valuesField = FieldElementImpl("values", -1);
-    valuesField.isStatic = true;
-    valuesField.isConst = true;
-    valuesField.type = typeProvider.listType2(enumType);
-    fields.add(valuesField);
-    //
-    // Build the enum constants.
-    //
-    {
-      int constantCount = constantNames.length;
-      for (int i = 0; i < constantCount; i++) {
-        String constantName = constantNames[i];
-        FieldElementImpl constantElement =
-            ConstFieldElementImpl(constantName, -1);
-        constantElement.isStatic = true;
-        constantElement.isConst = true;
-        constantElement.type = enumType;
-        Map<String, DartObjectImpl> fieldMap =
-            HashMap<String, DartObjectImpl>();
-        fieldMap[indexFieldName] =
-            DartObjectImpl(typeSystem, intType, IntState(i));
-        fieldMap[nameFieldName] =
-            DartObjectImpl(typeSystem, stringType, StringState(constantName));
-        DartObjectImpl value =
-            DartObjectImpl(typeSystem, enumType, GenericState(fieldMap));
-        constantElement.evaluationResult = EvaluationResultImpl(value);
-        fields.add(constantElement);
-      }
-    }
-    //
-    // Finish building the enum.
-    //
-    enumElement.fields = fields;
-    // Client code isn't allowed to invoke the constructor, so we do not model it.
-    return enumElement;
-  }
-
   static ExportElementImpl exportFor(LibraryElement exportedLibrary,
       [List<NamespaceCombinator> combinators = const <NamespaceCombinator>[]]) {
     ExportElementImpl spec = ExportElementImpl(-1);
diff --git a/pkg/analyzer/test/generated/invalid_code_test.dart b/pkg/analyzer/test/generated/invalid_code_test.dart
index a82cd94..acff967 100644
--- a/pkg/analyzer/test/generated/invalid_code_test.dart
+++ b/pkg/analyzer/test/generated/invalid_code_test.dart
@@ -404,8 +404,7 @@
 }
 
 @reflectiveTest
-class InvalidCodeWithNullSafetyTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class InvalidCodeWithNullSafetyTest extends PubPackageResolutionTest {
   test_functionExpression_emptyBody() async {
     await _assertCanBeAnalyzed(r'''
 var v = <T>();
diff --git a/pkg/analyzer/test/src/dart/resolution/await_expression_test.dart b/pkg/analyzer/test/src/dart/resolution/await_expression_test.dart
index e29f77d..cd5dd24 100644
--- a/pkg/analyzer/test/src/dart/resolution/await_expression_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/await_expression_test.dart
@@ -41,7 +41,7 @@
 
 @reflectiveTest
 class AwaitExpressionResolutionWithNullSafetyTest
-    extends PubPackageResolutionTest with WithNullSafetyMixin {
+    extends PubPackageResolutionTest {
   test_futureOrQ() async {
     await assertNoErrorsInCode(r'''
 import 'dart:async';
diff --git a/pkg/analyzer/test/src/dart/resolution/constant_test.dart b/pkg/analyzer/test/src/dart/resolution/constant_test.dart
index 994999d..7d71d57 100644
--- a/pkg/analyzer/test/src/dart/resolution/constant_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/constant_test.dart
@@ -253,8 +253,7 @@
 }
 
 @reflectiveTest
-class ConstantResolutionWithNullSafetyTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class ConstantResolutionWithNullSafetyTest extends PubPackageResolutionTest {
   test_constructor_nullSafe_fromLegacy_super() async {
     newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
diff --git a/pkg/analyzer/test/src/dart/resolution/extension_method_test.dart b/pkg/analyzer/test/src/dart/resolution/extension_method_test.dart
index 8e94415..1f7f618 100644
--- a/pkg/analyzer/test/src/dart/resolution/extension_method_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/extension_method_test.dart
@@ -318,7 +318,7 @@
 /// resolved correctly.
 @reflectiveTest
 class ExtensionMethodsDeclarationWithNullSafetyTest
-    extends PubPackageResolutionTest with WithNullSafetyMixin {
+    extends PubPackageResolutionTest {
   test_this_type_interface() async {
     await assertNoErrorsInCode('''
 extension E on int {
diff --git a/pkg/analyzer/test/src/dart/resolution/function_expression_invocation_test.dart b/pkg/analyzer/test/src/dart/resolution/function_expression_invocation_test.dart
index 21df44e..0ab7d85 100644
--- a/pkg/analyzer/test/src/dart/resolution/function_expression_invocation_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/function_expression_invocation_test.dart
@@ -52,7 +52,7 @@
 
 @reflectiveTest
 class FunctionExpressionInvocationWithNullSafetyTest
-    extends PubPackageResolutionTest with WithNullSafetyMixin {
+    extends PubPackageResolutionTest {
   test_call_infer_fromArguments() async {
     await assertNoErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/dart/resolution/metadata_test.dart b/pkg/analyzer/test/src/dart/resolution/metadata_test.dart
index 32b7598..796316c 100644
--- a/pkg/analyzer/test/src/dart/resolution/metadata_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/metadata_test.dart
@@ -295,8 +295,7 @@
 }
 
 @reflectiveTest
-class MetadataResolutionWithNullSafetyTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class MetadataResolutionWithNullSafetyTest extends PubPackageResolutionTest {
   ImportFindElement get import_a {
     return findElement.importFind('package:test/a.dart');
   }
diff --git a/pkg/analyzer/test/src/dart/resolution/method_declaration_test.dart b/pkg/analyzer/test/src/dart/resolution/method_declaration_test.dart
index d7f3f98..9f18387 100644
--- a/pkg/analyzer/test/src/dart/resolution/method_declaration_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/method_declaration_test.dart
@@ -13,8 +13,7 @@
 }
 
 @reflectiveTest
-class MethodDeclarationResolutionTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class MethodDeclarationResolutionTest extends PubPackageResolutionTest {
   test_formalParameterScope_defaultValue() async {
     await assertNoErrorsInCode('''
 class A {
diff --git a/pkg/analyzer/test/src/dart/resolution/non_nullable_test.dart b/pkg/analyzer/test/src/dart/resolution/non_nullable_test.dart
index b6473d4..dde5670 100644
--- a/pkg/analyzer/test/src/dart/resolution/non_nullable_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/non_nullable_test.dart
@@ -18,8 +18,7 @@
 }
 
 @reflectiveTest
-class NonNullableTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class NonNullableTest extends PubPackageResolutionTest {
   test_class_hierarchy() async {
     await assertNoErrorsInCode('''
 class A {}
diff --git a/pkg/analyzer/test/src/dart/resolution/type_inference/collection_elements_test.dart b/pkg/analyzer/test/src/dart/resolution/type_inference/collection_elements_test.dart
index e3dc7da..45cef2a 100644
--- a/pkg/analyzer/test/src/dart/resolution/type_inference/collection_elements_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/type_inference/collection_elements_test.dart
@@ -15,8 +15,7 @@
 }
 
 @reflectiveTest
-class ForElementWithNullSafetyTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class ForElementWithNullSafetyTest extends PubPackageResolutionTest {
   test_list_awaitForIn_dynamic_downward() async {
     await resolveTestCode('''
 void f() async {
@@ -193,8 +192,7 @@
 }
 
 @reflectiveTest
-class IfElementWithNullSafetyTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class IfElementWithNullSafetyTest extends PubPackageResolutionTest {
   test_list_downward() async {
     await resolveTestCode('''
 void f() {
@@ -230,8 +228,7 @@
 }
 
 @reflectiveTest
-class SpreadElementWithNullSafetyTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class SpreadElementWithNullSafetyTest extends PubPackageResolutionTest {
   test_list_downward() async {
     await resolveTestCode('''
 void f() {
diff --git a/pkg/analyzer/test/src/dart/resolution/type_inference/statements_test.dart b/pkg/analyzer/test/src/dart/resolution/type_inference/statements_test.dart
index ad542d5..68ff856 100644
--- a/pkg/analyzer/test/src/dart/resolution/type_inference/statements_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/type_inference/statements_test.dart
@@ -17,8 +17,7 @@
 }
 
 @reflectiveTest
-class AssertWithNullSafetyTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class AssertWithNullSafetyTest extends PubPackageResolutionTest {
   test_downward() async {
     await resolveTestCode('''
 void f() {
@@ -31,8 +30,7 @@
 }
 
 @reflectiveTest
-class DoWithNullSafetyTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class DoWithNullSafetyTest extends PubPackageResolutionTest {
   test_downward() async {
     await resolveTestCode('''
 void f() {
@@ -45,8 +43,7 @@
 }
 
 @reflectiveTest
-class ForWithNullSafetyTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class ForWithNullSafetyTest extends PubPackageResolutionTest {
   test_awaitForIn_dynamic_downward() async {
     await resolveTestCode('''
 void f() async {
@@ -102,8 +99,7 @@
 }
 
 @reflectiveTest
-class IfWithNullSafetyTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class IfWithNullSafetyTest extends PubPackageResolutionTest {
   test_downward() async {
     await resolveTestCode('''
 void f() {
@@ -116,8 +112,7 @@
 }
 
 @reflectiveTest
-class WhileWithNullSafetyTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class WhileWithNullSafetyTest extends PubPackageResolutionTest {
   test_downward() async {
     await resolveTestCode('''
 void f() {
diff --git a/pkg/analyzer/test/src/dart/resolution/type_inference/throw_test.dart b/pkg/analyzer/test/src/dart/resolution/type_inference/throw_test.dart
index 05d8a77..7db248a 100644
--- a/pkg/analyzer/test/src/dart/resolution/type_inference/throw_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/type_inference/throw_test.dart
@@ -13,8 +13,7 @@
 }
 
 @reflectiveTest
-class ThrowWithNullSafetyTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class ThrowWithNullSafetyTest extends PubPackageResolutionTest {
   test_downward() async {
     await resolveTestCode('''
 void f() {
diff --git a/pkg/analyzer/test/src/diagnostics/abstract_field_constructor_initializer_test.dart b/pkg/analyzer/test/src/diagnostics/abstract_field_constructor_initializer_test.dart
index b874331..4df710a 100644
--- a/pkg/analyzer/test/src/diagnostics/abstract_field_constructor_initializer_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/abstract_field_constructor_initializer_test.dart
@@ -14,8 +14,7 @@
 }
 
 @reflectiveTest
-class AbstractFieldConstructorInitializerTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class AbstractFieldConstructorInitializerTest extends PubPackageResolutionTest {
   test_abstract_field_constructor_initializer() async {
     await assertErrorsInCode('''
 abstract class A {
diff --git a/pkg/analyzer/test/src/diagnostics/abstract_field_initializer_test.dart b/pkg/analyzer/test/src/diagnostics/abstract_field_initializer_test.dart
index 417c2d6..6dab96b 100644
--- a/pkg/analyzer/test/src/diagnostics/abstract_field_initializer_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/abstract_field_initializer_test.dart
@@ -14,8 +14,7 @@
 }
 
 @reflectiveTest
-class AbstractFieldInitializerTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class AbstractFieldInitializerTest extends PubPackageResolutionTest {
   test_abstract_field_final_initializer() async {
     await assertErrorsInCode('''
 abstract class A {
diff --git a/pkg/analyzer/test/src/diagnostics/assignment_to_final_local_test.dart b/pkg/analyzer/test/src/diagnostics/assignment_to_final_local_test.dart
index 81bfd42..5f0614c 100644
--- a/pkg/analyzer/test/src/diagnostics/assignment_to_final_local_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/assignment_to_final_local_test.dart
@@ -128,8 +128,8 @@
 }
 
 @reflectiveTest
-class AssignmentToFinalLocalWithNullSafetyTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class AssignmentToFinalLocalWithNullSafetyTest
+    extends PubPackageResolutionTest {
   test_localVariable_late() async {
     await assertNoErrorsInCode('''
 void f() {
diff --git a/pkg/analyzer/test/src/diagnostics/await_in_late_local_variable_initializer_test.dart b/pkg/analyzer/test/src/diagnostics/await_in_late_local_variable_initializer_test.dart
index 8a372ff..ff9a015 100644
--- a/pkg/analyzer/test/src/diagnostics/await_in_late_local_variable_initializer_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/await_in_late_local_variable_initializer_test.dart
@@ -14,8 +14,7 @@
 }
 
 @reflectiveTest
-class AwaitInLateLocalVariableInitializerTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class AwaitInLateLocalVariableInitializerTest extends PubPackageResolutionTest {
   static const _errorCode =
       CompileTimeErrorCode.AWAIT_IN_LATE_LOCAL_VARIABLE_INITIALIZER;
 
diff --git a/pkg/analyzer/test/src/diagnostics/body_might_complete_normally_test.dart b/pkg/analyzer/test/src/diagnostics/body_might_complete_normally_test.dart
index b46c519..a69898c 100644
--- a/pkg/analyzer/test/src/diagnostics/body_might_complete_normally_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/body_might_complete_normally_test.dart
@@ -14,8 +14,7 @@
 }
 
 @reflectiveTest
-class BodyMayCompleteNormallyTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class BodyMayCompleteNormallyTest extends PubPackageResolutionTest {
   test_factoryConstructor_named_blockBody() async {
     await assertErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/case_expression_type_implements_equals_test.dart b/pkg/analyzer/test/src/diagnostics/case_expression_type_implements_equals_test.dart
index 6d3f9a1..2af52ed 100644
--- a/pkg/analyzer/test/src/diagnostics/case_expression_type_implements_equals_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/case_expression_type_implements_equals_test.dart
@@ -107,7 +107,7 @@
 
 @reflectiveTest
 class CaseExpressionTypeImplementsEqualsWithNullSafetyTest
-    extends PubPackageResolutionTest with WithNullSafetyMixin {
+    extends PubPackageResolutionTest {
   test_declares() async {
     await assertNoErrorsInCode(r'''
 abstract class A {
diff --git a/pkg/analyzer/test/src/diagnostics/concrete_class_with_abstract_member_test.dart b/pkg/analyzer/test/src/diagnostics/concrete_class_with_abstract_member_test.dart
index cfbabf8..3faf721 100644
--- a/pkg/analyzer/test/src/diagnostics/concrete_class_with_abstract_member_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/concrete_class_with_abstract_member_test.dart
@@ -44,7 +44,7 @@
 @reflectiveTest
 class ConcreteClassWithAbstractMemberWithNullSafetyTest
     extends PubPackageResolutionTest
-    with WithNullSafetyMixin, ConcreteClassWithAbstractMemberTestCases {
+    with ConcreteClassWithAbstractMemberTestCases {
   test_abstract_field() async {
     await assertErrorsInCode('''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/could_not_infer_test.dart b/pkg/analyzer/test/src/diagnostics/could_not_infer_test.dart
index e917a35..fe029e8 100644
--- a/pkg/analyzer/test/src/diagnostics/could_not_infer_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/could_not_infer_test.dart
@@ -254,8 +254,7 @@
 /// TODO(https://github.com/dart-lang/sdk/issues/44078): Add tests with
 /// non-function typedefs.
 @reflectiveTest
-class CouldNotInferWithNullSafetyTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class CouldNotInferWithNullSafetyTest extends PubPackageResolutionTest {
   test_constructor_nullSafe_fromLegacy() async {
     newFile('$testPackageLibPath/a.dart', content: '''
 class C<T extends Object> {
diff --git a/pkg/analyzer/test/src/diagnostics/dead_null_aware_expression_test.dart b/pkg/analyzer/test/src/diagnostics/dead_null_aware_expression_test.dart
index 9699bae..05b0e8b 100644
--- a/pkg/analyzer/test/src/diagnostics/dead_null_aware_expression_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/dead_null_aware_expression_test.dart
@@ -14,8 +14,7 @@
 }
 
 @reflectiveTest
-class DeadNullAwareExpressionTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class DeadNullAwareExpressionTest extends PubPackageResolutionTest {
   test_assignCompound_legacy() async {
     newFile('$testPackageLibPath/a.dart', content: r'''
 // @dart = 2.5
diff --git a/pkg/analyzer/test/src/diagnostics/default_list_constructor_test.dart b/pkg/analyzer/test/src/diagnostics/default_list_constructor_test.dart
index 6f8f9c1..5e02092 100644
--- a/pkg/analyzer/test/src/diagnostics/default_list_constructor_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/default_list_constructor_test.dart
@@ -14,8 +14,7 @@
 }
 
 @reflectiveTest
-class DefaultListConstructorMismatch extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class DefaultListConstructorMismatch extends PubPackageResolutionTest {
   test_inferredType() async {
     await assertErrorsInCode('''
 List<int> v = List(5);
diff --git a/pkg/analyzer/test/src/diagnostics/default_value_on_required_parameter_test.dart b/pkg/analyzer/test/src/diagnostics/default_value_on_required_parameter_test.dart
index d191807..15f58cb 100644
--- a/pkg/analyzer/test/src/diagnostics/default_value_on_required_parameter_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/default_value_on_required_parameter_test.dart
@@ -14,8 +14,7 @@
 }
 
 @reflectiveTest
-class DefaultValueOnRequiredParameterTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class DefaultValueOnRequiredParameterTest extends PubPackageResolutionTest {
   test_function_notRequired_default() async {
     await assertNoErrorsInCode('''
 void log({String message: 'no message'}) {}
diff --git a/pkg/analyzer/test/src/diagnostics/definitely_unassigned_late_local_variable_test.dart b/pkg/analyzer/test/src/diagnostics/definitely_unassigned_late_local_variable_test.dart
index 61ee6ec..fce1a902 100644
--- a/pkg/analyzer/test/src/diagnostics/definitely_unassigned_late_local_variable_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/definitely_unassigned_late_local_variable_test.dart
@@ -14,8 +14,8 @@
 }
 
 @reflectiveTest
-class DefinitelyUnassignedLateLocalVariableTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class DefinitelyUnassignedLateLocalVariableTest
+    extends PubPackageResolutionTest {
   CompileTimeErrorCode get _errorCode {
     return CompileTimeErrorCode.DEFINITELY_UNASSIGNED_LATE_LOCAL_VARIABLE;
   }
diff --git a/pkg/analyzer/test/src/diagnostics/deprecated_member_use_test.dart b/pkg/analyzer/test/src/diagnostics/deprecated_member_use_test.dart
index a54b50c..77b7e3c 100644
--- a/pkg/analyzer/test/src/diagnostics/deprecated_member_use_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/deprecated_member_use_test.dart
@@ -31,7 +31,7 @@
 @reflectiveTest
 class DeprecatedMemberUse_BasicWorkspace_WithNullSafetyTest
     extends PubPackageResolutionTest
-    with WithNullSafetyMixin, DeprecatedMemberUse_BasicWorkspaceTestCases {
+    with DeprecatedMemberUse_BasicWorkspaceTestCases {
   test_instanceCreation_namedParameter_fromLegacy() async {
     newFile('$workspaceRootPath/aaa/lib/a.dart', content: r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/duplicate_field_formal_parameter_test.dart b/pkg/analyzer/test/src/diagnostics/duplicate_field_formal_parameter_test.dart
index 60961c5..0d10113 100644
--- a/pkg/analyzer/test/src/diagnostics/duplicate_field_formal_parameter_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/duplicate_field_formal_parameter_test.dart
@@ -14,8 +14,7 @@
 }
 
 @reflectiveTest
-class DuplicateFieldFormalParameterTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class DuplicateFieldFormalParameterTest extends PubPackageResolutionTest {
   test_optional_named() async {
     await assertErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/export_legacy_symbol_test.dart b/pkg/analyzer/test/src/diagnostics/export_legacy_symbol_test.dart
index 2d1fa89..2f22ba9 100644
--- a/pkg/analyzer/test/src/diagnostics/export_legacy_symbol_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/export_legacy_symbol_test.dart
@@ -14,8 +14,7 @@
 }
 
 @reflectiveTest
-class ExportLegacySymbolTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class ExportLegacySymbolTest extends PubPackageResolutionTest {
   test_exportDartAsync() async {
     await assertNoErrorsInCode(r'''
 export 'dart:async';
diff --git a/pkg/analyzer/test/src/diagnostics/extension_override_argument_not_assignable_test.dart b/pkg/analyzer/test/src/diagnostics/extension_override_argument_not_assignable_test.dart
index 540a822..c669f19 100644
--- a/pkg/analyzer/test/src/diagnostics/extension_override_argument_not_assignable_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/extension_override_argument_not_assignable_test.dart
@@ -64,7 +64,7 @@
 
 @reflectiveTest
 class ExtensionOverrideArgumentNotAssignableWithNullSafetyTest
-    extends PubPackageResolutionTest with WithNullSafetyMixin {
+    extends PubPackageResolutionTest {
   test_override_onNonNullable() async {
     await assertErrorsInCode(r'''
 extension E on String {
diff --git a/pkg/analyzer/test/src/diagnostics/external_field_constructor_initializer_test.dart b/pkg/analyzer/test/src/diagnostics/external_field_constructor_initializer_test.dart
index f4939b0..da346e1 100644
--- a/pkg/analyzer/test/src/diagnostics/external_field_constructor_initializer_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/external_field_constructor_initializer_test.dart
@@ -14,8 +14,7 @@
 }
 
 @reflectiveTest
-class ExternalFieldConstructorInitializerTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class ExternalFieldConstructorInitializerTest extends PubPackageResolutionTest {
   test_external_field_constructor_initializer() async {
     await assertErrorsInCode('''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/external_field_initializer_test.dart b/pkg/analyzer/test/src/diagnostics/external_field_initializer_test.dart
index caa8ed8..93a95a2 100644
--- a/pkg/analyzer/test/src/diagnostics/external_field_initializer_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/external_field_initializer_test.dart
@@ -14,8 +14,7 @@
 }
 
 @reflectiveTest
-class ExternalFieldInitializerTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class ExternalFieldInitializerTest extends PubPackageResolutionTest {
   test_external_field_final_initializer() async {
     await assertErrorsInCode('''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/external_variable_initializer_test.dart b/pkg/analyzer/test/src/diagnostics/external_variable_initializer_test.dart
index 54345c8..d1d0c91 100644
--- a/pkg/analyzer/test/src/diagnostics/external_variable_initializer_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/external_variable_initializer_test.dart
@@ -14,8 +14,7 @@
 }
 
 @reflectiveTest
-class ExternalVariableInitializerTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class ExternalVariableInitializerTest extends PubPackageResolutionTest {
   test_external_variable_final_initializer() async {
     await assertErrorsInCode('''
 external final int x = 0;
diff --git a/pkg/analyzer/test/src/diagnostics/final_not_initialized_test.dart b/pkg/analyzer/test/src/diagnostics/final_not_initialized_test.dart
index 716b9d7..270c1bd 100644
--- a/pkg/analyzer/test/src/diagnostics/final_not_initialized_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/final_not_initialized_test.dart
@@ -83,8 +83,7 @@
 }
 
 @reflectiveTest
-class FinalNotInitializedWithNullSafetyTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class FinalNotInitializedWithNullSafetyTest extends PubPackageResolutionTest {
   test_field_abstract() async {
     await assertNoErrorsInCode('''
 abstract class A {
diff --git a/pkg/analyzer/test/src/diagnostics/getter_not_subtype_setter_types_test.dart b/pkg/analyzer/test/src/diagnostics/getter_not_subtype_setter_types_test.dart
index 13631fa..ec81014 100644
--- a/pkg/analyzer/test/src/diagnostics/getter_not_subtype_setter_types_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/getter_not_subtype_setter_types_test.dart
@@ -14,8 +14,7 @@
 }
 
 @reflectiveTest
-class GetterNotSubtypeSetterTypesTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class GetterNotSubtypeSetterTypesTest extends PubPackageResolutionTest {
   test_class_instance() async {
     await assertErrorsInCode('''
 class C {
diff --git a/pkg/analyzer/test/src/diagnostics/import_of_legacy_library_into_null_safe_test.dart b/pkg/analyzer/test/src/diagnostics/import_of_legacy_library_into_null_safe_test.dart
index cde53c9..7a6c3ab 100644
--- a/pkg/analyzer/test/src/diagnostics/import_of_legacy_library_into_null_safe_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/import_of_legacy_library_into_null_safe_test.dart
@@ -14,8 +14,7 @@
 }
 
 @reflectiveTest
-class ImportOfLegacyLibraryInoNullSafeTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class ImportOfLegacyLibraryInoNullSafeTest extends PubPackageResolutionTest {
   test_legacy_into_legacy() async {
     newFile('$testPackageLibPath/a.dart', content: r'''
 // @dart = 2.9
diff --git a/pkg/analyzer/test/src/diagnostics/inconsistent_case_expression_types_test.dart b/pkg/analyzer/test/src/diagnostics/inconsistent_case_expression_types_test.dart
index 28a4312..e26ef2b 100644
--- a/pkg/analyzer/test/src/diagnostics/inconsistent_case_expression_types_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/inconsistent_case_expression_types_test.dart
@@ -115,7 +115,7 @@
 
 @reflectiveTest
 class InconsistentCaseExpressionTypesWithNullSafetyTest
-    extends PubPackageResolutionTest with WithNullSafetyMixin {
+    extends PubPackageResolutionTest {
   test_int_none_legacy() async {
     newFile('$testPackageLibPath/a.dart', content: r'''
 const a = 0;
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_language_override_greater_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_language_override_greater_test.dart
index 13338b4..ef045c8 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_language_override_greater_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_language_override_greater_test.dart
@@ -18,8 +18,7 @@
 }
 
 @reflectiveTest
-class InvalidLanguageOverrideGreaterTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class InvalidLanguageOverrideGreaterTest extends PubPackageResolutionTest {
   @override
   String? get testPackageLanguageVersion => null;
 
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_null_aware_operator_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_null_aware_operator_test.dart
index 8f903e5..7c37ddd 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_null_aware_operator_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_null_aware_operator_test.dart
@@ -87,8 +87,7 @@
 }
 
 @reflectiveTest
-class InvalidNullAwareOperatorTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class InvalidNullAwareOperatorTest extends PubPackageResolutionTest {
   test_extensionOverride_assignmentExpression_indexExpression() async {
     await assertErrorsInCode('''
 extension E on int {
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_override_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_override_test.dart
index 89b8221..7d7ecd5 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_override_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_override_test.dart
@@ -590,8 +590,7 @@
 }
 
 @reflectiveTest
-class InvalidOverrideWithNullSafetyTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class InvalidOverrideWithNullSafetyTest extends PubPackageResolutionTest {
   test_abstract_field_covariant_inheritance() async {
     await assertNoErrorsInCode('''
 abstract class A {
diff --git a/pkg/analyzer/test/src/diagnostics/late_final_field_with_const_constructor_test.dart b/pkg/analyzer/test/src/diagnostics/late_final_field_with_const_constructor_test.dart
index 868c233..4b0b9ba 100644
--- a/pkg/analyzer/test/src/diagnostics/late_final_field_with_const_constructor_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/late_final_field_with_const_constructor_test.dart
@@ -14,8 +14,7 @@
 }
 
 @reflectiveTest
-class LateFinalFieldWithConstConstructorTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class LateFinalFieldWithConstConstructorTest extends PubPackageResolutionTest {
   static const _errorCode =
       CompileTimeErrorCode.LATE_FINAL_FIELD_WITH_CONST_CONSTRUCTOR;
 
diff --git a/pkg/analyzer/test/src/diagnostics/late_final_local_already_assigned_test.dart b/pkg/analyzer/test/src/diagnostics/late_final_local_already_assigned_test.dart
index 0bc97d0..cb79658 100644
--- a/pkg/analyzer/test/src/diagnostics/late_final_local_already_assigned_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/late_final_local_already_assigned_test.dart
@@ -14,8 +14,7 @@
 }
 
 @reflectiveTest
-class LateFinalLocalAlreadyAssignedTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class LateFinalLocalAlreadyAssignedTest extends PubPackageResolutionTest {
   test_assignmentExpression_compound() async {
     await assertErrorsInCode('''
 main() {
diff --git a/pkg/analyzer/test/src/diagnostics/main_first_positional_parameter_type_test.dart b/pkg/analyzer/test/src/diagnostics/main_first_positional_parameter_type_test.dart
index 357315a..a8e490c 100644
--- a/pkg/analyzer/test/src/diagnostics/main_first_positional_parameter_type_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/main_first_positional_parameter_type_test.dart
@@ -74,7 +74,7 @@
 @reflectiveTest
 class MainFirstPositionalParameterWithNullSafetyTest
     extends PubPackageResolutionTest
-    with WithNullSafetyMixin, MainFirstPositionalParameterTestCases {
+    with MainFirstPositionalParameterTestCases {
   test_positionalRequired_listOfStringQuestion() async {
     await assertNoErrorsInCode('''
 void main(List<String?> args) {}
diff --git a/pkg/analyzer/test/src/diagnostics/main_has_required_named_parameters_test.dart b/pkg/analyzer/test/src/diagnostics/main_has_required_named_parameters_test.dart
index 5687f54..46a8f2f 100644
--- a/pkg/analyzer/test/src/diagnostics/main_has_required_named_parameters_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/main_has_required_named_parameters_test.dart
@@ -30,7 +30,7 @@
 @reflectiveTest
 class MainHasRequiredNamedParametersWithNullSafetyTest
     extends PubPackageResolutionTest
-    with WithNullSafetyMixin, MainHasRequiredNamedParametersTestCases {
+    with MainHasRequiredNamedParametersTestCases {
   test_namedRequired() async {
     await assertErrorsInCode('''
 void main({required List<String> a}) {}
diff --git a/pkg/analyzer/test/src/diagnostics/main_has_too_many_required_positional_parameters_test.dart b/pkg/analyzer/test/src/diagnostics/main_has_too_many_required_positional_parameters_test.dart
index f9036ac..b08a039 100644
--- a/pkg/analyzer/test/src/diagnostics/main_has_too_many_required_positional_parameters_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/main_has_too_many_required_positional_parameters_test.dart
@@ -95,9 +95,7 @@
 @reflectiveTest
 class MainHasTooManyRequiredPositionalParametersWithNullSafetyTest
     extends PubPackageResolutionTest
-    with
-        WithNullSafetyMixin,
-        MainHasTooManyRequiredPositionalParametersTestCases {
+    with MainHasTooManyRequiredPositionalParametersTestCases {
   test_positionalRequired_3_namedRequired_1() async {
     await resolveTestCode('''
 void main(args, int a, int b, {required int c}) {}
diff --git a/pkg/analyzer/test/src/diagnostics/main_is_not_function_test.dart b/pkg/analyzer/test/src/diagnostics/main_is_not_function_test.dart
index 11ebf19..2060e25 100644
--- a/pkg/analyzer/test/src/diagnostics/main_is_not_function_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/main_is_not_function_test.dart
@@ -94,4 +94,4 @@
 
 @reflectiveTest
 class MainIsNotFunctionWithNullSafetyTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin, MainIsNotFunctionTestCases {}
+    with MainIsNotFunctionTestCases {}
diff --git a/pkg/analyzer/test/src/diagnostics/missing_default_value_for_parameter_test.dart b/pkg/analyzer/test/src/diagnostics/missing_default_value_for_parameter_test.dart
index 25c55d6..e292d65 100644
--- a/pkg/analyzer/test/src/diagnostics/missing_default_value_for_parameter_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/missing_default_value_for_parameter_test.dart
@@ -15,8 +15,7 @@
 }
 
 @reflectiveTest
-class MissingDefaultValueForParameterTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class MissingDefaultValueForParameterTest extends PubPackageResolutionTest {
   test_constructor_externalFactory_nonNullable_named_optional_noDefault() async {
     await assertNoErrorsInCode('''
 class C {
diff --git a/pkg/analyzer/test/src/diagnostics/missing_required_param_test.dart b/pkg/analyzer/test/src/diagnostics/missing_required_param_test.dart
index 865ef42..604be9a 100644
--- a/pkg/analyzer/test/src/diagnostics/missing_required_param_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/missing_required_param_test.dart
@@ -243,8 +243,7 @@
 }
 
 @reflectiveTest
-class MissingRequiredParamWithNullSafetyTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class MissingRequiredParamWithNullSafetyTest extends PubPackageResolutionTest {
   test_constructor_legacy_argumentGiven() async {
     newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/missing_return_test.dart b/pkg/analyzer/test/src/diagnostics/missing_return_test.dart
index 99e1950..3972ae7 100644
--- a/pkg/analyzer/test/src/diagnostics/missing_return_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/missing_return_test.dart
@@ -216,8 +216,7 @@
 }
 
 @reflectiveTest
-class MissingReturnWithNullSafetyTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class MissingReturnWithNullSafetyTest extends PubPackageResolutionTest {
   test_returnNever() async {
     newFile('$testPackageLibPath/a.dart', content: r'''
 Never foo() {
diff --git a/pkg/analyzer/test/src/diagnostics/mixin_inference_no_possible_substitution_test.dart b/pkg/analyzer/test/src/diagnostics/mixin_inference_no_possible_substitution_test.dart
index f83053e..4624ee0 100644
--- a/pkg/analyzer/test/src/diagnostics/mixin_inference_no_possible_substitution_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/mixin_inference_no_possible_substitution_test.dart
@@ -39,7 +39,7 @@
 @reflectiveTest
 class MixinInferenceNoPossibleSubstitutionWithNullSafetyTest
     extends PubPackageResolutionTest
-    with WithNullSafetyMixin, MixinInferenceNoPossibleSubstitutionTestCases {
+    with MixinInferenceNoPossibleSubstitutionTestCases {
   test_valid_nonNullableMixins_legacyApplication() async {
     newFile('$testPackageLibPath/a.dart', content: r'''
 class A<T> {}
diff --git a/pkg/analyzer/test/src/diagnostics/no_default_super_constructor_test.dart b/pkg/analyzer/test/src/diagnostics/no_default_super_constructor_test.dart
index 3352f08..a0e3db6 100644
--- a/pkg/analyzer/test/src/diagnostics/no_default_super_constructor_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/no_default_super_constructor_test.dart
@@ -88,8 +88,7 @@
 
 @reflectiveTest
 class NoDefaultSuperConstructorWithNullSafetyTest
-    extends PubPackageResolutionTest
-    with NoDefaultSuperConstructorTestCases, WithNullSafetyMixin {
+    extends PubPackageResolutionTest with NoDefaultSuperConstructorTestCases {
   test_super_requiredParameter_legacySubclass_explicitConstructor() async {
     newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/non_abstract_class_inherits_abstract_member_test.dart b/pkg/analyzer/test/src/diagnostics/non_abstract_class_inherits_abstract_member_test.dart
index 8467c31..92d76ac 100644
--- a/pkg/analyzer/test/src/diagnostics/non_abstract_class_inherits_abstract_member_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_abstract_class_inherits_abstract_member_test.dart
@@ -618,7 +618,7 @@
 @reflectiveTest
 class NonAbstractClassInheritsAbstractMemberWithNullSafetyTest
     extends PubPackageResolutionTest
-    with WithNullSafetyMixin, NonAbstractClassInheritsAbstractMemberTestCases {
+    with NonAbstractClassInheritsAbstractMemberTestCases {
   test_abstract_field_final_implement_getter() async {
     await assertNoErrorsInCode('''
 abstract class A {
diff --git a/pkg/analyzer/test/src/diagnostics/non_bool_condition_test.dart b/pkg/analyzer/test/src/diagnostics/non_bool_condition_test.dart
index 4ba6bf1..e555186 100644
--- a/pkg/analyzer/test/src/diagnostics/non_bool_condition_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_bool_condition_test.dart
@@ -108,8 +108,7 @@
 }
 
 @reflectiveTest
-class NonBoolConditionWithNullSafetyTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class NonBoolConditionWithNullSafetyTest extends PubPackageResolutionTest {
   test_if_null() async {
     await assertErrorsInCode(r'''
 m() {
diff --git a/pkg/analyzer/test/src/diagnostics/non_bool_negation_expression_test.dart b/pkg/analyzer/test/src/diagnostics/non_bool_negation_expression_test.dart
index 562e090..2d2c516 100644
--- a/pkg/analyzer/test/src/diagnostics/non_bool_negation_expression_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_bool_negation_expression_test.dart
@@ -30,7 +30,7 @@
 
 @reflectiveTest
 class NonBoolNegationExpressionWithNullSafetyTest
-    extends PubPackageResolutionTest with WithNullSafetyMixin {
+    extends PubPackageResolutionTest {
   test_null() async {
     await assertErrorsInCode(r'''
 m() {
diff --git a/pkg/analyzer/test/src/diagnostics/non_bool_operand_test.dart b/pkg/analyzer/test/src/diagnostics/non_bool_operand_test.dart
index da6767b..f3d16b1 100644
--- a/pkg/analyzer/test/src/diagnostics/non_bool_operand_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_bool_operand_test.dart
@@ -59,8 +59,7 @@
 }
 
 @reflectiveTest
-class NonBoolOperandWithNullSafetyTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class NonBoolOperandWithNullSafetyTest extends PubPackageResolutionTest {
   test_and_null() async {
     await assertErrorsInCode(r'''
 m() {
diff --git a/pkg/analyzer/test/src/diagnostics/non_null_opt_out_test.dart b/pkg/analyzer/test/src/diagnostics/non_null_opt_out_test.dart
index 9cd23cf..42aa615 100644
--- a/pkg/analyzer/test/src/diagnostics/non_null_opt_out_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_null_opt_out_test.dart
@@ -18,8 +18,7 @@
 }
 
 @reflectiveTest
-class NonNullOptOutTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class NonNullOptOutTest extends PubPackageResolutionTest {
   ImportFindElement get _import_a {
     return findElement.importFind('package:test/a.dart');
   }
diff --git a/pkg/analyzer/test/src/diagnostics/not_assigned_potentially_non_nullable_local_variable_test.dart b/pkg/analyzer/test/src/diagnostics/not_assigned_potentially_non_nullable_local_variable_test.dart
index 3154db5..9304c97 100644
--- a/pkg/analyzer/test/src/diagnostics/not_assigned_potentially_non_nullable_local_variable_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/not_assigned_potentially_non_nullable_local_variable_test.dart
@@ -18,7 +18,7 @@
 
 @reflectiveTest
 class NotInitializedPotentiallyNonNullableLocalVariableTest
-    extends PubPackageResolutionTest with WithNullSafetyMixin {
+    extends PubPackageResolutionTest {
   test_assignment_leftExpression() async {
     await assertErrorsInCode(r'''
 void f() {
diff --git a/pkg/analyzer/test/src/diagnostics/not_initialized_non_nullable_instance_field_test.dart b/pkg/analyzer/test/src/diagnostics/not_initialized_non_nullable_instance_field_test.dart
index 7ade83f..3f4f184 100644
--- a/pkg/analyzer/test/src/diagnostics/not_initialized_non_nullable_instance_field_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/not_initialized_non_nullable_instance_field_test.dart
@@ -15,7 +15,7 @@
 
 @reflectiveTest
 class NotInitializedNonNullableInstanceFieldTest
-    extends PubPackageResolutionTest with WithNullSafetyMixin {
+    extends PubPackageResolutionTest {
   test_abstract_field_non_nullable() async {
     await assertNoErrorsInCode('''
 abstract class A {
diff --git a/pkg/analyzer/test/src/diagnostics/not_initialized_non_nullable_variable_test.dart b/pkg/analyzer/test/src/diagnostics/not_initialized_non_nullable_variable_test.dart
index 9a2b35b..560bb4f 100644
--- a/pkg/analyzer/test/src/diagnostics/not_initialized_non_nullable_variable_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/not_initialized_non_nullable_variable_test.dart
@@ -14,8 +14,7 @@
 }
 
 @reflectiveTest
-class NotInitializedNonNullableVariableTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class NotInitializedNonNullableVariableTest extends PubPackageResolutionTest {
   test_external_static_field_non_nullable() async {
     await assertNoErrorsInCode('''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/null_check_always_fails_test.dart b/pkg/analyzer/test/src/diagnostics/null_check_always_fails_test.dart
index ce1298b..5f9267e 100644
--- a/pkg/analyzer/test/src/diagnostics/null_check_always_fails_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/null_check_always_fails_test.dart
@@ -14,8 +14,7 @@
 }
 
 @reflectiveTest
-class NullNeverNotNullTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class NullNeverNotNullTest extends PubPackageResolutionTest {
   test_nullable() async {
     await assertNoErrorsInCode(r'''
 void f(int? i) {
diff --git a/pkg/analyzer/test/src/diagnostics/null_safety_read_write_test.dart b/pkg/analyzer/test/src/diagnostics/null_safety_read_write_test.dart
index c8fe983..1d73a79 100644
--- a/pkg/analyzer/test/src/diagnostics/null_safety_read_write_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/null_safety_read_write_test.dart
@@ -15,8 +15,7 @@
 }
 
 @reflectiveTest
-class ReadWriteWithNullSafetyTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class ReadWriteWithNullSafetyTest extends PubPackageResolutionTest {
   @override
   bool get retainDataForTesting => true;
 
diff --git a/pkg/analyzer/test/src/diagnostics/nullable_type_in_catch_clause_test.dart b/pkg/analyzer/test/src/diagnostics/nullable_type_in_catch_clause_test.dart
index bbd9363..320049a 100644
--- a/pkg/analyzer/test/src/diagnostics/nullable_type_in_catch_clause_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/nullable_type_in_catch_clause_test.dart
@@ -14,8 +14,7 @@
 }
 
 @reflectiveTest
-class NullableTypeInCatchClauseTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class NullableTypeInCatchClauseTest extends PubPackageResolutionTest {
   test_noOnClause() async {
     await assertNoErrorsInCode('''
 f() {
diff --git a/pkg/analyzer/test/src/diagnostics/receiver_of_type_never_test.dart b/pkg/analyzer/test/src/diagnostics/receiver_of_type_never_test.dart
index 60eeb58..9a85f2f 100644
--- a/pkg/analyzer/test/src/diagnostics/receiver_of_type_never_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/receiver_of_type_never_test.dart
@@ -15,8 +15,7 @@
 }
 
 @reflectiveTest
-class InvalidUseOfNeverTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class InvalidUseOfNeverTest extends PubPackageResolutionTest {
   test_binaryExpression_never_eqEq() async {
     await assertErrorsInCode(r'''
 void f(Never x) {
diff --git a/pkg/analyzer/test/src/diagnostics/switch_case_completes_normally_test.dart b/pkg/analyzer/test/src/diagnostics/switch_case_completes_normally_test.dart
index cdde582..67bf41f 100644
--- a/pkg/analyzer/test/src/diagnostics/switch_case_completes_normally_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/switch_case_completes_normally_test.dart
@@ -14,8 +14,7 @@
 }
 
 @reflectiveTest
-class SwitchCaseCompletesNormallyTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class SwitchCaseCompletesNormallyTest extends PubPackageResolutionTest {
   test_break() async {
     await assertNoErrorsInCode(r'''
 void f(int a) {
diff --git a/pkg/analyzer/test/src/diagnostics/throw_of_invalid_type_test.dart b/pkg/analyzer/test/src/diagnostics/throw_of_invalid_type_test.dart
index fa947bc..3cbef8b 100644
--- a/pkg/analyzer/test/src/diagnostics/throw_of_invalid_type_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/throw_of_invalid_type_test.dart
@@ -14,8 +14,7 @@
 }
 
 @reflectiveTest
-class ThrowOfInvalidTypeTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class ThrowOfInvalidTypeTest extends PubPackageResolutionTest {
   test_dynamic() async {
     await assertNoErrorsInCode('''
 f(dynamic a) {
diff --git a/pkg/analyzer/test/src/diagnostics/undefined_getter_test.dart b/pkg/analyzer/test/src/diagnostics/undefined_getter_test.dart
index d02a26d..e00bb5f 100644
--- a/pkg/analyzer/test/src/diagnostics/undefined_getter_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/undefined_getter_test.dart
@@ -387,7 +387,7 @@
 
 @reflectiveTest
 class UndefinedGetterWithNullSafetyTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin, UndefinedGetterTestCases {
+    with UndefinedGetterTestCases {
   test_get_from_abstract_field_final_valid() async {
     await assertNoErrorsInCode('''
 abstract class A {
diff --git a/pkg/analyzer/test/src/diagnostics/undefined_setter_test.dart b/pkg/analyzer/test/src/diagnostics/undefined_setter_test.dart
index 858c519..65ba939 100644
--- a/pkg/analyzer/test/src/diagnostics/undefined_setter_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/undefined_setter_test.dart
@@ -142,7 +142,7 @@
 
 @reflectiveTest
 class UndefinedSetterWithNullSafetyTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin, UndefinedSetterTestCases {
+    with UndefinedSetterTestCases {
   test_set_abstract_field_valid() async {
     await assertNoErrorsInCode('''
 abstract class A {
diff --git a/pkg/analyzer/test/src/diagnostics/unnecessary_non_null_assertion_test.dart b/pkg/analyzer/test/src/diagnostics/unnecessary_non_null_assertion_test.dart
index 4c521d2..5114424 100644
--- a/pkg/analyzer/test/src/diagnostics/unnecessary_non_null_assertion_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/unnecessary_non_null_assertion_test.dart
@@ -14,8 +14,7 @@
 }
 
 @reflectiveTest
-class UnnecessaryNonNullAssertionTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class UnnecessaryNonNullAssertionTest extends PubPackageResolutionTest {
   test_legacy() async {
     newFile('$testPackageLibPath/a.dart', content: r'''
 // @dart = 2.5
diff --git a/pkg/analyzer/test/src/diagnostics/unnecessary_null_comparison_test.dart b/pkg/analyzer/test/src/diagnostics/unnecessary_null_comparison_test.dart
index ffd565a..33b4b6a 100644
--- a/pkg/analyzer/test/src/diagnostics/unnecessary_null_comparison_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/unnecessary_null_comparison_test.dart
@@ -15,8 +15,7 @@
 }
 
 @reflectiveTest
-class UnnecessaryNullComparisonFalseTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class UnnecessaryNullComparisonFalseTest extends PubPackageResolutionTest {
   test_equal_intLiteral() async {
     await assertNoErrorsInCode('''
 f(int a, int? b) {
@@ -79,8 +78,7 @@
 }
 
 @reflectiveTest
-class UnnecessaryNullComparisonTrueTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class UnnecessaryNullComparisonTrueTest extends PubPackageResolutionTest {
   test_notEqual_intLiteral() async {
     await assertNoErrorsInCode('''
 f(int a, int? b) {
diff --git a/pkg/analyzer/test/src/diagnostics/use_of_void_result_test.dart b/pkg/analyzer/test/src/diagnostics/use_of_void_result_test.dart
index 061b5e3..dfbc1a7 100644
--- a/pkg/analyzer/test/src/diagnostics/use_of_void_result_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/use_of_void_result_test.dart
@@ -727,8 +727,7 @@
 }
 
 @reflectiveTest
-class UseOfVoidResultTest_NonNullable extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class UseOfVoidResultTest_NonNullable extends PubPackageResolutionTest {
   test_assignment_toDynamic() async {
     await assertErrorsInCode('''
 void f(void x) {
diff --git a/pkg/analyzer/test/src/summary/top_level_inference_test.dart b/pkg/analyzer/test/src/summary/top_level_inference_test.dart
index 9fbcbd1..fb39435 100644
--- a/pkg/analyzer/test/src/summary/top_level_inference_test.dart
+++ b/pkg/analyzer/test/src/summary/top_level_inference_test.dart
@@ -25,8 +25,7 @@
 }
 
 @reflectiveTest
-class TopLevelInferenceErrorsTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class TopLevelInferenceErrorsTest extends PubPackageResolutionTest {
   test_initializer_additive() async {
     await _assertErrorOnlyLeft(['+', '-']);
   }
@@ -340,8 +339,7 @@
 }
 
 @reflectiveTest
-class TopLevelInferenceTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
+class TopLevelInferenceTest extends PubPackageResolutionTest {
   test_initializer_additive() async {
     var library = await _encodeDecodeLibrary(r'''
 var vPlusIntInt = 1 + 2;
diff --git a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
index b41e49f..15637c2 100644
--- a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
@@ -447,6 +447,11 @@
     return libraryBuilder.enableExtensionTypesInLibrary;
   }
 
+  @override
+  bool get enableConstFunctionsInLibrary {
+    return libraryBuilder.enableConstFunctionsInLibrary;
+  }
+
   void _enterLocalState({bool inLateLocalInitializer: false}) {
     _localInitializerState =
         _localInitializerState.prepend(inLateLocalInitializer);
diff --git a/pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart b/pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart
index 913f391..4987b10 100644
--- a/pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart
@@ -84,12 +84,14 @@
     {bool evaluateAnnotations,
     bool desugarSets,
     bool enableTripleShift,
+    bool enableConstFunctions,
     bool errorOnUnevaluatedConstant,
     CoreTypes coreTypes,
     ClassHierarchy hierarchy}) {
   assert(evaluateAnnotations != null);
   assert(desugarSets != null);
   assert(enableTripleShift != null);
+  assert(enableConstFunctions != null);
   assert(errorOnUnevaluatedConstant != null);
   coreTypes ??= new CoreTypes(component);
   hierarchy ??= new ClassHierarchy(component, coreTypes);
@@ -100,6 +102,7 @@
   transformLibraries(component.libraries, backend, environmentDefines,
       typeEnvironment, errorReporter, evaluationMode,
       enableTripleShift: enableTripleShift,
+      enableConstFunctions: enableConstFunctions,
       errorOnUnevaluatedConstant: errorOnUnevaluatedConstant,
       evaluateAnnotations: evaluateAnnotations);
   return component;
@@ -114,15 +117,18 @@
     EvaluationMode evaluationMode,
     {bool evaluateAnnotations,
     bool enableTripleShift,
+    bool enableConstFunctions,
     bool errorOnUnevaluatedConstant}) {
   assert(evaluateAnnotations != null);
   assert(enableTripleShift != null);
+  assert(enableConstFunctions != null);
   assert(errorOnUnevaluatedConstant != null);
   final ConstantsTransformer constantsTransformer = new ConstantsTransformer(
       backend,
       environmentDefines,
       evaluateAnnotations,
       enableTripleShift,
+      enableConstFunctions,
       errorOnUnevaluatedConstant,
       typeEnvironment,
       errorReporter,
@@ -142,15 +148,18 @@
     EvaluationMode evaluationMode,
     {bool evaluateAnnotations: true,
     bool enableTripleShift: false,
+    bool enableConstFunctions: false,
     bool errorOnUnevaluatedConstant: false}) {
   assert(evaluateAnnotations != null);
   assert(enableTripleShift != null);
+  assert(enableConstFunctions != null);
   assert(errorOnUnevaluatedConstant != null);
   final ConstantsTransformer constantsTransformer = new ConstantsTransformer(
       backend,
       environmentDefines,
       evaluateAnnotations,
       enableTripleShift,
+      enableConstFunctions,
       errorOnUnevaluatedConstant,
       typeEnvironment,
       errorReporter,
@@ -335,6 +344,7 @@
 
   final bool evaluateAnnotations;
   final bool enableTripleShift;
+  final bool enableConstFunctions;
   final bool errorOnUnevaluatedConstant;
 
   ConstantsTransformer(
@@ -342,6 +352,7 @@
       Map<String, String> environmentDefines,
       this.evaluateAnnotations,
       this.enableTripleShift,
+      this.enableConstFunctions,
       this.errorOnUnevaluatedConstant,
       this.typeEnvironment,
       ErrorReporter errorReporter,
@@ -349,6 +360,7 @@
       : constantEvaluator = new ConstantEvaluator(
             backend, environmentDefines, typeEnvironment, errorReporter,
             enableTripleShift: enableTripleShift,
+            enableConstFunctions: enableConstFunctions,
             errorOnUnevaluatedConstant: errorOnUnevaluatedConstant,
             evaluationMode: evaluationMode);
 
@@ -812,6 +824,7 @@
   final EvaluationMode evaluationMode;
 
   final bool enableTripleShift;
+  final bool enableConstFunctions;
 
   final bool Function(DartType) isInstantiated =
       new IsInstantiatedVisitor().isInstantiated;
@@ -846,6 +859,7 @@
   ConstantEvaluator(this.backend, this.environmentDefines, this.typeEnvironment,
       this.errorReporter,
       {this.enableTripleShift = false,
+      this.enableConstFunctions = false,
       this.errorOnUnevaluatedConstant = false,
       this.evaluationMode: EvaluationMode.weak})
       : numberSemantics = backend.numberSemantics,
diff --git a/pkg/front_end/lib/src/fasta/kernel/expression_generator_helper.dart b/pkg/front_end/lib/src/fasta/kernel/expression_generator_helper.dart
index 128205c..83bd4ab 100644
--- a/pkg/front_end/lib/src/fasta/kernel/expression_generator_helper.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/expression_generator_helper.dart
@@ -64,6 +64,8 @@
 
   bool get enableExtensionTypesInLibrary;
 
+  bool get enableConstFunctionsInLibrary;
+
   scopeLookup(Scope scope, String name, Token token,
       {bool isQualified: false, PrefixBuilder prefix});
 
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart
index 4e1b58b..1bebec8 100644
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart
@@ -1235,6 +1235,8 @@
         evaluateAnnotations: true,
         enableTripleShift:
             isExperimentEnabledGlobally(ExperimentalFlag.tripleShift),
+        enableConstFunctions:
+            isExperimentEnabledGlobally(ExperimentalFlag.constFunctions),
         errorOnUnevaluatedConstant: errorOnUnevaluatedConstant);
     ticker.logMs("Evaluated constants");
 
@@ -1283,6 +1285,8 @@
         evaluateAnnotations: true,
         enableTripleShift:
             isExperimentEnabledGlobally(ExperimentalFlag.tripleShift),
+        enableConstFunctions:
+            isExperimentEnabledGlobally(ExperimentalFlag.constFunctions),
         errorOnUnevaluatedConstant: errorOnUnevaluatedConstant);
     ticker.logMs("Evaluated constants");
 
diff --git a/pkg/front_end/lib/src/fasta/source/source_library_builder.dart b/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
index 11b2502..c4a855e 100644
--- a/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
@@ -292,6 +292,7 @@
         "'${importUri}'.");
   }
 
+  bool _enableConstFunctionsInLibrary;
   bool _enableVarianceInLibrary;
   bool _enableNonfunctionTypeAliasesInLibrary;
   bool _enableNonNullableInLibrary;
@@ -301,6 +302,10 @@
   bool _enableGenericMetadataInLibrary;
   bool _enableExtensionTypesInLibrary;
 
+  bool get enableConstFunctionsInLibrary => _enableConstFunctionsInLibrary ??=
+      loader.target.isExperimentEnabledInLibrary(
+          ExperimentalFlag.constFunctions, _packageUri ?? importUri);
+
   bool get enableVarianceInLibrary =>
       _enableVarianceInLibrary ??= loader.target.isExperimentEnabledInLibrary(
           ExperimentalFlag.variance, _packageUri ?? importUri);
diff --git a/tools/VERSION b/tools/VERSION
index 0fcc478..836aaa1 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 13
 PATCH 0
-PRERELEASE 73
+PRERELEASE 74
 PRERELEASE_PATCH 0
\ No newline at end of file
