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;
