Version 2.13.0-17.0.dev

Merge commit '7b1c194057f74c4091d48747e1f4a9f62a6b0a33' into 'dev'
diff --git a/DEPS b/DEPS
index 301e6de..397cf38 100644
--- a/DEPS
+++ b/DEPS
@@ -68,8 +68,8 @@
   "gperftools_revision": "180bfa10d7cb38e8b3784d60943d50e8fcef0dcb",
 
   # Revisions of /third_party/* dependencies.
-  "args_rev": "2c6a221f45e4e0ef447b5d09101bf8a52e1ccd36",
-  "async_rev": "695b3ac280f107c84adf7488743abfdfaaeea68f",
+  "args_rev": "c3c7fd4ae728d03cd43e723f11d099b07045ad01",
+  "async_rev": "376d418b1b535030fbe3369938d2ffdbb0340a77",
   "bazel_worker_rev": "060c55a933d39798681a4f533b161b81dc48d77e",
   "benchmark_harness_rev": "c546dbd9f639f75cd2f75de8df2eb9f8ea15e8e7",
   "boolean_selector_rev": "665e6921ab246569420376f827bff4585dff0b14",
@@ -78,11 +78,11 @@
   "browser-compat-data_tag": "v1.0.22",
   "charcode_rev": "bcd8a12c315b7a83390e4865ad847ecd9344cba2",
   "chrome_rev" : "19997",
-  "cli_util_rev" : "50cc840b146615899e97b892578848401b2028d5",
+  "cli_util_rev" : "fd1b716e8a350a454e01ae56df540293d31ff6c8",
   "clock_rev" : "a494269254ba978e7ef8f192c5f7fec3fc05b9d3",
-  "collection_rev": "e4bb038ce2d8e66fb15818aa40685c68d53692ab",
-  "convert_rev": "6513985a1b1ea8a0b987fbef699250ce2cdc3cca",
-  "crypto_rev": "c89a5be0375875fe7ff71625fa2b79f5a421f06d",
+  "collection_rev": "9967dcd3d7645db6de48d5abfab3018bb0c84236",
+  "convert_rev": "a60156c6efd653657c8926b5788219ed609917d7",
+  "crypto_rev": "1c8ccc07b83b100216dc6dede767371043385648",
   "csslib_rev": "e411d862fd8cc50415c1badf2632e017373b3f47",
   "dart2js_info_rev" : "e0acfeb5affdf94c53067e68bd836adf589628fd",
 
@@ -105,7 +105,7 @@
   "ffi_rev": "f288e906c92e2ab378768dfa61a40814ede7a2a5",
   "fixnum_rev": "16d3890c6dc82ca629659da1934e412292508bba",
   "file_rev": "0e09370f581ab6388d46fda4cdab66638c0171a1",
-  "glob_rev": "7c0ef8d4fa086f6b185c4dd724b700e7d7ad8f79",
+  "glob_rev": "a62acf590598f458d3198d9f2930c1c9dd4b1379",
   "html_rev": "00cd3c22dac0e68e6ed9e7e4945101aedb1b3109",
   "http_io_rev": "2fa188caf7937e313026557713f7feffedd4978b",
   "http_multi_server_rev" : "e8c8be7f15b4fb50757ff5bf29766721fbe24fe4",
@@ -122,19 +122,19 @@
   "logging_rev": "e2f633b543ef89c54688554b15ca3d7e425b86a2",
   "markupsafe_rev": "8f45f5cfa0009d2a70589bcda0349b8cb2b72783",
   "markdown_rev": "6f89681d59541ddb1cf3a58efbdaa2304ffc3f51",
-  "matcher_rev": "63f1110a657fb5e2dc378db8895fef7b0a13ab30",
+  "matcher_rev": "43d5cac48fcd386643016e767164da87c5c25e29",
   "mime_rev": "c931f4bed87221beaece356494b43731445ce7b8",
   "mockito_rev": "d39ac507483b9891165e422ec98d9fb480037c8b",
   "mustache_rev": "664737ecad027e6b96d0d1e627257efa0e46fcb1",
   "oauth2_tag": "1.6.0",
-  "package_config_rev": "0e208cb5a9482d780c47627368d3f5bdc409f37b",
-  "path_rev": "62ecd5a78ffe5734d14ed0df76d20309084cd04a",
-  "pedantic_rev": "a884ea2db943b8756cc94385990bd750aec06928",
+  "package_config_rev": "249af482de9ebabfc781bf10d6152c938e5ce45e",
+  "path_rev": "407ab76187fade41c31e39c745b39661b710106c",
+  "pedantic_rev": "df177f6ae531426aaf7bbf0121c90dc89d9c57bf",
   "ply_rev": "604b32590ffad5cbb82e4afef1d305512d06ae93",
   "pool_rev": "7abe634002a1ba8a0928eded086062f1307ccfae",
   "protobuf_rev": "0d03fd588df69e9863e2a2efc0059dee8f18d5b2",
   "pub_rev": "0e657414a472e74ca5dd76ae0db50cc060251dec",
-  "pub_semver_rev": "10569a1e867e909cf5db201f73118020453e5db8",
+  "pub_semver_rev": "f50d80ef10c4b2fa5f4c8878036a4d9342c0cc82",
   "resource_rev": "6b79867d0becf5395e5819a75720963b8298e9a7",
   "root_certificates_rev": "7e5ec82c99677a2e5b95ce296c4d68b0d3378ed8",
   "rust_revision": "b7856f695d65a8ebc846754f97d15814bcb1c244",
@@ -146,7 +146,7 @@
   "source_map_stack_trace_rev": "1c3026f69d9771acf2f8c176a1ab750463309cce",
   "source_maps-0.9.4_rev": "38524",
   "source_maps_rev": "53eb92ccfe6e64924054f83038a534b959b12b3e",
-  "source_span_rev": "aecb614eac3caa333658493b31a32b4e904cb0a4",
+  "source_span_rev": "1be3c44045a06dff840d2ed3a13e6082d7a03a23",
   "sse_tag": "17b52bbdeee53fc54e5bdf9b80934460a9d63ba6",
   "stack_trace_tag": "6788afc61875079b71b3d1c3e65aeaa6a25cbc2f",
   "stagehand_rev": "e64ac90cac508981011299c4ceb819149e71f1bd",
@@ -157,16 +157,16 @@
   "test_process_tag": "1.0.3",
   "term_glyph_rev": "6a0f9b6fb645ba75e7a00a4e20072678327a0347",
   "test_reflective_loader_rev": "b76ae201ab9c6f3b90643958965e7cc215a38e9b",
-  "test_rev": "e37a93bbeae23b215972d1659ac865d71287ff6a",
+  "test_rev": "bb98af3d17a821c28488ef8e2881e3ca173baf94",
   "typed_data_tag": "f94fc57b8e8c0e4fe4ff6cfd8290b94af52d3719",
   "usage_rev": "6c64d9e7b6b3758d06d030efcb5afe20bfc04dde",
   "vector_math_rev": "0c9f5d68c047813a6dcdeb88ba7a42daddf25025",
-  "watcher_rev": "14706140b3670ca1dfeca73480bdd3091b728ce9",
+  "watcher_rev": "3924194385fb215cef483193ed2879a618a3d69c",
   "webdriver_rev": "5a8d6805d9cf8a3cbb4fcd64849b538b7491e50e",
   "web_components_rev": "8f57dac273412a7172c8ade6f361b407e2e4ed02",
   "web_socket_channel_rev": "680358915e331fda823908234f80beba1ed4ec83",
   "WebCore_rev": "fb11e887f77919450e497344da570d780e078bc8",
-  "yaml_rev": "cca02c9e4f6826d62644901ed65c6d72b90a0713",
+  "yaml_rev": "2392d113b0104dd19358f2833a282f19e2d67c01",
   "zlib_rev": "bf44340d1b6be1af8950bbdf664fec0cf5a831cc",
   "crashpad_rev": "bf327d8ceb6a669607b0dbab5a83a275d03f99ed",
   "minichromium_rev": "8d641e30a8b12088649606b912c2bc4947419ccc",
diff --git a/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart b/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart
index 7b15767..71efad4 100644
--- a/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart
@@ -3272,7 +3272,7 @@
 const MessageCode messageExpressionNotMetadata = const MessageCode(
     "ExpressionNotMetadata",
     message:
-        r"""This can't be used as metadata; metadata should be a reference to a compile-time constant variable, or a call to a constant constructor.""");
+        r"""This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.""");
 
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
 const Code<Null> codeExtendFunction = messageExtendFunction;
@@ -6428,7 +6428,7 @@
 const MessageCode messageMetadataTypeArguments = const MessageCode(
     "MetadataTypeArguments",
     index: 91,
-    message: r"""An annotation (metadata) can't use type arguments.""");
+    message: r"""An annotation can't use type arguments.""");
 
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
 const Code<Null> codeMetadataTypeArgumentsUninstantiated =
@@ -6439,7 +6439,7 @@
     "MetadataTypeArgumentsUninstantiated",
     index: 114,
     message:
-        r"""An annotation (metadata) with type arguments must be followed by an argument list.""");
+        r"""An annotation with type arguments must be followed by an argument list.""");
 
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
 const Template<Message Function(String name)> templateMethodNotFound =
diff --git a/pkg/analysis_server/benchmark/perf/benchmarks_impl.dart b/pkg/analysis_server/benchmark/perf/benchmarks_impl.dart
index c9b438c..fab0850 100644
--- a/pkg/analysis_server/benchmark/perf/benchmarks_impl.dart
+++ b/pkg/analysis_server/benchmark/perf/benchmarks_impl.dart
@@ -116,6 +116,7 @@
     var contents = File(filePath).readAsStringSync();
 
     await test.openFile(filePath, contents);
+    await test.analysisFinished;
 
     var stopwatch = Stopwatch()..start();
 
diff --git a/pkg/analyzer/lib/src/dart/error/syntactic_errors.g.dart b/pkg/analyzer/lib/src/dart/error/syntactic_errors.g.dart
index f6d971f..5265c24 100644
--- a/pkg/analyzer/lib/src/dart/error/syntactic_errors.g.dart
+++ b/pkg/analyzer/lib/src/dart/error/syntactic_errors.g.dart
@@ -149,11 +149,11 @@
 
 const ParserErrorCode _ANNOTATION_WITH_TYPE_ARGUMENTS = ParserErrorCode(
     'ANNOTATION_WITH_TYPE_ARGUMENTS',
-    r"An annotation (metadata) can't use type arguments.");
+    r"An annotation can't use type arguments.");
 
 const ParserErrorCode _ANNOTATION_WITH_TYPE_ARGUMENTS_UNINSTANTIATED =
     ParserErrorCode('ANNOTATION_WITH_TYPE_ARGUMENTS_UNINSTANTIATED',
-        r"An annotation (metadata) with type arguments must be followed by an argument list.");
+        r"An annotation with type arguments must be followed by an argument list.");
 
 const ParserErrorCode _BINARY_OPERATOR_WRITTEN_OUT = ParserErrorCode(
     'BINARY_OPERATOR_WRITTEN_OUT',
diff --git a/pkg/analyzer/test/generated/error_suppression_test.dart b/pkg/analyzer/test/generated/error_suppression_test.dart
index 07a3c23..3c020cb 100644
--- a/pkg/analyzer/test/generated/error_suppression_test.dart
+++ b/pkg/analyzer/test/generated/error_suppression_test.dart
@@ -83,7 +83,7 @@
     await assertNoErrorsInCode('''
 //ignore_for_file:   unused_element , unnecessary_cast
 int x = (0 as int);  //UNNECESSARY_CAST
-String _foo; //UNUSED_ELEMENT
+String _foo = ''; //UNUSED_ELEMENT
 ''');
   }
 
@@ -98,7 +98,7 @@
 //UNNECESSARY_CAST
 int x = (0 as int);
 // ignore: unused_element
-String _foo; //UNUSED_ELEMENT
+String _foo = ''; //UNUSED_ELEMENT
 ''', [
       error(HintCode.UNNECESSARY_CAST, 28, 8),
     ]);
@@ -108,7 +108,7 @@
     await assertErrorsInCode('''
 //UNNECESSARY_CAST
 int x = (0 as int);
-String _foo; // ignore: $ignoredCode
+String _foo = ''; // ignore: $ignoredCode
 ''', [
       error(HintCode.UNNECESSARY_CAST, 28, 8),
     ]);
@@ -119,7 +119,7 @@
     await assertNoErrorsInCode('''
 import 'package:meta/meta.dart';
 
-int f({@Required('x') int a}) => 0;
+int f({@Required('x') int? a}) => 0;
 
 // ignore: missing_required_param_with_details
 int x = f();
@@ -169,7 +169,7 @@
     await assertErrorsInCode('''
 int x = (0 as int); //This is the first comment...
 // ignore: $ignoredCode
-String _foo; //UNUSED_ELEMENT
+String _foo = ''; //UNUSED_ELEMENT
 ''', [
       error(HintCode.UNNECESSARY_CAST, 9, 8),
     ]);
@@ -178,7 +178,7 @@
   test_multiple_ignore_for_files() async {
     await assertNoErrorsInCode('''
 int x = (0 as int); //UNNECESSARY_CAST
-String _foo; //UNUSED_ELEMENT
+String _foo = ''; //UNUSED_ELEMENT
 // ignore_for_file: unnecessary_cast,$ignoredCode
 ''');
   }
diff --git a/pkg/analyzer/test/generated/invalid_code_test.dart b/pkg/analyzer/test/generated/invalid_code_test.dart
index 601a4c6..a82cd94 100644
--- a/pkg/analyzer/test/generated/invalid_code_test.dart
+++ b/pkg/analyzer/test/generated/invalid_code_test.dart
@@ -19,7 +19,10 @@
 /// errors generated, but we want to make sure that there is at least one,
 /// and analysis finishes without exceptions.
 @reflectiveTest
-class InvalidCodeTest extends PubPackageResolutionTest {
+class InvalidCodeTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
+  // TODO(https://github.com/dart-lang/sdk/issues/44666): Use null safety in
+  //  test cases.
   test_const_AwaitExpression() async {
     await _assertCanBeAnalyzed(r'''
 const a = await b();
diff --git a/pkg/analyzer/test/generated/non_error_resolver_test.dart b/pkg/analyzer/test/generated/non_error_resolver_test.dart
index 67216c3..6f2cf9d 100644
--- a/pkg/analyzer/test/generated/non_error_resolver_test.dart
+++ b/pkg/analyzer/test/generated/non_error_resolver_test.dart
@@ -13,8 +13,8 @@
 
 main() {
   defineReflectiveSuite(() {
-    defineReflectiveTests(NonErrorResolverTest);
     defineReflectiveTests(NonConstantValueInInitializer);
+    defineReflectiveTests(NonErrorResolverTest);
   });
 }
 
@@ -53,7 +53,10 @@
 }
 
 @reflectiveTest
-class NonErrorResolverTest extends PubPackageResolutionTest {
+class NonErrorResolverTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
+  // TODO(https://github.com/dart-lang/sdk/issues/44666): Use null safety in
+  //  test cases.
   test_ambiguousExport() async {
     newFile("$testPackageLibPath/lib1.dart", content: r'''
 library lib1;
diff --git a/pkg/analyzer/test/generated/resolver_test.dart b/pkg/analyzer/test/generated/resolver_test.dart
index 6660814..9ca2024 100644
--- a/pkg/analyzer/test/generated/resolver_test.dart
+++ b/pkg/analyzer/test/generated/resolver_test.dart
@@ -277,7 +277,10 @@
 /// The class `StrictModeTest` contains tests to ensure that the correct errors
 /// and warnings are reported when the analysis engine is run in strict mode.
 @reflectiveTest
-class StrictModeTest extends PubPackageResolutionTest {
+class StrictModeTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
+  // TODO(https://github.com/dart-lang/sdk/issues/44666): Use null safety in
+  //  test cases.
   test_assert_is() async {
     await assertErrorsInCode(r'''
 int f(num n) {
@@ -417,7 +420,10 @@
 }
 
 @reflectiveTest
-class TypePropagationTest extends PubPackageResolutionTest {
+class TypePropagationTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
+  // TODO(https://github.com/dart-lang/sdk/issues/44666): Use null safety in
+  //  test cases.
   test_assignment_null() async {
     String code = r'''
 main() {
diff --git a/pkg/analyzer/test/generated/resolver_test_case.dart b/pkg/analyzer/test/generated/resolver_test_case.dart
index ceaa0ac..2be2ffb 100644
--- a/pkg/analyzer/test/generated/resolver_test_case.dart
+++ b/pkg/analyzer/test/generated/resolver_test_case.dart
@@ -285,7 +285,11 @@
 }
 
 /// Shared infrastructure for [StaticTypeAnalyzer2Test].
-class StaticTypeAnalyzer2TestShared extends PubPackageResolutionTest {
+class StaticTypeAnalyzer2TestShared extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
+  // TODO(https://github.com/dart-lang/sdk/issues/44666): Use null safety in
+  //  test cases.
+
   /// Looks up the identifier with [name] and validates that its type type
   /// stringifies to [type] and that its generics match the given stringified
   /// output.
diff --git a/pkg/analyzer/test/generated/simple_resolver_test.dart b/pkg/analyzer/test/generated/simple_resolver_test.dart
index 6269fe3..981d29c 100644
--- a/pkg/analyzer/test/generated/simple_resolver_test.dart
+++ b/pkg/analyzer/test/generated/simple_resolver_test.dart
@@ -530,7 +530,7 @@
     await assertNoErrorsInCode(r'''
 typedef bool P(e);
 class A {
-  P p;
+  late P p;
   m(e) {
     if (p(e)) {}
   }
@@ -604,7 +604,7 @@
 main() {
   foo = 0;
 }
-A a;''');
+A a = A();''');
     verifyTestResolved();
   }
 
@@ -693,11 +693,11 @@
   test_indexExpression_typeParameters() async {
     await assertNoErrorsInCode(r'''
 f() {
-  List<int> a;
+  List<int> a = [];
   a[0];
-  List<List<int>> b;
+  List<List<int>> b = [];
   b[0][0];
-  List<List<List<int>>> c;
+  List<List<List<int>>> c = [];
   c[0][0][0];
 }''');
     verifyTestResolved();
@@ -706,10 +706,10 @@
   test_indexExpression_typeParameters_invalidAssignmentWarning() async {
     await assertErrorsInCode(r'''
 f() {
-  List<List<int>> b;
+  List<List<int>> b = [];
   b[0][0] = 'hi';
 }''', [
-      error(CompileTimeErrorCode.INVALID_ASSIGNMENT, 39, 4),
+      error(CompileTimeErrorCode.INVALID_ASSIGNMENT, 44, 4),
     ]);
     verifyTestResolved();
   }
@@ -854,7 +854,7 @@
     await assertNoErrorsInCode(r'''
 const A = null;
 class C {
-  @A int f;
+  @A int f = 1;
 }''');
     verifyTestResolved();
 
@@ -1077,7 +1077,7 @@
   test_methodCascades_withSetter() async {
     await assertNoErrorsInCode(r'''
 class A {
-  String name;
+  String name = '';
   void m1() {}
   void m2() {}
   void m() {
diff --git a/pkg/analyzer/test/generated/static_type_warning_code_test.dart b/pkg/analyzer/test/generated/static_type_warning_code_test.dart
index e29bb22..7a161cd 100644
--- a/pkg/analyzer/test/generated/static_type_warning_code_test.dart
+++ b/pkg/analyzer/test/generated/static_type_warning_code_test.dart
@@ -11,172 +11,109 @@
   defineReflectiveSuite(() {
     defineReflectiveTests(StaticTypeWarningCodeTest);
     defineReflectiveTests(StrongModeStaticTypeWarningCodeTest);
+    defineReflectiveTests(StaticTypeWarningCodeWithoutNullSafetyTest);
   });
 }
 
+/// TODO(srawlins) Figure out what to do with the rest of these tests.
+///  The names do not correspond to diagnostic codes, so it isn't clear what
+///  they're testing.
 @reflectiveTest
 class StaticTypeWarningCodeTest extends PubPackageResolutionTest {
-  test_assert_message_suppresses_type_promotion() async {
-    // If a variable is assigned to inside the expression for an assert
-    // message, type promotion should be suppressed, just as it would be if the
-    // assignment occurred outside an assert statement.  (Note that it is a
-    // dubious practice for the computation of an assert message to have side
-    // effects, since it is only evaluated if the assert fails).
-    await assertErrorsInCode('''
-class C {
-  void foo() {}
-}
-
-f(Object x) {
-  if (x is C) {
-    x.foo();
-    assert(true, () { x = new C(); return 'msg'; }());
-  }
-}
-''', [
-      error(CompileTimeErrorCode.UNDEFINED_METHOD, 65, 3),
-    ]);
-  }
-
-  test_await_flattened() async {
-    await assertErrorsInCode('''
-Future<Future<int>> ffi() => null;
-f() async {
-  Future<int> b = await ffi(); 
-}
-''', [
-      error(HintCode.UNUSED_LOCAL_VARIABLE, 61, 1),
-    ]);
-  }
-
   test_await_simple() async {
     await assertErrorsInCode('''
-Future<int> fi() => null;
+Future<int> fi() => Future.value(0);
 f() async {
   String a = await fi(); // Warning: int not assignable to String
 }
 ''', [
-      error(HintCode.UNUSED_LOCAL_VARIABLE, 47, 1),
-      error(CompileTimeErrorCode.INVALID_ASSIGNMENT, 51, 10),
+      error(HintCode.UNUSED_LOCAL_VARIABLE, 58, 1),
+      error(CompileTimeErrorCode.INVALID_ASSIGNMENT, 62, 10),
     ]);
   }
 
   test_awaitForIn_declaredVariableRightType() async {
     await assertErrorsInCode('''
-f() async {
-  Stream<int> stream;
+f(Stream<int> stream) async {
   await for (int i in stream) {}
 }
 ''', [
-      error(HintCode.UNUSED_LOCAL_VARIABLE, 51, 1),
+      error(HintCode.UNUSED_LOCAL_VARIABLE, 47, 1),
     ]);
   }
 
   test_awaitForIn_declaredVariableWrongType() async {
     await assertErrorsInCode('''
-f() async {
-  Stream<String> stream;
+f(Stream<String> stream) async {
   await for (int i in stream) {}
 }
 ''', [
-      error(HintCode.UNUSED_LOCAL_VARIABLE, 54, 1),
-      error(CompileTimeErrorCode.FOR_IN_OF_INVALID_ELEMENT_TYPE, 59, 6),
+      error(HintCode.UNUSED_LOCAL_VARIABLE, 50, 1),
+      error(CompileTimeErrorCode.FOR_IN_OF_INVALID_ELEMENT_TYPE, 55, 6),
     ]);
   }
 
   test_awaitForIn_downcast() async {
     await assertErrorsInCode('''
-f() async {
-  Stream<num> stream;
+f(Stream<num> stream) async {
   await for (int i in stream) {}
 }
 ''', [
-      error(HintCode.UNUSED_LOCAL_VARIABLE, 51, 1),
+      error(HintCode.UNUSED_LOCAL_VARIABLE, 47, 1),
+      error(CompileTimeErrorCode.FOR_IN_OF_INVALID_ELEMENT_TYPE, 52, 6),
     ]);
   }
 
   test_awaitForIn_dynamicVariable() async {
     await assertErrorsInCode('''
-f() async {
-  Stream<int> stream;
+f(Stream<int> stream) async {
   await for (var i in stream) {}
 }
 ''', [
-      error(HintCode.UNUSED_LOCAL_VARIABLE, 51, 1),
+      error(HintCode.UNUSED_LOCAL_VARIABLE, 47, 1),
     ]);
   }
 
   test_awaitForIn_existingVariableRightType() async {
     await assertErrorsInCode('''
-f() async {
-  Stream<int> stream;
-  int i;
+f(Stream<int> stream) async {
+  late int i;
   await for (i in stream) {}
 }
 ''', [
-      error(HintCode.UNUSED_LOCAL_VARIABLE, 40, 1),
+      error(HintCode.UNUSED_LOCAL_VARIABLE, 41, 1),
     ]);
   }
 
   test_awaitForIn_existingVariableWrongType() async {
     await assertErrorsInCode('''
-f() async {
-  Stream<String> stream;
-  int i;
+f(Stream<String> stream) async {
+  late int i;
   await for (i in stream) {}
 }
 ''', [
-      error(HintCode.UNUSED_LOCAL_VARIABLE, 43, 1),
-      error(CompileTimeErrorCode.FOR_IN_OF_INVALID_ELEMENT_TYPE, 64, 6),
+      error(HintCode.UNUSED_LOCAL_VARIABLE, 44, 1),
+      error(CompileTimeErrorCode.FOR_IN_OF_INVALID_ELEMENT_TYPE, 65, 6),
     ]);
   }
 
   test_awaitForIn_streamOfDynamic() async {
     await assertErrorsInCode('''
-f() async {
-  Stream stream;
+f(Stream stream) async {
   await for (int i in stream) {}
 }
 ''', [
-      error(HintCode.UNUSED_LOCAL_VARIABLE, 46, 1),
+      error(HintCode.UNUSED_LOCAL_VARIABLE, 42, 1),
     ]);
   }
 
   test_awaitForIn_upcast() async {
     await assertErrorsInCode('''
-f() async {
-  Stream<int> stream;
+f(Stream<int> stream) async {
   await for (num i in stream) {}
 }
 ''', [
-      error(HintCode.UNUSED_LOCAL_VARIABLE, 51, 1),
-    ]);
-  }
-
-  test_bug21912() async {
-    await assertErrorsInCode('''
-class A {}
-class B extends A {}
-
-typedef T Function2<S, T>(S z);
-typedef B AToB(A x);
-typedef A BToA(B x);
-
-void main() {
-  {
-    Function2<Function2<A, B>, Function2<B, A>> t1;
-    Function2<AToB, BToA> t2;
-
-    Function2<Function2<int, double>, Function2<int, double>> left;
-
-    left = t1;
-    left = t2;
-  }
-}
-''', [
-      error(HintCode.UNUSED_LOCAL_VARIABLE, 271, 4),
-      error(CompileTimeErrorCode.INVALID_ASSIGNMENT, 289, 2),
-      error(CompileTimeErrorCode.INVALID_ASSIGNMENT, 304, 2),
+      error(HintCode.UNUSED_LOCAL_VARIABLE, 47, 1),
     ]);
   }
 
@@ -201,16 +138,6 @@
     ]);
   }
 
-  test_forIn_downcast() async {
-    await assertErrorsInCode('''
-f() {
-  for (int i in <num>[]) {}
-}
-''', [
-      error(HintCode.UNUSED_LOCAL_VARIABLE, 17, 1),
-    ]);
-  }
-
   test_forIn_dynamic() async {
     await assertErrorsInCode('''
 f() {
@@ -278,12 +205,11 @@
 
   test_forIn_object() async {
     await assertErrorsInCode('''
-f() {
-  Object o; // Could be [].
+f(List o) { // Could be [].
   for (var i in o) {}
 }
 ''', [
-      error(HintCode.UNUSED_LOCAL_VARIABLE, 45, 1),
+      error(HintCode.UNUSED_LOCAL_VARIABLE, 39, 1),
     ]);
   }
 
@@ -322,80 +248,66 @@
     ]);
   }
 
-  // TODO(srawlins) Figure out what to do with the rest of these tests.
-  //  The names do not correspond to diagnostic codes, so it isn't clear what
-  //  they're testing.
-
   test_typePromotion_booleanAnd_useInRight_accessedInClosureRight_mutated() async {
     await assertErrorsInCode(r'''
 callMe(f()) { f(); }
-main(Object p) {
+f(Object p) {
   (p is String) && callMe(() { p.length; });
   p = 0;
 }
 ''', [
-      error(CompileTimeErrorCode.UNDEFINED_GETTER, 71, 6),
-    ]);
-  }
-
-  test_typePromotion_booleanAnd_useInRight_mutatedInLeft() async {
-    await assertErrorsInCode(r'''
-main(Object p) {
-  ((p is String) && ((p = 42) == 42)) && p.length != 0;
-}
-''', [
-      error(CompileTimeErrorCode.UNDEFINED_GETTER, 60, 6),
-    ]);
-  }
-
-  test_typePromotion_booleanAnd_useInRight_mutatedInRight() async {
-    await assertErrorsInCode(r'''
-main(Object p) {
-  (p is String) && (((p = 42) == 42) && p.length != 0);
-}
-''', [
-      error(CompileTimeErrorCode.UNDEFINED_GETTER, 59, 6),
-    ]);
-  }
-
-  test_typePromotion_conditional_useInThen_accessedInClosure_hasAssignment_after() async {
-    await assertErrorsInCode(r'''
-callMe(f()) { f(); }
-main(Object p) {
-  p is String ? callMe(() { p.length; }) : 0;
-  p = 42;
-}
-''', [
       error(CompileTimeErrorCode.UNDEFINED_GETTER, 68, 6),
     ]);
   }
 
+  test_typePromotion_booleanAnd_useInRight_mutatedInLeft() async {
+    await assertErrorsInCode(r'''
+f(Object p) {
+  ((p is String) && ((p = 42) == 42)) && p.length != 0;
+}
+''', [
+      error(CompileTimeErrorCode.UNDEFINED_GETTER, 57, 6),
+    ]);
+  }
+
+  test_typePromotion_booleanAnd_useInRight_mutatedInRight() async {
+    await assertErrorsInCode(r'''
+f(Object p) {
+  (p is String) && (((p = 42) == 42) && p.length != 0);
+}
+''', [
+      error(CompileTimeErrorCode.UNDEFINED_GETTER, 56, 6),
+    ]);
+  }
+
+  test_typePromotion_conditional_useInThen_accessedInClosure_hasAssignment_after() async {
+    await assertErrorsInCode(r'''
+callMe(f()) { f(); }
+g(Object p) {
+  p is String ? callMe(() { p.length; }) : 0;
+  p = 42;
+}
+''', [
+      error(CompileTimeErrorCode.UNDEFINED_GETTER, 65, 6),
+    ]);
+  }
+
   test_typePromotion_conditional_useInThen_accessedInClosure_hasAssignment_before() async {
     await assertErrorsInCode(r'''
 callMe(f()) { f(); }
-main(Object p) {
+g(Object p) {
   p = 42;
   p is String ? callMe(() { p.length; }) : 0;
 }
 ''', [
-      error(CompileTimeErrorCode.UNDEFINED_GETTER, 78, 6),
-    ]);
-  }
-
-  test_typePromotion_conditional_useInThen_hasAssignment() async {
-    await assertErrorsInCode(r'''
-main(Object p) {
-  p is String ? (p.length + (p = 42)) : 0;
-}
-''', [
-      error(CompileTimeErrorCode.UNDEFINED_GETTER, 36, 6),
+      error(CompileTimeErrorCode.UNDEFINED_GETTER, 75, 6),
     ]);
   }
 
   test_typePromotion_if_accessedInClosure_hasAssignment() async {
     await assertErrorsInCode(r'''
 callMe(f()) { f(); }
-main(Object p) {
+f(Object p) {
   if (p is String) {
     callMe(() {
       p.length;
@@ -404,19 +316,7 @@
   p = 0;
 }
 ''', [
-      error(CompileTimeErrorCode.UNDEFINED_GETTER, 83, 6),
-    ]);
-  }
-
-  test_typePromotion_if_and_right_hasAssignment() async {
-    await assertErrorsInCode(r'''
-main(Object p) {
-  if (p is String && (p = null) == null) {
-    p.length;
-  }
-}
-''', [
-      error(CompileTimeErrorCode.UNDEFINED_GETTER, 66, 6),
+      error(CompileTimeErrorCode.UNDEFINED_GETTER, 80, 6),
     ]);
   }
 
@@ -428,13 +328,13 @@
   var b;
 }
 
-main(A<V> p) {
+f(A<V> p) {
   if (p is B) {
     p.b;
   }
 }
 ''', [
-      error(CompileTimeErrorCode.UNDEFINED_GETTER, 100, 1),
+      error(CompileTimeErrorCode.UNDEFINED_GETTER, 97, 1),
     ]);
   }
 
@@ -446,93 +346,53 @@
   var b;
 }
 
-main(A<V> p) {
+f(A<V> p) {
   if (p is B<int>) {
     p.b;
   }
 }
 ''', [
-      error(CompileTimeErrorCode.UNDEFINED_GETTER, 105, 1),
-    ]);
-  }
-
-  test_typePromotion_if_hasAssignment_after() async {
-    await assertErrorsInCode(r'''
-main(Object p) {
-  if (p is String) {
-    p.length;
-    p = 0;
-  }
-}
-''', [
-      error(CompileTimeErrorCode.UNDEFINED_GETTER, 44, 6),
+      error(CompileTimeErrorCode.UNDEFINED_GETTER, 102, 1),
     ]);
   }
 
   test_typePromotion_if_hasAssignment_before() async {
     await assertErrorsInCode(r'''
-main(Object p) {
+f(Object p) {
   if (p is String) {
     p = 0;
     p.length;
   }
 }
 ''', [
-      error(CompileTimeErrorCode.UNDEFINED_GETTER, 55, 6),
-    ]);
-  }
-
-  test_typePromotion_if_hasAssignment_inClosure_anonymous_after() async {
-    await assertErrorsInCode(r'''
-main(Object p) {
-  if (p is String) {
-    p.length;
-  }
-  () {p = 0;};
-}
-''', [
-      error(CompileTimeErrorCode.UNDEFINED_GETTER, 44, 6),
+      error(CompileTimeErrorCode.UNDEFINED_GETTER, 52, 6),
     ]);
   }
 
   test_typePromotion_if_hasAssignment_inClosure_anonymous_before() async {
     await assertErrorsInCode(r'''
-main(Object p) {
+f(Object p) {
   () {p = 0;};
   if (p is String) {
     p.length;
   }
 }
 ''', [
-      error(CompileTimeErrorCode.UNDEFINED_GETTER, 59, 6),
-    ]);
-  }
-
-  test_typePromotion_if_hasAssignment_inClosure_function_after() async {
-    await assertErrorsInCode(r'''
-main(Object p) {
-  if (p is String) {
-    p.length;
-  }
-  f() {p = 0;};
-}
-''', [
-      error(CompileTimeErrorCode.UNDEFINED_GETTER, 44, 6),
-      error(HintCode.UNUSED_ELEMENT, 58, 1),
+      error(CompileTimeErrorCode.UNDEFINED_GETTER, 56, 6),
     ]);
   }
 
   test_typePromotion_if_hasAssignment_inClosure_function_before() async {
     await assertErrorsInCode(r'''
-main(Object p) {
+g(Object p) {
   f() {p = 0;};
   if (p is String) {
     p.length;
   }
 }
 ''', [
-      error(HintCode.UNUSED_ELEMENT, 19, 1),
-      error(CompileTimeErrorCode.UNDEFINED_GETTER, 60, 6),
+      error(HintCode.UNUSED_ELEMENT, 16, 1),
+      error(CompileTimeErrorCode.UNDEFINED_GETTER, 57, 6),
     ]);
   }
 
@@ -544,13 +404,13 @@
   var b;
 }
 
-main(A<V> p) {
+f(A<V> p) {
   if (p is B) {
     p.b;
   }
 }
 ''', [
-      error(CompileTimeErrorCode.UNDEFINED_GETTER, 103, 1),
+      error(CompileTimeErrorCode.UNDEFINED_GETTER, 100, 1),
     ]);
   }
 
@@ -562,26 +422,162 @@
   var b;
 }
 
-main(A<V> p) {
+f(A<V> p) {
   if (p is B) {
     p.b;
   }
 }
 ''', [
-      error(CompileTimeErrorCode.UNDEFINED_GETTER, 112, 1),
+      error(CompileTimeErrorCode.UNDEFINED_GETTER, 109, 1),
     ]);
   }
 
   test_wrongNumberOfTypeArguments() async {
     await assertErrorsInCode(r'''
 class A<E> {
-  E element;
+  late E element;
 }
-main(A<NoSuchType> a) {
+g(A<NoSuchType> a) {
   a.element.anyGetterExistsInDynamic;
 }
 ''', [
-      error(CompileTimeErrorCode.NON_TYPE_AS_TYPE_ARGUMENT, 35, 10),
+      error(CompileTimeErrorCode.NON_TYPE_AS_TYPE_ARGUMENT, 37, 10),
+    ]);
+  }
+}
+
+@reflectiveTest
+class StaticTypeWarningCodeWithoutNullSafetyTest
+    extends PubPackageResolutionTest with WithoutNullSafetyMixin {
+  test_assert_message_suppresses_type_promotion() async {
+    // If a variable is assigned to inside the expression for an assert
+    // message, type promotion should be suppressed, just as it would be if the
+    // assignment occurred outside an assert statement.  (Note that it is a
+    // dubious practice for the computation of an assert message to have side
+    // effects, since it is only evaluated if the assert fails).
+    await assertErrorsInCode('''
+class C {
+  void foo() {}
+}
+
+f(Object x) {
+  if (x is C) {
+    x.foo();
+    assert(true, () { x = new C(); return 'msg'; }());
+  }
+}
+''', [
+      error(CompileTimeErrorCode.UNDEFINED_METHOD, 65, 3),
+    ]);
+  }
+
+  test_await_flattened() async {
+    await assertErrorsInCode('''
+Future<Future<int>> ffi() => null;
+f() async {
+  Future<int> b = await ffi(); 
+}
+''', [
+      error(HintCode.UNUSED_LOCAL_VARIABLE, 61, 1),
+    ]);
+  }
+
+  test_bug21912() async {
+    await assertErrorsInCode('''
+class A {}
+class B extends A {}
+
+typedef T Function2<S, T>(S z);
+typedef B AToB(A x);
+typedef A BToA(B x);
+
+void main() {
+  {
+    Function2<Function2<A, B>, Function2<B, A>> t1;
+    Function2<AToB, BToA> t2;
+
+    Function2<Function2<int, double>, Function2<int, double>> left;
+
+    left = t1;
+    left = t2;
+  }
+}
+''', [
+      error(HintCode.UNUSED_LOCAL_VARIABLE, 271, 4),
+      error(CompileTimeErrorCode.INVALID_ASSIGNMENT, 289, 2),
+      error(CompileTimeErrorCode.INVALID_ASSIGNMENT, 304, 2),
+    ]);
+  }
+
+  test_forIn_downcast() async {
+    await assertErrorsInCode('''
+f() {
+  for (int i in <num>[]) {}
+}
+''', [
+      error(HintCode.UNUSED_LOCAL_VARIABLE, 17, 1),
+    ]);
+  }
+
+  test_typePromotion_conditional_useInThen_hasAssignment() async {
+    await assertErrorsInCode(r'''
+f(Object p) {
+  p is String ? (p.length + (p = 42)) : 0;
+}
+''', [
+      error(CompileTimeErrorCode.UNDEFINED_GETTER, 33, 6),
+    ]);
+  }
+
+  test_typePromotion_if_and_right_hasAssignment() async {
+    await assertErrorsInCode(r'''
+f(Object p) {
+  if (p is String && (p = null) == null) {
+    p.length;
+  }
+}
+''', [
+      error(CompileTimeErrorCode.UNDEFINED_GETTER, 63, 6),
+    ]);
+  }
+
+  test_typePromotion_if_hasAssignment_after() async {
+    await assertErrorsInCode(r'''
+f(Object p) {
+  if (p is String) {
+    p.length;
+    p = 0;
+  }
+}
+''', [
+      error(CompileTimeErrorCode.UNDEFINED_GETTER, 41, 6),
+    ]);
+  }
+
+  test_typePromotion_if_hasAssignment_inClosure_anonymous_after() async {
+    await assertErrorsInCode(r'''
+f(Object p) {
+  if (p is String) {
+    p.length;
+  }
+  () {p = 0;};
+}
+''', [
+      error(CompileTimeErrorCode.UNDEFINED_GETTER, 41, 6),
+    ]);
+  }
+
+  test_typePromotion_if_hasAssignment_inClosure_function_after() async {
+    await assertErrorsInCode(r'''
+g(Object p) {
+  if (p is String) {
+    p.length;
+  }
+  f() {p = 0;};
+}
+''', [
+      error(CompileTimeErrorCode.UNDEFINED_GETTER, 41, 6),
+      error(HintCode.UNUSED_ELEMENT, 55, 1),
     ]);
   }
 }
diff --git a/pkg/analyzer/test/generated/strong_mode_test.dart b/pkg/analyzer/test/generated/strong_mode_test.dart
index 2364704..5954810 100644
--- a/pkg/analyzer/test/generated/strong_mode_test.dart
+++ b/pkg/analyzer/test/generated/strong_mode_test.dart
@@ -26,7 +26,10 @@
 
 /// Strong mode static analyzer local type inference tests
 @reflectiveTest
-class StrongModeLocalInferenceTest extends PubPackageResolutionTest {
+class StrongModeLocalInferenceTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
+  // TODO(https://github.com/dart-lang/sdk/issues/44666): Use null safety in
+  //  test cases.
   TypeAssertions? _assertions;
 
   late final Asserter<DartType> _isDynamic;
diff --git a/pkg/analyzer/test/src/dart/analysis/dependency/base.dart b/pkg/analyzer/test/src/dart/analysis/dependency/base.dart
index 5581413..4d09fb6 100644
--- a/pkg/analyzer/test/src/dart/analysis/dependency/base.dart
+++ b/pkg/analyzer/test/src/dart/analysis/dependency/base.dart
@@ -9,8 +9,10 @@
 
 import '../../resolution/context_collection_resolution.dart';
 
-class BaseDependencyTest extends PubPackageResolutionTest {
-//  DependencyTracker tracker;
+class BaseDependencyTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
+  // TODO(https://github.com/dart-lang/sdk/issues/44666): Use null safety in
+  //  test cases.
   late final String a;
   late final String b;
   late final String c;
diff --git a/pkg/analyzer/test/src/dart/analysis/driver_resolution_test.dart b/pkg/analyzer/test/src/dart/analysis/driver_resolution_test.dart
index 020f3a0..de3eeed 100644
--- a/pkg/analyzer/test/src/dart/analysis/driver_resolution_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/driver_resolution_test.dart
@@ -35,7 +35,9 @@
 /// Integration tests for resolution.
 @reflectiveTest
 class AnalysisDriverResolutionTest extends PubPackageResolutionTest
-    with ElementsTypesMixin {
+    with WithoutNullSafetyMixin, ElementsTypesMixin {
+  // TODO(https://github.com/dart-lang/sdk/issues/44666): Use null safety in
+  //  test cases.
   void assertDeclaredVariableType(SimpleIdentifier node, String expected) {
     var element = node.staticElement as VariableElement;
     assertType(element.type, expected);
diff --git a/pkg/analyzer/test/src/dart/analysis/index_test.dart b/pkg/analyzer/test/src/dart/analysis/index_test.dart
index 808c5fb..8c190aa 100644
--- a/pkg/analyzer/test/src/dart/analysis/index_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/index_test.dart
@@ -35,7 +35,9 @@
 
 @reflectiveTest
 class IndexTest extends PubPackageResolutionTest
-    with _IndexMixin, WithNonFunctionTypeAliasesMixin {
+    with WithoutNullSafetyMixin, _IndexMixin, WithNonFunctionTypeAliasesMixin {
+  // TODO(https://github.com/dart-lang/sdk/issues/44666): Use null safety in
+  //  test cases.
   test_fieldFormalParameter_noSuchField() async {
     await _indexTestUnit('''
 class B<T> {
diff --git a/pkg/analyzer/test/src/dart/constant/evaluation_test.dart b/pkg/analyzer/test/src/dart/constant/evaluation_test.dart
index d45c744..86367f8 100644
--- a/pkg/analyzer/test/src/dart/constant/evaluation_test.dart
+++ b/pkg/analyzer/test/src/dart/constant/evaluation_test.dart
@@ -1016,7 +1016,10 @@
   }
 }
 
-class ConstantVisitorTestSupport extends PubPackageResolutionTest {
+class ConstantVisitorTestSupport extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
+  // TODO(https://github.com/dart-lang/sdk/issues/44666): Use null safety in
+  //  test cases.
   DartObjectImpl _evaluateConstant(
     String name, {
     List<ErrorCode>? errorCodes,
diff --git a/pkg/analyzer/test/src/dart/constant/potentially_constant_test.dart b/pkg/analyzer/test/src/dart/constant/potentially_constant_test.dart
index 9951612..529c2fb 100644
--- a/pkg/analyzer/test/src/dart/constant/potentially_constant_test.dart
+++ b/pkg/analyzer/test/src/dart/constant/potentially_constant_test.dart
@@ -179,7 +179,10 @@
 }
 
 @reflectiveTest
-class PotentiallyConstantTest extends PubPackageResolutionTest {
+class PotentiallyConstantTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
+  // TODO(https://github.com/dart-lang/sdk/issues/44666): Use null safety in
+  //  test cases.
   test_adjacentStrings() async {
     await _assertConst(r'''
 var x = 'a' 'b';
diff --git a/pkg/analyzer/test/src/dart/element/inheritance_manager3_test.dart b/pkg/analyzer/test/src/dart/element/inheritance_manager3_test.dart
index d584afe..bb83b55 100644
--- a/pkg/analyzer/test/src/dart/element/inheritance_manager3_test.dart
+++ b/pkg/analyzer/test/src/dart/element/inheritance_manager3_test.dart
@@ -1281,7 +1281,10 @@
   }
 }
 
-class _InheritanceManager3Base extends PubPackageResolutionTest {
+class _InheritanceManager3Base extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
+  // TODO(https://github.com/dart-lang/sdk/issues/44666): Use null safety in
+  //  test cases.
   late final InheritanceManager3 manager;
 
   @override
diff --git a/pkg/analyzer/test/src/dart/resolution/assignment_test.dart b/pkg/analyzer/test/src/dart/resolution/assignment_test.dart
index f5bd0cd..5a639d1 100644
--- a/pkg/analyzer/test/src/dart/resolution/assignment_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/assignment_test.dart
@@ -12,7 +12,6 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(AssignmentDriverResolutionTest);
-    defineReflectiveTests(AssignmentDriverResolutionWithNullSafetyTest);
     defineReflectiveTests(
       AssignmentDriverResolutionWithNonFunctionTypeAliasesTest,
     );
@@ -2425,8 +2424,3 @@
     assertType(assignment.rightHandSide, 'int');
   }
 }
-
-@reflectiveTest
-class AssignmentDriverResolutionWithNullSafetyTest
-    extends PubPackageResolutionTest
-    with WithNullSafetyMixin, AssignmentDriverResolutionTestCases {}
diff --git a/pkg/analyzer/test/src/dart/resolution/ast_rewrite_test.dart b/pkg/analyzer/test/src/dart/resolution/ast_rewrite_test.dart
index ab1f6c6..f9664da 100644
--- a/pkg/analyzer/test/src/dart/resolution/ast_rewrite_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/ast_rewrite_test.dart
@@ -392,7 +392,12 @@
 @reflectiveTest
 class AstRewriteMethodInvocationWithNonFunctionTypeAliasesTest
     extends PubPackageResolutionTest
-    with WithNonFunctionTypeAliasesMixin, AstRewriteMethodInvocationTestCases {
+    with
+        WithoutNullSafetyMixin,
+        WithNonFunctionTypeAliasesMixin,
+        AstRewriteMethodInvocationTestCases {
+  // TODO(https://github.com/dart-lang/sdk/issues/44666): Use null safety in
+  //  test cases.
   test_targetNull_typeAlias_interfaceType() async {
     await assertNoErrorsInCode(r'''
 class A<T, U> {
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 e2baade..e29f77d 100644
--- a/pkg/analyzer/test/src/dart/resolution/await_expression_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/await_expression_test.dart
@@ -14,7 +14,8 @@
 }
 
 @reflectiveTest
-class AwaitExpressionResolutionTest extends PubPackageResolutionTest {
+class AwaitExpressionResolutionTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_future() async {
     await assertNoErrorsInCode(r'''
 f(Future<int> a) async {
diff --git a/pkg/analyzer/test/src/dart/resolution/binary_expression_test.dart b/pkg/analyzer/test/src/dart/resolution/binary_expression_test.dart
index 7c699c7..99c85ca 100644
--- a/pkg/analyzer/test/src/dart/resolution/binary_expression_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/binary_expression_test.dart
@@ -12,13 +12,104 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(BinaryExpressionResolutionTest);
-    defineReflectiveTests(BinaryExpressionResolutionWithNullSafetyTest);
   });
 }
 
 @reflectiveTest
 class BinaryExpressionResolutionTest extends PubPackageResolutionTest
-    with BinaryExpressionResolutionTestCases {}
+    with BinaryExpressionResolutionTestCases {
+  test_ifNull_left_nullableContext() async {
+    await assertNoErrorsInCode(r'''
+T f<T>(T t) => t;
+
+int g() => f(null) ?? 0;
+''');
+
+    assertMethodInvocation2(
+      findNode.methodInvocation('f(null)'),
+      element: findElement.topFunction('f'),
+      typeArgumentTypes: ['int?'],
+      invokeType: 'int? Function(int?)',
+      type: 'int?',
+    );
+
+    assertBinaryExpression(
+      findNode.binary('?? 0'),
+      element: null,
+      type: 'int',
+    );
+  }
+
+  test_ifNull_nullableInt_int() async {
+    await assertNoErrorsInCode(r'''
+void f(int? x, int y) {
+  x ?? y;
+}
+''');
+
+    assertBinaryExpression(
+      findNode.binary('x ?? y'),
+      element: null,
+      type: 'int',
+    );
+  }
+
+  test_ifNull_nullableInt_nullableDouble() async {
+    await assertNoErrorsInCode(r'''
+void f(int? x, double? y) {
+  x ?? y;
+}
+''');
+
+    assertBinaryExpression(
+      findNode.binary('x ?? y'),
+      element: null,
+      type: 'num?',
+    );
+  }
+
+  test_ifNull_nullableInt_nullableInt() async {
+    await assertNoErrorsInCode(r'''
+void f(int? x) {
+  x ?? x;
+}
+''');
+
+    assertBinaryExpression(
+      findNode.binary('x ?? x'),
+      element: null,
+      type: 'int?',
+    );
+  }
+
+  test_plus_int_never() async {
+    await assertNoErrorsInCode('''
+f(int a, Never b) {
+  a + b;
+}
+''');
+
+    assertBinaryExpression(findNode.binary('a + b'),
+        element: numElement.getMethod('+'), type: 'num');
+  }
+
+  test_plus_never_int() async {
+    await assertErrorsInCode(r'''
+f(Never a, int b) {
+  a + b;
+}
+''', [
+      error(HintCode.RECEIVER_OF_TYPE_NEVER, 22, 1),
+      error(HintCode.DEAD_CODE, 26, 2),
+    ]);
+
+    assertBinaryExpression(
+      findNode.binary('a + b'),
+      element: isNull,
+      type: 'Never',
+    );
+  }
+}
 
 mixin BinaryExpressionResolutionTestCases on PubPackageResolutionTest {
   test_bangEq() async {
@@ -701,100 +792,3 @@
     );
   }
 }
-
-@reflectiveTest
-class BinaryExpressionResolutionWithNullSafetyTest
-    extends PubPackageResolutionTest
-    with WithNullSafetyMixin, BinaryExpressionResolutionTestCases {
-  test_ifNull_left_nullableContext() async {
-    await assertNoErrorsInCode(r'''
-T f<T>(T t) => t;
-
-int g() => f(null) ?? 0;
-''');
-
-    assertMethodInvocation2(
-      findNode.methodInvocation('f(null)'),
-      element: findElement.topFunction('f'),
-      typeArgumentTypes: ['int?'],
-      invokeType: 'int? Function(int?)',
-      type: 'int?',
-    );
-
-    assertBinaryExpression(
-      findNode.binary('?? 0'),
-      element: null,
-      type: 'int',
-    );
-  }
-
-  test_ifNull_nullableInt_int() async {
-    await assertNoErrorsInCode(r'''
-void f(int? x, int y) {
-  x ?? y;
-}
-''');
-
-    assertBinaryExpression(
-      findNode.binary('x ?? y'),
-      element: null,
-      type: 'int',
-    );
-  }
-
-  test_ifNull_nullableInt_nullableDouble() async {
-    await assertNoErrorsInCode(r'''
-void f(int? x, double? y) {
-  x ?? y;
-}
-''');
-
-    assertBinaryExpression(
-      findNode.binary('x ?? y'),
-      element: null,
-      type: 'num?',
-    );
-  }
-
-  test_ifNull_nullableInt_nullableInt() async {
-    await assertNoErrorsInCode(r'''
-void f(int? x) {
-  x ?? x;
-}
-''');
-
-    assertBinaryExpression(
-      findNode.binary('x ?? x'),
-      element: null,
-      type: 'int?',
-    );
-  }
-
-  test_plus_int_never() async {
-    await assertNoErrorsInCode('''
-f(int a, Never b) {
-  a + b;
-}
-''');
-
-    assertBinaryExpression(findNode.binary('a + b'),
-        element: numElement.getMethod('+'), type: 'num');
-  }
-
-  test_plus_never_int() async {
-    await assertErrorsInCode(r'''
-f(Never a, int b) {
-  a + b;
-}
-''', [
-      error(HintCode.RECEIVER_OF_TYPE_NEVER, 22, 1),
-      error(HintCode.DEAD_CODE, 26, 2),
-    ]);
-
-    assertBinaryExpression(
-      findNode.binary('a + b'),
-      element: isNull,
-      type: 'Never',
-    );
-  }
-}
diff --git a/pkg/analyzer/test/src/dart/resolution/class_alias_test.dart b/pkg/analyzer/test/src/dart/resolution/class_alias_test.dart
index d2ae9a5..9429125 100644
--- a/pkg/analyzer/test/src/dart/resolution/class_alias_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/class_alias_test.dart
@@ -16,7 +16,9 @@
 
 @reflectiveTest
 class ClassAliasDriverResolutionTest extends PubPackageResolutionTest
-    with ElementsTypesMixin {
+    with WithoutNullSafetyMixin, ElementsTypesMixin {
+  // TODO(https://github.com/dart-lang/sdk/issues/44666): Use null safety in
+  //  test cases.
   test_defaultConstructor() async {
     await assertNoErrorsInCode(r'''
 class A {}
diff --git a/pkg/analyzer/test/src/dart/resolution/class_test.dart b/pkg/analyzer/test/src/dart/resolution/class_test.dart
index c542921..f2bff29 100644
--- a/pkg/analyzer/test/src/dart/resolution/class_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/class_test.dart
@@ -18,7 +18,9 @@
 
 @reflectiveTest
 class ClassDriverResolutionTest extends PubPackageResolutionTest
-    with ElementsTypesMixin {
+    with WithoutNullSafetyMixin, ElementsTypesMixin {
+  // TODO(https://github.com/dart-lang/sdk/issues/44666): Use null safety in
+  //  test cases.
   test_element_allSupertypes() async {
     await assertNoErrorsInCode(r'''
 class A {}
diff --git a/pkg/analyzer/test/src/dart/resolution/constant_test.dart b/pkg/analyzer/test/src/dart/resolution/constant_test.dart
index 7d9f46b..5ee85c3 100644
--- a/pkg/analyzer/test/src/dart/resolution/constant_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/constant_test.dart
@@ -21,7 +21,8 @@
 }
 
 @reflectiveTest
-class ConstantResolutionTest extends PubPackageResolutionTest {
+class ConstantResolutionTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_constantValue_defaultParameter_noDefaultValue() async {
     newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
diff --git a/pkg/analyzer/test/src/dart/resolution/context_collection_resolution.dart b/pkg/analyzer/test/src/dart/resolution/context_collection_resolution.dart
index a0be018..ab0d50f 100644
--- a/pkg/analyzer/test/src/dart/resolution/context_collection_resolution.dart
+++ b/pkg/analyzer/test/src/dart/resolution/context_collection_resolution.dart
@@ -247,12 +247,15 @@
   String get testFilePath => '$testPackageLibPath/test.dart';
 
   /// The language version to use by default for `package:test`.
-  String? get testPackageLanguageVersion => '2.9';
+  String? get testPackageLanguageVersion => '2.12';
 
   String get testPackageLibPath => '$testPackageRootPath/lib';
 
   String get testPackageRootPath => '$workspaceRootPath/test';
 
+  @override
+  bool get typeToStringWithNullability => true;
+
   String get workspaceRootPath => '/home';
 
   @override
@@ -346,9 +349,6 @@
   @override
   String? get testPackageLanguageVersion => null;
 
-  @override
-  bool get typeToStringWithNullability => true;
-
   @nonVirtual
   @override
   void setUp() {
@@ -363,9 +363,19 @@
 }
 
 mixin WithNullSafetyMixin on PubPackageResolutionTest {
+  // TODO(https://github.com/dart-lang/sdk/issues/44666): This mixin is a no-op
+  // on PubPackageResolutionTest; remove its usage and remove it.
   @override
-  String? get testPackageLanguageVersion => null;
+  String? get testPackageLanguageVersion => '2.12';
 
   @override
   bool get typeToStringWithNullability => true;
 }
+
+mixin WithoutNullSafetyMixin on PubPackageResolutionTest {
+  @override
+  String? get testPackageLanguageVersion => '2.9';
+
+  @override
+  bool get typeToStringWithNullability => false;
+}
diff --git a/pkg/analyzer/test/src/dart/resolution/export_test.dart b/pkg/analyzer/test/src/dart/resolution/export_test.dart
index fe41eaf..21640db 100644
--- a/pkg/analyzer/test/src/dart/resolution/export_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/export_test.dart
@@ -14,7 +14,10 @@
 }
 
 @reflectiveTest
-class ExportResolutionTest extends PubPackageResolutionTest {
+class ExportResolutionTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
+  // TODO(https://github.com/dart-lang/sdk/issues/44666): Use null safety in
+  //  test cases.
   test_configurations_default() async {
     newFile('$testPackageLibPath/a.dart', content: 'class A {}');
     newFile('$testPackageLibPath/a_html.dart', content: '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 f0ee58d..8e94415 100644
--- a/pkg/analyzer/test/src/dart/resolution/extension_method_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/extension_method_test.dart
@@ -27,7 +27,8 @@
 /// Tests that show that extension declarations and the members inside them are
 /// resolved correctly.
 @reflectiveTest
-class ExtensionMethodsDeclarationTest extends PubPackageResolutionTest {
+class ExtensionMethodsDeclarationTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   @override
   List<MockSdkLibrary> get additionalMockSdkLibraries => [
         MockSdkLibrary([
@@ -355,7 +356,8 @@
 /// Tests that show that extension declarations support all of the possible
 /// types in the `on` clause.
 @reflectiveTest
-class ExtensionMethodsExtendedTypeTest extends PubPackageResolutionTest {
+class ExtensionMethodsExtendedTypeTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_named_generic() async {
     await assertNoErrorsInCode('''
 class C<T> {}
@@ -482,7 +484,8 @@
 /// Tests that extension members can be correctly resolved when referenced
 /// by code external to the extension declaration.
 @reflectiveTest
-class ExtensionMethodsExternalReferenceTest extends PubPackageResolutionTest {
+class ExtensionMethodsExternalReferenceTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   /// Corresponds to: extension_member_resolution_t07
   test_dynamicInvocation() async {
     await assertNoErrorsInCode(r'''
@@ -1747,7 +1750,8 @@
 /// Tests that extension members can be correctly resolved when referenced
 /// by code internal to (within) the extension declaration.
 @reflectiveTest
-class ExtensionMethodsInternalReferenceTest extends PubPackageResolutionTest {
+class ExtensionMethodsInternalReferenceTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_instance_call() async {
     await assertNoErrorsInCode('''
 class C {}
diff --git a/pkg/analyzer/test/src/dart/resolution/extension_override_test.dart b/pkg/analyzer/test/src/dart/resolution/extension_override_test.dart
index 7946260..eea3223 100644
--- a/pkg/analyzer/test/src/dart/resolution/extension_override_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/extension_override_test.dart
@@ -19,7 +19,8 @@
 }
 
 @reflectiveTest
-class ExtensionOverrideTest extends PubPackageResolutionTest {
+class ExtensionOverrideTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   late ExtensionElement extension;
   late ExtensionOverride extensionOverride;
 
diff --git a/pkg/analyzer/test/src/dart/resolution/field_test.dart b/pkg/analyzer/test/src/dart/resolution/field_test.dart
index 431a369..1ff7e4e 100644
--- a/pkg/analyzer/test/src/dart/resolution/field_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/field_test.dart
@@ -11,7 +11,6 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(FieldTest);
-    defineReflectiveTests(FieldWithNullSafetyTest);
   });
 }
 
@@ -63,19 +62,6 @@
     assertType(findElement.field('f').type, 'dynamic');
   }
 
-  test_type_inferred_null() async {
-    await resolveTestCode('''
-class A {
-  var f = null;
-}
-''');
-    assertType(findElement.field('f').type, 'dynamic');
-  }
-}
-
-@reflectiveTest
-class FieldWithNullSafetyTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin {
   test_type_inferred_nonNullify() async {
     newFile('$testPackageLibPath/a.dart', content: r'''
 // @dart = 2.7
@@ -94,4 +80,13 @@
 
     assertType(findElement.field('f').type, 'int');
   }
+
+  test_type_inferred_null() async {
+    await resolveTestCode('''
+class A {
+  var f = null;
+}
+''');
+    assertType(findElement.field('f').type, 'dynamic');
+  }
 }
diff --git a/pkg/analyzer/test/src/dart/resolution/for_element_test.dart b/pkg/analyzer/test/src/dart/resolution/for_element_test.dart
index 5094df7..06f0e44 100644
--- a/pkg/analyzer/test/src/dart/resolution/for_element_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/for_element_test.dart
@@ -9,13 +9,32 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(ForEachElementTest);
-    defineReflectiveTests(ForEachElementWithNullSafetyTest);
     defineReflectiveTests(ForLoopElementTest);
   });
 }
 
 @reflectiveTest
-class ForEachElementTest extends PubPackageResolutionTest {
+class ForEachElementTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
+  test_optIn_fromOptOut() async {
+    newFile('$testPackageLibPath/a.dart', content: r'''
+class A implements Iterable<int> {
+  Iterator<int> iterator => throw 0;
+}
+''');
+
+    await assertNoErrorsInCode(r'''
+// @dart = 2.7
+import 'a.dart';
+
+f(A a) {
+  for (var v in a) {
+    v;
+  }
+}
+''');
+  }
+
   test_withDeclaration_scope() async {
     await assertNoErrorsInCode(r'''
 main() {
@@ -49,29 +68,6 @@
 }
 
 @reflectiveTest
-class ForEachElementWithNullSafetyTest extends ForEachElementTest
-    with WithNullSafetyMixin {
-  test_optIn_fromOptOut() async {
-    newFile('$testPackageLibPath/a.dart', content: r'''
-class A implements Iterable<int> {
-  Iterator<int> iterator => throw 0;
-}
-''');
-
-    await assertNoErrorsInCode(r'''
-// @dart = 2.7
-import 'a.dart';
-
-f(A a) {
-  for (var v in a) {
-    v;
-  }
-}
-''');
-  }
-}
-
-@reflectiveTest
 class ForLoopElementTest extends PubPackageResolutionTest {
   test_condition_rewrite() async {
     await assertNoErrorsInCode(r'''
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 8e76124..21df44e 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
@@ -15,7 +15,8 @@
 }
 
 @reflectiveTest
-class FunctionExpressionInvocationTest extends PubPackageResolutionTest {
+class FunctionExpressionInvocationTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_dynamic_withoutTypeArguments() async {
     await assertNoErrorsInCode(r'''
 main() {
diff --git a/pkg/analyzer/test/src/dart/resolution/generic_function_type_test.dart b/pkg/analyzer/test/src/dart/resolution/generic_function_type_test.dart
index a717dea..4ae2a74 100644
--- a/pkg/analyzer/test/src/dart/resolution/generic_function_type_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/generic_function_type_test.dart
@@ -29,7 +29,7 @@
   static const x = const A<bool Function()>();
 }
 
-int Function(int a) y;
+int Function(int a)? y;
 ''');
   }
 
@@ -44,7 +44,7 @@
 
 const x = const A<bool Function()>();
 
-int Function(int a) y;
+int Function(int a)? y;
 ''');
   }
 
@@ -52,7 +52,7 @@
     await assertNoErrorsInCode(r'''
 const a = 42;
 
-Function<@a T>() x;
+Function<@a T>()? x;
 ''');
     var T = findNode.typeParameter('T');
     var annotation = T.declaredElement!.metadata[0];
@@ -63,15 +63,15 @@
   /// [FunctionDeclaration], all of them are resolved correctly.
   test_typeAnnotation_function() async {
     await assertNoErrorsInCode('''
-void Function() f<T extends bool Function()>(int Function() a) {
+void Function()? f<T extends bool Function()>(int Function() a) {
   return null;
 }
 
-double Function() x;
+double Function()? x;
 ''');
     assertType(
-      findNode.genericFunctionType('void Function()'),
-      'void Function()',
+      findNode.genericFunctionType('void Function()?'),
+      'void Function()?',
     );
     assertType(
       findNode.genericFunctionType('bool Function()'),
@@ -82,8 +82,8 @@
       'int Function()',
     );
     assertType(
-      findNode.genericFunctionType('double Function()'),
-      'double Function()',
+      findNode.genericFunctionType('double Function()?'),
+      'double Function()?',
     );
   }
 
@@ -116,16 +116,16 @@
   test_typeAnnotation_method() async {
     await assertNoErrorsInCode('''
 class C {
-  void Function() m<T extends bool Function()>(int Function() a) {
+  void Function()? m<T extends bool Function()>(int Function() a) {
     return null;
   }
 }
 
-double Function() x;
+double Function()? x;
 ''');
     assertType(
-      findNode.genericFunctionType('void Function()'),
-      'void Function()',
+      findNode.genericFunctionType('void Function()?'),
+      'void Function()?',
     );
     assertType(
       findNode.genericFunctionType('bool Function()'),
@@ -136,8 +136,8 @@
       'int Function()',
     );
     assertType(
-      findNode.genericFunctionType('double Function()'),
-      'double Function()',
+      findNode.genericFunctionType('double Function()?'),
+      'double Function()?',
     );
   }
 
diff --git a/pkg/analyzer/test/src/dart/resolution/generic_type_alias_test.dart b/pkg/analyzer/test/src/dart/resolution/generic_type_alias_test.dart
index bedb4ae..0decdba 100644
--- a/pkg/analyzer/test/src/dart/resolution/generic_type_alias_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/generic_type_alias_test.dart
@@ -25,7 +25,7 @@
 
 typedef G = Function<S>();
 
-C<G> x;
+C<G>? x;
 ''', [
       error(CompileTimeErrorCode.GENERIC_FUNCTION_TYPE_CANNOT_BE_TYPE_ARGUMENT,
           45, 1),
@@ -36,7 +36,7 @@
     await assertErrorsInCode(r'''
 class C<T> {}
 
-C<Function<S>()> x;
+C<Function<S>()>? x;
 ''', [
       error(CompileTimeErrorCode.GENERIC_FUNCTION_TYPE_CANNOT_BE_TYPE_ARGUMENT,
           17, 13),
@@ -58,14 +58,14 @@
 
   test_genericFunctionTypeCannotBeTypeArgument_literal_functionType() async {
     await assertErrorsInCode(r'''
-T Function<T>(T) f;
+late T Function<T>(T?) f;
 
 main() {
   f<Function<S>()>(null);
 }
 ''', [
       error(CompileTimeErrorCode.GENERIC_FUNCTION_TYPE_CANNOT_BE_TYPE_ARGUMENT,
-          34, 13),
+          40, 13),
     ]);
   }
 
@@ -88,7 +88,7 @@
     await assertErrorsInCode(r'''
 typedef T F<T>(T t);
 
-F<Function<S>()> x;
+F<Function<S>()>? x;
 ''', [
       error(CompileTimeErrorCode.GENERIC_FUNCTION_TYPE_CANNOT_BE_TYPE_ARGUMENT,
           24, 13),
@@ -145,12 +145,12 @@
 
   test_type_element() async {
     await assertNoErrorsInCode(r'''
-G<int> g;
+G<int>? g;
 
 typedef G<T> = T Function(double);
 ''');
     var type = findElement.topVar('g').type as FunctionType;
-    assertType(type, 'int Function(double)');
+    assertType(type, 'int Function(double)?');
 
     var typedefG = findElement.typeAlias('G');
     var functionG = typedefG.aliasedElement as GenericFunctionTypeElement;
diff --git a/pkg/analyzer/test/src/dart/resolution/if_element_test.dart b/pkg/analyzer/test/src/dart/resolution/if_element_test.dart
index 7b76cf5..9eb0ae3 100644
--- a/pkg/analyzer/test/src/dart/resolution/if_element_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/if_element_test.dart
@@ -9,7 +9,6 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(IfElementTest);
-    defineReflectiveTests(IfElementWithNullSafetyTest);
   });
 }
 
@@ -31,7 +30,3 @@
     );
   }
 }
-
-@reflectiveTest
-class IfElementWithNullSafetyTest extends IfElementTest
-    with WithNullSafetyMixin {}
diff --git a/pkg/analyzer/test/src/dart/resolution/import_test.dart b/pkg/analyzer/test/src/dart/resolution/import_test.dart
index 145bae8..ff571ec 100644
--- a/pkg/analyzer/test/src/dart/resolution/import_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/import_test.dart
@@ -13,7 +13,10 @@
 }
 
 @reflectiveTest
-class ImportDirectiveResolutionTest extends PubPackageResolutionTest {
+class ImportDirectiveResolutionTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
+  // TODO(https://github.com/dart-lang/sdk/issues/44666): Use null safety in
+  //  test cases.
   test_configurations_default() async {
     newFile('$testPackageLibPath/a.dart', content: 'class A {}');
     newFile('$testPackageLibPath/a_html.dart', content: 'class A {}');
diff --git a/pkg/analyzer/test/src/dart/resolution/index_expression_test.dart b/pkg/analyzer/test/src/dart/resolution/index_expression_test.dart
index e3e0404..e10926e 100644
--- a/pkg/analyzer/test/src/dart/resolution/index_expression_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/index_expression_test.dart
@@ -10,7 +10,6 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(IndexExpressionTest);
-    defineReflectiveTests(IndexExpressionWithNullSafetyTest);
   });
 }
 
@@ -68,6 +67,36 @@
     );
   }
 
+  test_read_cascade_nullShorting() async {
+    await assertNoErrorsInCode(r'''
+class A {
+  bool operator[](int index) => false;
+}
+
+void f(A? a) {
+  a?..[0]..[1];
+}
+''');
+
+    var indexElement = findElement.method('[]');
+
+    assertIndexExpression(
+      findNode.index('..[0]'),
+      readElement: indexElement,
+      writeElement: null,
+      type: 'bool',
+    );
+
+    assertIndexExpression(
+      findNode.index('..[1]'),
+      readElement: indexElement,
+      writeElement: null,
+      type: 'bool',
+    );
+
+    assertType(findNode.cascade('a?'), 'A?');
+  }
+
   test_read_generic() async {
     await assertNoErrorsInCode(r'''
 class A<T> {
@@ -97,6 +126,28 @@
     );
   }
 
+  test_read_nullable() async {
+    await assertNoErrorsInCode(r'''
+class A {
+  bool operator[](int index) => false;
+}
+
+void f(A? a) {
+  a?[0];
+}
+''');
+
+    var indexElement = findElement.method('[]');
+
+    var indexExpression = findNode.index('a?[0]');
+    assertIndexExpression(
+      indexExpression,
+      readElement: indexElement,
+      writeElement: null,
+      type: 'bool?',
+    );
+  }
+
   test_readWrite_assignment() async {
     await assertNoErrorsInCode(r'''
 class A {
@@ -207,154 +258,6 @@
     );
   }
 
-  test_write() async {
-    await assertNoErrorsInCode(r'''
-class A {
-  void operator[]=(int index, num value) {}
-}
-
-void f(A a) {
-  a[0] = 1.2;
-}
-''');
-
-    var indexEqElement = findElement.method('[]=');
-
-    var indexExpression = findNode.index('a[0]');
-    if (hasAssignmentLeftResolution) {
-      assertIndexExpression(
-        indexExpression,
-        readElement: null,
-        writeElement: indexEqElement,
-        type: null,
-      );
-    }
-    assertParameterElement(
-      indexExpression.index,
-      indexEqElement.parameters[0],
-    );
-
-    var assignment = indexExpression.parent as AssignmentExpression;
-    assertAssignment(
-      assignment,
-      readElement: null,
-      readType: null,
-      writeElement: indexEqElement,
-      writeType: 'num',
-      operatorElement: null,
-      type: 'double',
-    );
-    assertParameterElement(
-      assignment.rightHandSide,
-      indexEqElement.parameters[1],
-    );
-  }
-
-  test_write_generic() async {
-    await assertNoErrorsInCode(r'''
-class A<T> {
-  void operator[]=(int index, T value) {}
-}
-
-void f(A<double> a) {
-  a[0] = 1.2;
-}
-''');
-
-    var indexEqElement = findElement.method('[]=');
-
-    var indexExpression = findNode.index('a[0]');
-    if (hasAssignmentLeftResolution) {
-      assertIndexExpression(
-        indexExpression,
-        readElement: null,
-        writeElement: elementMatcher(
-          indexEqElement,
-          substitution: {'T': 'double'},
-        ),
-        type: null,
-      );
-    }
-    assertParameterElement(
-      indexExpression.index,
-      indexEqElement.parameters[0],
-    );
-
-    var assignment = indexExpression.parent as AssignmentExpression;
-    assertAssignment(
-      assignment,
-      readElement: null,
-      readType: null,
-      writeElement: elementMatcher(
-        indexEqElement,
-        substitution: {'T': 'double'},
-      ),
-      writeType: 'double',
-      operatorElement: null,
-      type: 'double',
-    );
-    assertParameterElement(
-      assignment.rightHandSide,
-      indexEqElement.parameters[1],
-    );
-  }
-}
-
-@reflectiveTest
-class IndexExpressionWithNullSafetyTest extends IndexExpressionTest
-    with WithNullSafetyMixin {
-  test_read_cascade_nullShorting() async {
-    await assertNoErrorsInCode(r'''
-class A {
-  bool operator[](int index) => false;
-}
-
-void f(A? a) {
-  a?..[0]..[1];
-}
-''');
-
-    var indexElement = findElement.method('[]');
-
-    assertIndexExpression(
-      findNode.index('..[0]'),
-      readElement: indexElement,
-      writeElement: null,
-      type: 'bool',
-    );
-
-    assertIndexExpression(
-      findNode.index('..[1]'),
-      readElement: indexElement,
-      writeElement: null,
-      type: 'bool',
-    );
-
-    assertType(findNode.cascade('a?'), 'A?');
-  }
-
-  test_read_nullable() async {
-    await assertNoErrorsInCode(r'''
-class A {
-  bool operator[](int index) => false;
-}
-
-void f(A? a) {
-  a?[0];
-}
-''');
-
-    var indexElement = findElement.method('[]');
-
-    var indexExpression = findNode.index('a?[0]');
-    assertIndexExpression(
-      indexExpression,
-      readElement: indexElement,
-      writeElement: null,
-      type: 'bool?',
-    );
-  }
-
   test_readWrite_nullable() async {
     await assertNoErrorsInCode(r'''
 class A {
@@ -401,6 +304,49 @@
     );
   }
 
+  test_write() async {
+    await assertNoErrorsInCode(r'''
+class A {
+  void operator[]=(int index, num value) {}
+}
+
+void f(A a) {
+  a[0] = 1.2;
+}
+''');
+
+    var indexEqElement = findElement.method('[]=');
+
+    var indexExpression = findNode.index('a[0]');
+    if (hasAssignmentLeftResolution) {
+      assertIndexExpression(
+        indexExpression,
+        readElement: null,
+        writeElement: indexEqElement,
+        type: null,
+      );
+    }
+    assertParameterElement(
+      indexExpression.index,
+      indexEqElement.parameters[0],
+    );
+
+    var assignment = indexExpression.parent as AssignmentExpression;
+    assertAssignment(
+      assignment,
+      readElement: null,
+      readType: null,
+      writeElement: indexEqElement,
+      writeType: 'num',
+      operatorElement: null,
+      type: 'double',
+    );
+    assertParameterElement(
+      assignment.rightHandSide,
+      indexEqElement.parameters[1],
+    );
+  }
+
   test_write_cascade_nullShorting() async {
     await assertNoErrorsInCode(r'''
 class A {
@@ -453,6 +399,55 @@
     assertType(findNode.cascade('a?'), 'A?');
   }
 
+  test_write_generic() async {
+    await assertNoErrorsInCode(r'''
+class A<T> {
+  void operator[]=(int index, T value) {}
+}
+
+void f(A<double> a) {
+  a[0] = 1.2;
+}
+''');
+
+    var indexEqElement = findElement.method('[]=');
+
+    var indexExpression = findNode.index('a[0]');
+    if (hasAssignmentLeftResolution) {
+      assertIndexExpression(
+        indexExpression,
+        readElement: null,
+        writeElement: elementMatcher(
+          indexEqElement,
+          substitution: {'T': 'double'},
+        ),
+        type: null,
+      );
+    }
+    assertParameterElement(
+      indexExpression.index,
+      indexEqElement.parameters[0],
+    );
+
+    var assignment = indexExpression.parent as AssignmentExpression;
+    assertAssignment(
+      assignment,
+      readElement: null,
+      readType: null,
+      writeElement: elementMatcher(
+        indexEqElement,
+        substitution: {'T': 'double'},
+      ),
+      writeType: 'double',
+      operatorElement: null,
+      type: 'double',
+    );
+    assertParameterElement(
+      assignment.rightHandSide,
+      indexEqElement.parameters[1],
+    );
+  }
+
   test_write_nullable() async {
     await assertNoErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/dart/resolution/instance_creation_test.dart b/pkg/analyzer/test/src/dart/resolution/instance_creation_test.dart
index b37c4cb..5bf3bac 100644
--- a/pkg/analyzer/test/src/dart/resolution/instance_creation_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/instance_creation_test.dart
@@ -10,7 +10,6 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(InstanceCreationTest);
-    defineReflectiveTests(InstanceCreationWithNullSafetyTest);
   });
 }
 
@@ -171,7 +170,3 @@
     );
   }
 }
-
-@reflectiveTest
-class InstanceCreationWithNullSafetyTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin, InstanceCreationTestCases {}
diff --git a/pkg/analyzer/test/src/dart/resolution/instance_member_inference_class_test.dart b/pkg/analyzer/test/src/dart/resolution/instance_member_inference_class_test.dart
index 0516a3a..aaf0e18 100644
--- a/pkg/analyzer/test/src/dart/resolution/instance_member_inference_class_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/instance_member_inference_class_test.dart
@@ -11,7 +11,6 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(InstanceMemberInferenceClassTest);
-    defineReflectiveTests(InstanceMemberInferenceClassWithNullSafetyTest);
   });
 }
 
@@ -159,6 +158,28 @@
     _assertFieldTypeDynamic(foo);
   }
 
+  test_field_multiple_gettersSetters_final_nonNullify() async {
+    newFile('$testPackageLibPath/a.dart', content: r'''
+// @dart = 2.7
+abstract class A {
+  int get foo;
+}
+abstract class B {
+  set foo(num _);
+}
+''');
+
+    await resolveTestCode('''
+import 'a.dart';
+
+class X implements A, B {
+  final foo;
+}
+''');
+    var foo = findElement.field('foo', of: 'X');
+    _assertFieldType(foo, 'int');
+  }
+
   test_field_multiple_gettersSetters_notFinal_combined_notSame() async {
     await resolveTestCode('''
 class A {
@@ -236,6 +257,28 @@
     _assertFieldTypeDynamic(foo);
   }
 
+  test_field_multiple_gettersSetters_notFinal_nonNullify() async {
+    newFile('$testPackageLibPath/a.dart', content: r'''
+// @dart = 2.7
+abstract class A {
+  int get foo;
+}
+abstract class B {
+  set foo(int _);
+}
+''');
+
+    await resolveTestCode('''
+import 'a.dart';
+
+class X implements A, B {
+  var foo;
+}
+''');
+    var foo = findElement.field('foo', of: 'X');
+    _assertFieldType(foo, 'int');
+  }
+
   test_field_multiple_setters_combined() async {
     await resolveTestCode('''
 class A {
@@ -268,6 +311,42 @@
     _assertFieldTypeDynamic(foo);
   }
 
+  test_field_single_getter_nonNullify() async {
+    newFile('$testPackageLibPath/a.dart', content: r'''
+// @dart = 2.7
+abstract class A {
+  int get foo;
+}
+''');
+    await resolveTestCode('''
+import 'a.dart';
+
+abstract class B implements A {
+  var foo;
+}
+''');
+    var foo = findElement.field('foo', of: 'B');
+    _assertFieldType(foo, 'int');
+  }
+
+  test_field_single_setter_nonNullify() async {
+    newFile('$testPackageLibPath/a.dart', content: r'''
+// @dart = 2.7
+abstract class A {
+  set foo(int _);
+}
+''');
+    await resolveTestCode('''
+import 'a.dart';
+
+abstract class B implements A {
+  var foo;
+}
+''');
+    var foo = findElement.field('foo', of: 'B');
+    _assertFieldType(foo, 'int');
+  }
+
   test_getter_multiple_getters_combined() async {
     await resolveTestCode('''
 class A {
@@ -386,6 +465,42 @@
     _assertGetterTypeDynamic(foo);
   }
 
+  test_getter_single_getter_nonNullify() async {
+    newFile('$testPackageLibPath/a.dart', content: r'''
+// @dart = 2.7
+abstract class A {
+  int get foo;
+}
+''');
+    await resolveTestCode('''
+import 'a.dart';
+
+abstract class B implements A {
+  get foo;
+}
+''');
+    var foo = findElement.getter('foo', of: 'B');
+    _assertGetterType(foo, 'int');
+  }
+
+  test_getter_single_setter_nonNullify() async {
+    newFile('$testPackageLibPath/a.dart', content: r'''
+// @dart = 2.7
+abstract class A {
+  set foo(int _);
+}
+''');
+    await resolveTestCode('''
+import 'a.dart';
+
+abstract class B implements A {
+  get foo;
+}
+''');
+    var foo = findElement.getter('foo', of: 'B');
+    _assertGetterType(foo, 'int');
+  }
+
   test_invalid_field_overrides_method() async {
     await resolveTestCode('''
 abstract class A {
@@ -536,6 +651,24 @@
     assertType(p.type, 'num');
   }
 
+  test_method_parameter_required_multiple_different_merge() async {
+    await resolveTestCode('''
+class A {
+  void foo(Object? p) {}
+}
+
+class B {
+  void foo(dynamic p) {}
+}
+
+class C implements A, B {
+  void foo(p) {}
+}
+''');
+    var p = findElement.method('foo', of: 'C').parameters[0];
+    assertType(p.type, 'Object?');
+  }
+
   test_method_parameter_required_multiple_incompatible() async {
     await resolveTestCode('''
 class A {
@@ -581,6 +714,24 @@
     assertType(p.type, 'T');
   }
 
+  test_method_parameter_required_single_nonNullify() async {
+    newFile('$testPackageLibPath/a.dart', content: r'''
+// @dart = 2.7
+class A {
+  void foo(int p) {}
+}
+''');
+    await resolveTestCode('''
+import 'a.dart';
+
+class B implements A {
+  void foo(p) {}
+}
+''');
+    var p = findElement.method('foo', of: 'B').parameters[0];
+    assertType(p.type, 'int');
+  }
+
   test_method_parameter_requiredAndPositional() async {
     await resolveTestCode('''
 class A {
@@ -661,6 +812,24 @@
     assertTypeDynamic(foo.returnType);
   }
 
+  test_method_return_multiple_different_merge() async {
+    await resolveTestCode('''
+class A {
+  Object? foo() => throw 0;
+}
+
+class B {
+  dynamic foo() => throw 0;
+}
+
+class C implements A, B {
+  foo() => throw 0;
+}
+''');
+    var foo = findElement.method('foo', of: 'C');
+    assertType(foo.returnType, 'Object?');
+  }
+
   test_method_return_multiple_different_void() async {
     await resolveTestCode('''
 class A {
@@ -725,6 +894,24 @@
     assertType(foo.returnType, 'void');
   }
 
+  test_method_return_nonNullify() async {
+    newFile('$testPackageLibPath/a.dart', content: r'''
+// @dart = 2.7
+abstract class A {
+  int foo();
+}
+''');
+    await resolveTestCode('''
+import 'a.dart';
+
+abstract class B implements A {
+  foo();
+}
+''');
+    var foo = findElement.method('foo', of: 'B');
+    assertType(foo.returnType, 'int');
+  }
+
   test_method_return_single() async {
     await resolveTestCode('''
 class A {
@@ -869,6 +1056,42 @@
     _assertSetterTypeDynamic(foo);
   }
 
+  test_setter_single_getter_nonNullify() async {
+    newFile('$testPackageLibPath/a.dart', content: r'''
+// @dart = 2.7
+abstract class A {
+  int get foo;
+}
+''');
+    await resolveTestCode('''
+import 'a.dart';
+
+abstract class B implements A {
+  set foo(_);
+}
+''');
+    var foo = findElement.setter('foo', of: 'B');
+    _assertSetterType(foo, 'int');
+  }
+
+  test_setter_single_setter_nonNullify() async {
+    newFile('$testPackageLibPath/a.dart', content: r'''
+// @dart = 2.7
+abstract class A {
+  set foo(int _);
+}
+''');
+    await resolveTestCode('''
+import 'a.dart';
+
+abstract class B implements A {
+  set foo(_);
+}
+''');
+    var foo = findElement.setter('foo', of: 'B');
+    _assertSetterType(foo, 'int');
+  }
+
   test_setter_single_setter_withoutParameter() async {
     await resolveTestCode('''
 class A {
@@ -941,231 +1164,3 @@
     assertTypeDynamic(accessor.parameters.single.type);
   }
 }
-
-@reflectiveTest
-class InstanceMemberInferenceClassWithNullSafetyTest
-    extends InstanceMemberInferenceClassTest with WithNullSafetyMixin {
-  test_field_multiple_gettersSetters_final_nonNullify() async {
-    newFile('$testPackageLibPath/a.dart', content: r'''
-// @dart = 2.7
-abstract class A {
-  int get foo;
-}
-abstract class B {
-  set foo(num _);
-}
-''');
-
-    await resolveTestCode('''
-import 'a.dart';
-
-class X implements A, B {
-  final foo;
-}
-''');
-    var foo = findElement.field('foo', of: 'X');
-    _assertFieldType(foo, 'int');
-  }
-
-  test_field_multiple_gettersSetters_notFinal_nonNullify() async {
-    newFile('$testPackageLibPath/a.dart', content: r'''
-// @dart = 2.7
-abstract class A {
-  int get foo;
-}
-abstract class B {
-  set foo(int _);
-}
-''');
-
-    await resolveTestCode('''
-import 'a.dart';
-
-class X implements A, B {
-  var foo;
-}
-''');
-    var foo = findElement.field('foo', of: 'X');
-    _assertFieldType(foo, 'int');
-  }
-
-  test_field_single_getter_nonNullify() async {
-    newFile('$testPackageLibPath/a.dart', content: r'''
-// @dart = 2.7
-abstract class A {
-  int get foo;
-}
-''');
-    await resolveTestCode('''
-import 'a.dart';
-
-abstract class B implements A {
-  var foo;
-}
-''');
-    var foo = findElement.field('foo', of: 'B');
-    _assertFieldType(foo, 'int');
-  }
-
-  test_field_single_setter_nonNullify() async {
-    newFile('$testPackageLibPath/a.dart', content: r'''
-// @dart = 2.7
-abstract class A {
-  set foo(int _);
-}
-''');
-    await resolveTestCode('''
-import 'a.dart';
-
-abstract class B implements A {
-  var foo;
-}
-''');
-    var foo = findElement.field('foo', of: 'B');
-    _assertFieldType(foo, 'int');
-  }
-
-  test_getter_single_getter_nonNullify() async {
-    newFile('$testPackageLibPath/a.dart', content: r'''
-// @dart = 2.7
-abstract class A {
-  int get foo;
-}
-''');
-    await resolveTestCode('''
-import 'a.dart';
-
-abstract class B implements A {
-  get foo;
-}
-''');
-    var foo = findElement.getter('foo', of: 'B');
-    _assertGetterType(foo, 'int');
-  }
-
-  test_getter_single_setter_nonNullify() async {
-    newFile('$testPackageLibPath/a.dart', content: r'''
-// @dart = 2.7
-abstract class A {
-  set foo(int _);
-}
-''');
-    await resolveTestCode('''
-import 'a.dart';
-
-abstract class B implements A {
-  get foo;
-}
-''');
-    var foo = findElement.getter('foo', of: 'B');
-    _assertGetterType(foo, 'int');
-  }
-
-  test_method_parameter_required_multiple_different_merge() async {
-    await resolveTestCode('''
-class A {
-  void foo(Object? p) {}
-}
-
-class B {
-  void foo(dynamic p) {}
-}
-
-class C implements A, B {
-  void foo(p) {}
-}
-''');
-    var p = findElement.method('foo', of: 'C').parameters[0];
-    assertType(p.type, 'Object?');
-  }
-
-  test_method_parameter_required_single_nonNullify() async {
-    newFile('$testPackageLibPath/a.dart', content: r'''
-// @dart = 2.7
-class A {
-  void foo(int p) {}
-}
-''');
-    await resolveTestCode('''
-import 'a.dart';
-
-class B implements A {
-  void foo(p) {}
-}
-''');
-    var p = findElement.method('foo', of: 'B').parameters[0];
-    assertType(p.type, 'int');
-  }
-
-  test_method_return_multiple_different_merge() async {
-    await resolveTestCode('''
-class A {
-  Object? foo() => throw 0;
-}
-
-class B {
-  dynamic foo() => throw 0;
-}
-
-class C implements A, B {
-  foo() => throw 0;
-}
-''');
-    var foo = findElement.method('foo', of: 'C');
-    assertType(foo.returnType, 'Object?');
-  }
-
-  test_method_return_nonNullify() async {
-    newFile('$testPackageLibPath/a.dart', content: r'''
-// @dart = 2.7
-abstract class A {
-  int foo();
-}
-''');
-    await resolveTestCode('''
-import 'a.dart';
-
-abstract class B implements A {
-  foo();
-}
-''');
-    var foo = findElement.method('foo', of: 'B');
-    assertType(foo.returnType, 'int');
-  }
-
-  test_setter_single_getter_nonNullify() async {
-    newFile('$testPackageLibPath/a.dart', content: r'''
-// @dart = 2.7
-abstract class A {
-  int get foo;
-}
-''');
-    await resolveTestCode('''
-import 'a.dart';
-
-abstract class B implements A {
-  set foo(_);
-}
-''');
-    var foo = findElement.setter('foo', of: 'B');
-    _assertSetterType(foo, 'int');
-  }
-
-  test_setter_single_setter_nonNullify() async {
-    newFile('$testPackageLibPath/a.dart', content: r'''
-// @dart = 2.7
-abstract class A {
-  set foo(int _);
-}
-''');
-    await resolveTestCode('''
-import 'a.dart';
-
-abstract class B implements A {
-  set foo(_);
-}
-''');
-    var foo = findElement.setter('foo', of: 'B');
-    _assertSetterType(foo, 'int');
-  }
-}
diff --git a/pkg/analyzer/test/src/dart/resolution/instance_member_inference_mixin_test.dart b/pkg/analyzer/test/src/dart/resolution/instance_member_inference_mixin_test.dart
index 53579d1..a9a312f 100644
--- a/pkg/analyzer/test/src/dart/resolution/instance_member_inference_mixin_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/instance_member_inference_mixin_test.dart
@@ -9,7 +9,6 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(InstanceMemberInferenceClassTest);
-    defineReflectiveTests(InstanceMemberInferenceClassWithNullSafetyTest);
   });
 }
 
@@ -103,6 +102,24 @@
     assertType(p.type, 'num');
   }
 
+  test_method_parameter_required_multiple_different_merge() async {
+    await resolveTestCode('''
+class A {
+  void foo(Object? p) {}
+}
+
+class B {
+  void foo(dynamic p) {}
+}
+
+mixin M on A, B {
+  void foo(p) {}
+}
+''');
+    var p = findElement.method('foo', of: 'M').parameters[0];
+    assertType(p.type, 'Object?');
+  }
+
   test_method_parameter_required_multiple_incompatible() async {
     await resolveTestCode('''
 class A {
@@ -228,6 +245,24 @@
     assertTypeDynamic(foo.returnType);
   }
 
+  test_method_return_multiple_different_merge() async {
+    await resolveTestCode('''
+class A {
+  Object? foo() => throw 0;
+}
+
+class B {
+  dynamic foo() => throw 0;
+}
+
+mixin M on A, B {
+  foo() => throw 0;
+}
+''');
+    var foo = findElement.method('foo', of: 'M');
+    assertType(foo.returnType, 'Object?');
+  }
+
   test_method_return_multiple_different_void() async {
     await resolveTestCode('''
 class A {
@@ -318,43 +353,3 @@
     assertType(foo.returnType, 'T');
   }
 }
-
-@reflectiveTest
-class InstanceMemberInferenceClassWithNullSafetyTest
-    extends InstanceMemberInferenceClassTest with WithNullSafetyMixin {
-  test_method_parameter_required_multiple_different_merge() async {
-    await resolveTestCode('''
-class A {
-  void foo(Object? p) {}
-}
-
-class B {
-  void foo(dynamic p) {}
-}
-
-mixin M on A, B {
-  void foo(p) {}
-}
-''');
-    var p = findElement.method('foo', of: 'M').parameters[0];
-    assertType(p.type, 'Object?');
-  }
-
-  test_method_return_multiple_different_merge() async {
-    await resolveTestCode('''
-class A {
-  Object? foo() => throw 0;
-}
-
-class B {
-  dynamic foo() => throw 0;
-}
-
-mixin M on A, B {
-  foo() => throw 0;
-}
-''');
-    var foo = findElement.method('foo', of: 'M');
-    assertType(foo.returnType, 'Object?');
-  }
-}
diff --git a/pkg/analyzer/test/src/dart/resolution/metadata_test.dart b/pkg/analyzer/test/src/dart/resolution/metadata_test.dart
index 2f5b4ba..32b7598 100644
--- a/pkg/analyzer/test/src/dart/resolution/metadata_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/metadata_test.dart
@@ -20,7 +20,8 @@
 }
 
 @reflectiveTest
-class MetadataResolutionTest extends PubPackageResolutionTest {
+class MetadataResolutionTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_genericClass_instanceGetter() async {
     await resolveTestCode(r'''
 class A<T> {
diff --git a/pkg/analyzer/test/src/dart/resolution/method_invocation_test.dart b/pkg/analyzer/test/src/dart/resolution/method_invocation_test.dart
index e493bde8..8092ff1 100644
--- a/pkg/analyzer/test/src/dart/resolution/method_invocation_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/method_invocation_test.dart
@@ -23,7 +23,7 @@
 
 @reflectiveTest
 class MethodInvocationResolutionTest extends PubPackageResolutionTest
-    with MethodInvocationResolutionTestCases {}
+    with WithoutNullSafetyMixin, MethodInvocationResolutionTestCases {}
 
 mixin MethodInvocationResolutionTestCases on PubPackageResolutionTest {
   test_clamp_double_context_double() async {
diff --git a/pkg/analyzer/test/src/dart/resolution/mixin_test.dart b/pkg/analyzer/test/src/dart/resolution/mixin_test.dart
index a95d9f4..9e23683 100644
--- a/pkg/analyzer/test/src/dart/resolution/mixin_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/mixin_test.dart
@@ -19,7 +19,9 @@
 
 @reflectiveTest
 class MixinDriverResolutionTest extends PubPackageResolutionTest
-    with ElementsTypesMixin {
+    with WithoutNullSafetyMixin, ElementsTypesMixin {
+  // TODO(https://github.com/dart-lang/sdk/issues/44666): Use null safety in
+  //  test cases.
   test_accessor_getter() async {
     await assertNoErrorsInCode(r'''
 mixin M {
diff --git a/pkg/analyzer/test/src/dart/resolution/namespace_test.dart b/pkg/analyzer/test/src/dart/resolution/namespace_test.dart
index 30c9944..fcb7a12 100644
--- a/pkg/analyzer/test/src/dart/resolution/namespace_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/namespace_test.dart
@@ -9,7 +9,6 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(ImportResolutionTest);
-    defineReflectiveTests(ImportResolutionWithNullSafetyTest);
   });
 }
 
@@ -26,7 +25,3 @@
 ''');
   }
 }
-
-@reflectiveTest
-class ImportResolutionWithNullSafetyTest extends ImportResolutionTest
-    with WithNullSafetyMixin {}
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 c705570..b6473d4 100644
--- a/pkg/analyzer/test/src/dart/resolution/non_nullable_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/non_nullable_test.dart
@@ -435,7 +435,8 @@
 }
 
 @reflectiveTest
-class NullableTest extends PubPackageResolutionTest {
+class NullableTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   @override
   bool get typeToStringWithNullability => true;
 
diff --git a/pkg/analyzer/test/src/dart/resolution/postfix_expression_test.dart b/pkg/analyzer/test/src/dart/resolution/postfix_expression_test.dart
index ba93f9f..e86d332 100644
--- a/pkg/analyzer/test/src/dart/resolution/postfix_expression_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/postfix_expression_test.dart
@@ -17,7 +17,8 @@
 }
 
 @reflectiveTest
-class PostfixExpressionResolutionTest extends PubPackageResolutionTest {
+class PostfixExpressionResolutionTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_dec_simpleIdentifier_parameter_int() async {
     await assertNoErrorsInCode(r'''
 void f(int x) {
diff --git a/pkg/analyzer/test/src/dart/resolution/prefix_element_test.dart b/pkg/analyzer/test/src/dart/resolution/prefix_element_test.dart
index a87e051..d39e7d9 100644
--- a/pkg/analyzer/test/src/dart/resolution/prefix_element_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/prefix_element_test.dart
@@ -16,7 +16,10 @@
 }
 
 @reflectiveTest
-class PrefixElementTest extends PubPackageResolutionTest {
+class PrefixElementTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
+  // TODO(https://github.com/dart-lang/sdk/issues/44666): Use null safety in
+  //  test cases.
   test_scope_lookup() async {
     newFile('$testPackageLibPath/a.dart', content: r'''
 var foo = 0;
diff --git a/pkg/analyzer/test/src/dart/resolution/prefix_expression_test.dart b/pkg/analyzer/test/src/dart/resolution/prefix_expression_test.dart
index b263cdf..eb49c3f 100644
--- a/pkg/analyzer/test/src/dart/resolution/prefix_expression_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/prefix_expression_test.dart
@@ -17,7 +17,8 @@
 }
 
 @reflectiveTest
-class PrefixExpressionResolutionTest extends PubPackageResolutionTest {
+class PrefixExpressionResolutionTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_bang_bool_context() async {
     await assertNoErrorsInCode(r'''
 T f<T>() {
diff --git a/pkg/analyzer/test/src/dart/resolution/prefixed_identifier_test.dart b/pkg/analyzer/test/src/dart/resolution/prefixed_identifier_test.dart
index c3d86dd..24598f7 100644
--- a/pkg/analyzer/test/src/dart/resolution/prefixed_identifier_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/prefixed_identifier_test.dart
@@ -19,7 +19,8 @@
 }
 
 @reflectiveTest
-class PrefixedIdentifierResolutionTest extends PubPackageResolutionTest {
+class PrefixedIdentifierResolutionTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_dynamic_explicitCore_withPrefix() async {
     await assertNoErrorsInCode(r'''
 import 'dart:core' as mycore;
diff --git a/pkg/analyzer/test/src/dart/resolution/property_access_test.dart b/pkg/analyzer/test/src/dart/resolution/property_access_test.dart
index 63ab662..9c22823 100644
--- a/pkg/analyzer/test/src/dart/resolution/property_access_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/property_access_test.dart
@@ -16,7 +16,8 @@
 }
 
 @reflectiveTest
-class PropertyAccessResolutionTest extends PubPackageResolutionTest {
+class PropertyAccessResolutionTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_extensionOverride_read() async {
     await assertNoErrorsInCode('''
 class A {}
diff --git a/pkg/analyzer/test/src/dart/resolution/simple_identifier_test.dart b/pkg/analyzer/test/src/dart/resolution/simple_identifier_test.dart
index 9d01ef1..292d3ff 100644
--- a/pkg/analyzer/test/src/dart/resolution/simple_identifier_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/simple_identifier_test.dart
@@ -15,7 +15,8 @@
 }
 
 @reflectiveTest
-class SimpleIdentifierResolutionTest extends PubPackageResolutionTest {
+class SimpleIdentifierResolutionTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_dynamic_explicitCore() async {
     await assertNoErrorsInCode(r'''
 import 'dart:core';
diff --git a/pkg/analyzer/test/src/dart/resolution/top_level_variable_test.dart b/pkg/analyzer/test/src/dart/resolution/top_level_variable_test.dart
index 60e2338..1349f39 100644
--- a/pkg/analyzer/test/src/dart/resolution/top_level_variable_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/top_level_variable_test.dart
@@ -16,7 +16,8 @@
 }
 
 @reflectiveTest
-class TopLevelVariableTest extends PubPackageResolutionTest {
+class TopLevelVariableTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_session_getterSetter() async {
     await resolveTestCode('''
 var v = 0;
diff --git a/pkg/analyzer/test/src/dart/resolution/try_statement_test.dart b/pkg/analyzer/test/src/dart/resolution/try_statement_test.dart
index d5d60964..75c7e3c 100644
--- a/pkg/analyzer/test/src/dart/resolution/try_statement_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/try_statement_test.dart
@@ -10,7 +10,6 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(TryStatementTest);
-    defineReflectiveTests(TryStatementWithNullSafetyTest);
   });
 }
 
@@ -63,7 +62,3 @@
     expect(node.stackTraceParameter!.staticElement, st);
   }
 }
-
-@reflectiveTest
-class TryStatementWithNullSafetyTest extends TryStatementTest
-    with WithNullSafetyMixin {}
diff --git a/pkg/analyzer/test/src/dart/resolution/type_inference/conditional_expression_test.dart b/pkg/analyzer/test/src/dart/resolution/type_inference/conditional_expression_test.dart
index d52a86d..71d74e19 100644
--- a/pkg/analyzer/test/src/dart/resolution/type_inference/conditional_expression_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/type_inference/conditional_expression_test.dart
@@ -14,7 +14,8 @@
 }
 
 @reflectiveTest
-class ConditionalExpressionTest extends PubPackageResolutionTest {
+class ConditionalExpressionTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_upward() async {
     await resolveTestCode('''
 void f(bool a, int b, int c) {
diff --git a/pkg/analyzer/test/src/dart/resolution/type_inference/equality_expressions_test.dart b/pkg/analyzer/test/src/dart/resolution/type_inference/equality_expressions_test.dart
index 9bca502..d56dc4a 100644
--- a/pkg/analyzer/test/src/dart/resolution/type_inference/equality_expressions_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/type_inference/equality_expressions_test.dart
@@ -16,7 +16,7 @@
 }
 
 @reflectiveTest
-class EqualTest extends PubPackageResolutionTest {
+class EqualTest extends PubPackageResolutionTest with WithoutNullSafetyMixin {
   test_simple() async {
     await resolveTestCode('''
 void f(Object a, Object b) {
@@ -32,7 +32,8 @@
 class EqualWithNullSafetyTest extends EqualTest with WithNullSafetyMixin {}
 
 @reflectiveTest
-class NotEqualTest extends PubPackageResolutionTest {
+class NotEqualTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_simple() async {
     await resolveTestCode('''
 void f(Object a, Object b) {
diff --git a/pkg/analyzer/test/src/dart/resolution/type_inference/extension_methods_test.dart b/pkg/analyzer/test/src/dart/resolution/type_inference/extension_methods_test.dart
index 86b728d..5ba77c9 100644
--- a/pkg/analyzer/test/src/dart/resolution/type_inference/extension_methods_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/type_inference/extension_methods_test.dart
@@ -11,13 +11,12 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(ExtensionMethodsTest);
-    defineReflectiveTests(ExtensionMethodsWithNullSafetyTest);
   });
 }
 
 @reflectiveTest
 class ExtensionMethodsTest extends PubPackageResolutionTest
-    with ExtensionMethodsTestCases {}
+    with WithoutNullSafetyMixin, ExtensionMethodsTestCases {}
 
 mixin ExtensionMethodsTestCases on ResolutionTest {
   test_implicit_getter() async {
@@ -618,7 +617,3 @@
     }
   }
 }
-
-@reflectiveTest
-class ExtensionMethodsWithNullSafetyTest extends PubPackageResolutionTest
-    with WithNullSafetyMixin, ExtensionMethodsTestCases {}
diff --git a/pkg/analyzer/test/src/dart/resolution/type_inference/function_expression_test.dart b/pkg/analyzer/test/src/dart/resolution/type_inference/function_expression_test.dart
index 7de1d06..bcde92b 100644
--- a/pkg/analyzer/test/src/dart/resolution/type_inference/function_expression_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/type_inference/function_expression_test.dart
@@ -15,7 +15,8 @@
 }
 
 @reflectiveTest
-class FunctionExpressionTest extends PubPackageResolutionTest {
+class FunctionExpressionTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_contextFunctionType_returnType_async_blockBody_futureOrVoid() async {
     var expectedErrors = expectedErrorsByNullability(
       nullable: [
diff --git a/pkg/analyzer/test/src/dart/resolution/type_inference/list_literal_test.dart b/pkg/analyzer/test/src/dart/resolution/type_inference/list_literal_test.dart
index a4ac9d6..80aeb15 100644
--- a/pkg/analyzer/test/src/dart/resolution/type_inference/list_literal_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/type_inference/list_literal_test.dart
@@ -15,7 +15,8 @@
 }
 
 @reflectiveTest
-class ListLiteralTest extends PubPackageResolutionTest {
+class ListLiteralTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_context_noTypeArgs_expression_conflict() async {
     await assertErrorsInCode('''
 List<int> a = ['a'];
diff --git a/pkg/analyzer/test/src/dart/resolution/type_inference/local_variable_test.dart b/pkg/analyzer/test/src/dart/resolution/type_inference/local_variable_test.dart
index 90aabcf..5d3126f 100644
--- a/pkg/analyzer/test/src/dart/resolution/type_inference/local_variable_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/type_inference/local_variable_test.dart
@@ -14,7 +14,8 @@
 }
 
 @reflectiveTest
-class LocalVariableTest extends PubPackageResolutionTest {
+class LocalVariableTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_int() async {
     await resolveTestCode('''
 void f() {
diff --git a/pkg/analyzer/test/src/dart/resolution/type_inference/logical_boolean_expressions_test.dart b/pkg/analyzer/test/src/dart/resolution/type_inference/logical_boolean_expressions_test.dart
index edb58ce..209ac2b 100644
--- a/pkg/analyzer/test/src/dart/resolution/type_inference/logical_boolean_expressions_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/type_inference/logical_boolean_expressions_test.dart
@@ -16,7 +16,8 @@
 }
 
 @reflectiveTest
-class LogicalAndTest extends PubPackageResolutionTest {
+class LogicalAndTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_upward() async {
     await resolveTestCode('''
 void f(bool a, bool b) {
@@ -47,7 +48,8 @@
 }
 
 @reflectiveTest
-class LogicalOrTest extends PubPackageResolutionTest {
+class LogicalOrTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_upward() async {
     await resolveTestCode('''
 void f(bool a, bool b) {
diff --git a/pkg/analyzer/test/src/dart/resolution/type_inference/map_literal_test.dart b/pkg/analyzer/test/src/dart/resolution/type_inference/map_literal_test.dart
index b58f912..e4af4f6 100644
--- a/pkg/analyzer/test/src/dart/resolution/type_inference/map_literal_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/type_inference/map_literal_test.dart
@@ -16,7 +16,8 @@
 }
 
 @reflectiveTest
-class MapLiteralTest extends PubPackageResolutionTest {
+class MapLiteralTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   AstNode setOrMapLiteral(String search) => findNode.setOrMapLiteral(search);
 
   test_context_noTypeArgs_entry_conflictingKey() async {
diff --git a/pkg/analyzer/test/src/dart/resolution/type_inference/set_literal_test.dart b/pkg/analyzer/test/src/dart/resolution/type_inference/set_literal_test.dart
index 2b46b42..e9562aa 100644
--- a/pkg/analyzer/test/src/dart/resolution/type_inference/set_literal_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/type_inference/set_literal_test.dart
@@ -11,7 +11,6 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(SetLiteralTest);
-    defineReflectiveTests(SetLiteralWithNullSafetyTest);
   });
 }
 
@@ -19,6 +18,8 @@
 class SetLiteralTest extends PubPackageResolutionTest {
   AstNode setLiteral(String search) => findNode.setOrMapLiteral(search);
 
+  AstNode setOrMapLiteral(String search) => findNode.setOrMapLiteral(search);
+
   test_context_noTypeArgs_expression_conflict() async {
     await assertErrorsInCode('''
 Set<int> a = {'a'};
@@ -105,6 +106,28 @@
     assertType(setLiteral('{}'), 'Set<dynamic>');
   }
 
+  test_context_noTypeArgs_noEntries() async {
+    await assertNoErrorsInCode('''
+Set<String> a = {};
+''');
+    assertType(setOrMapLiteral('{'), 'Set<String>');
+  }
+
+  test_context_noTypeArgs_noEntries_typeParameterNullable() async {
+    await assertNoErrorsInCode('''
+class C<T extends Object?> {
+  Set<T> a = {}; // 1
+  Set<T>? b = {}; // 2
+  Set<T?> c = {}; // 3
+  Set<T?>? d = {}; // 4
+}
+''');
+    assertType(setOrMapLiteral('{}; // 1'), 'Set<T>');
+    assertType(setOrMapLiteral('{}; // 2'), 'Set<T>');
+    assertType(setOrMapLiteral('{}; // 3'), 'Set<T?>');
+    assertType(setOrMapLiteral('{}; // 4'), 'Set<T?>');
+  }
+
   test_context_typeArgs_expression_conflictingExpression() async {
     await assertErrorsInCode('''
 Set<String> a = <String>{0};
@@ -286,6 +309,41 @@
     assertType(setLiteral('{if'), 'Set<dynamic>');
   }
 
+  test_noContext_noTypeArgs_spread_never() async {
+    await assertErrorsInCode('''
+void f(Never a, bool b) async {
+  // ignore:unused_local_variable
+  var v = {...a, if (b) throw 0};
+}
+''', [
+      error(HintCode.DEAD_CODE, 87, 12),
+    ]);
+    assertType(setLiteral('{...'), 'Set<Never>');
+  }
+
+  test_noContext_noTypeArgs_spread_nullAware_never() async {
+    await assertErrorsInCode('''
+void f(Never a, bool b) async {
+  // ignore:unused_local_variable
+  var v = {...?a, if (b) throw 0};
+}
+''', [
+      error(StaticWarningCode.INVALID_NULL_AWARE_OPERATOR, 77, 4),
+      error(HintCode.DEAD_CODE, 88, 12),
+    ]);
+    assertType(setLiteral('{...'), 'Set<Never>');
+  }
+
+  test_noContext_noTypeArgs_spread_nullAware_null() async {
+    await assertNoErrorsInCode('''
+void f(Null a, bool b) async {
+  // ignore:unused_local_variable
+  var v = {...?a, if (b) throw 0};
+}
+''');
+    assertType(setLiteral('{...'), 'Set<Never>');
+  }
+
   test_noContext_noTypeArgs_spread_nullAware_nullAndNotNull() async {
     await assertNoErrorsInCode('''
 void f(Null a) {
@@ -296,6 +354,29 @@
     assertType(setLiteral('{1'), 'Set<int>');
   }
 
+  test_noContext_noTypeArgs_spread_nullAware_typeParameter_never() async {
+    await assertErrorsInCode('''
+void f<T extends Never>(T a, bool b) async {
+  // ignore:unused_local_variable
+  var v = {...?a, if (b) throw 0};
+}
+''', [
+      error(StaticWarningCode.INVALID_NULL_AWARE_OPERATOR, 90, 4),
+      error(HintCode.DEAD_CODE, 101, 12),
+    ]);
+    assertType(setLiteral('{...'), 'Set<Never>');
+  }
+
+  test_noContext_noTypeArgs_spread_nullAware_typeParameter_null() async {
+    await assertNoErrorsInCode('''
+void f<T extends Null>(T a, bool b) async {
+  // ignore:unused_local_variable
+  var v = {...?a, if (b) throw 0};
+}
+''');
+    assertType(setLiteral('{...'), 'Set<Never>');
+  }
+
   test_noContext_noTypeArgs_spread_typeParameter_implementsIterable() async {
     await assertNoErrorsInCode('''
 void f<T extends List<int>>(T a) {
@@ -306,6 +387,18 @@
     assertType(setLiteral('{...'), 'Set<int>');
   }
 
+  test_noContext_noTypeArgs_spread_typeParameter_never() async {
+    await assertErrorsInCode('''
+void f<T extends Never>(T a, bool b) async {
+  // ignore:unused_local_variable
+  var v = {...a, if (b) throw 0};
+}
+''', [
+      error(HintCode.DEAD_CODE, 100, 12),
+    ]);
+    assertType(setLiteral('{...'), 'Set<Never>');
+  }
+
   test_noContext_noTypeArgs_spread_typeParameter_notImplementsIterable() async {
     await assertErrorsInCode('''
 void f<T extends num>(T a) {
@@ -361,101 +454,3 @@
     assertType(setLiteral('{'), 'Set<num>');
   }
 }
-
-@reflectiveTest
-class SetLiteralWithNullSafetyTest extends SetLiteralTest
-    with WithNullSafetyMixin {
-  AstNode setOrMapLiteral(String search) => findNode.setOrMapLiteral(search);
-
-  test_context_noTypeArgs_noEntries() async {
-    await assertNoErrorsInCode('''
-Set<String> a = {};
-''');
-    assertType(setOrMapLiteral('{'), 'Set<String>');
-  }
-
-  test_context_noTypeArgs_noEntries_typeParameterNullable() async {
-    await assertNoErrorsInCode('''
-class C<T extends Object?> {
-  Set<T> a = {}; // 1
-  Set<T>? b = {}; // 2
-  Set<T?> c = {}; // 3
-  Set<T?>? d = {}; // 4
-}
-''');
-    assertType(setOrMapLiteral('{}; // 1'), 'Set<T>');
-    assertType(setOrMapLiteral('{}; // 2'), 'Set<T>');
-    assertType(setOrMapLiteral('{}; // 3'), 'Set<T?>');
-    assertType(setOrMapLiteral('{}; // 4'), 'Set<T?>');
-  }
-
-  test_noContext_noTypeArgs_spread_never() async {
-    await assertErrorsInCode('''
-void f(Never a, bool b) async {
-  // ignore:unused_local_variable
-  var v = {...a, if (b) throw 0};
-}
-''', [
-      error(HintCode.DEAD_CODE, 87, 12),
-    ]);
-    assertType(setLiteral('{...'), 'Set<Never>');
-  }
-
-  test_noContext_noTypeArgs_spread_nullAware_never() async {
-    await assertErrorsInCode('''
-void f(Never a, bool b) async {
-  // ignore:unused_local_variable
-  var v = {...?a, if (b) throw 0};
-}
-''', [
-      error(StaticWarningCode.INVALID_NULL_AWARE_OPERATOR, 77, 4),
-      error(HintCode.DEAD_CODE, 88, 12),
-    ]);
-    assertType(setLiteral('{...'), 'Set<Never>');
-  }
-
-  test_noContext_noTypeArgs_spread_nullAware_null() async {
-    await assertNoErrorsInCode('''
-void f(Null a, bool b) async {
-  // ignore:unused_local_variable
-  var v = {...?a, if (b) throw 0};
-}
-''');
-    assertType(setLiteral('{...'), 'Set<Never>');
-  }
-
-  test_noContext_noTypeArgs_spread_nullAware_typeParameter_never() async {
-    await assertErrorsInCode('''
-void f<T extends Never>(T a, bool b) async {
-  // ignore:unused_local_variable
-  var v = {...?a, if (b) throw 0};
-}
-''', [
-      error(StaticWarningCode.INVALID_NULL_AWARE_OPERATOR, 90, 4),
-      error(HintCode.DEAD_CODE, 101, 12),
-    ]);
-    assertType(setLiteral('{...'), 'Set<Never>');
-  }
-
-  test_noContext_noTypeArgs_spread_nullAware_typeParameter_null() async {
-    await assertNoErrorsInCode('''
-void f<T extends Null>(T a, bool b) async {
-  // ignore:unused_local_variable
-  var v = {...?a, if (b) throw 0};
-}
-''');
-    assertType(setLiteral('{...'), 'Set<Never>');
-  }
-
-  test_noContext_noTypeArgs_spread_typeParameter_never() async {
-    await assertErrorsInCode('''
-void f<T extends Never>(T a, bool b) async {
-  // ignore:unused_local_variable
-  var v = {...a, if (b) throw 0};
-}
-''', [
-      error(HintCode.DEAD_CODE, 100, 12),
-    ]);
-    assertType(setLiteral('{...'), 'Set<Never>');
-  }
-}
diff --git a/pkg/analyzer/test/src/dart/resolution/type_inference/type_test_expressions_test.dart b/pkg/analyzer/test/src/dart/resolution/type_inference/type_test_expressions_test.dart
index 63618fd..7e9f8fe 100644
--- a/pkg/analyzer/test/src/dart/resolution/type_inference/type_test_expressions_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/type_inference/type_test_expressions_test.dart
@@ -16,7 +16,7 @@
 }
 
 @reflectiveTest
-class IsNotTest extends PubPackageResolutionTest {
+class IsNotTest extends PubPackageResolutionTest with WithoutNullSafetyMixin {
   test_simple() async {
     await resolveTestCode('''
 void f(Object a) {
@@ -32,7 +32,7 @@
 class IsNotWithNullSafetyTest extends IsNotTest with WithNullSafetyMixin {}
 
 @reflectiveTest
-class IsTest extends PubPackageResolutionTest {
+class IsTest extends PubPackageResolutionTest with WithoutNullSafetyMixin {
   test_simple() async {
     await resolveTestCode('''
 void f(Object a) {
diff --git a/pkg/analyzer/test/src/dart/resolution/type_name_test.dart b/pkg/analyzer/test/src/dart/resolution/type_name_test.dart
index 7587a08..baab335 100644
--- a/pkg/analyzer/test/src/dart/resolution/type_name_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/type_name_test.dart
@@ -19,7 +19,8 @@
 }
 
 @reflectiveTest
-class TypeNameResolutionTest extends PubPackageResolutionTest {
+class TypeNameResolutionTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   @override
   bool get typeToStringWithNullability => true;
 
diff --git a/pkg/analyzer/test/src/diagnostics/abstract_class_member_test.dart b/pkg/analyzer/test/src/diagnostics/abstract_class_member_test.dart
index e51f4cb..cba3c60 100644
--- a/pkg/analyzer/test/src/diagnostics/abstract_class_member_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/abstract_class_member_test.dart
@@ -15,7 +15,8 @@
 }
 
 @reflectiveTest
-class AbstractClassMemberTest extends PubPackageResolutionTest {
+class AbstractClassMemberTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_abstract_field_dynamic() async {
     await assertErrorsInCode(
         '''
diff --git a/pkg/analyzer/test/src/diagnostics/ambiguous_import_test.dart b/pkg/analyzer/test/src/diagnostics/ambiguous_import_test.dart
index fe447bc..1dbb8a7 100644
--- a/pkg/analyzer/test/src/diagnostics/ambiguous_import_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/ambiguous_import_test.dart
@@ -218,7 +218,7 @@
 import 'lib1.dart';
 import 'lib2.dart';
 class A<T> {}
-A<N> f() { return null; }''', [
+A<N>? f() { return null; }''', [
       error(CompileTimeErrorCode.AMBIGUOUS_IMPORT, 56, 1),
     ]);
   }
diff --git a/pkg/analyzer/test/src/diagnostics/ambiguous_set_or_map_literal_test.dart b/pkg/analyzer/test/src/diagnostics/ambiguous_set_or_map_literal_test.dart
index 1430312..30de480 100644
--- a/pkg/analyzer/test/src/diagnostics/ambiguous_set_or_map_literal_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/ambiguous_set_or_map_literal_test.dart
@@ -17,7 +17,8 @@
 }
 
 @reflectiveTest
-class AmbiguousSetOrMapLiteralBothTest extends PubPackageResolutionTest {
+class AmbiguousSetOrMapLiteralBothTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_map() async {
     await assertNoErrorsInCode('''
 f(Map<int, int> map) {
@@ -108,7 +109,8 @@
 }
 
 @reflectiveTest
-class AmbiguousSetOrMapLiteralEitherTest extends PubPackageResolutionTest {
+class AmbiguousSetOrMapLiteralEitherTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_invalidPrefixOperator() async {
     // Guard against an exception being thrown.
     await assertErrorsInCode('''
diff --git a/pkg/analyzer/test/src/diagnostics/argument_type_not_assignable_catch_error_on_error_test.dart b/pkg/analyzer/test/src/diagnostics/argument_type_not_assignable_catch_error_on_error_test.dart
index d457687..ceb0706 100644
--- a/pkg/analyzer/test/src/diagnostics/argument_type_not_assignable_catch_error_on_error_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/argument_type_not_assignable_catch_error_on_error_test.dart
@@ -17,7 +17,7 @@
 
 @reflectiveTest
 class ArgumentTypeNotAssignableCatchErrorOnErrorTest
-    extends PubPackageResolutionTest {
+    extends PubPackageResolutionTest with WithoutNullSafetyMixin {
   void test_firstParameterIsDynamic() async {
     await assertNoErrorsInCode('''
 void f(Future<int> future, Future<int> Function(dynamic a) callback) {
diff --git a/pkg/analyzer/test/src/diagnostics/argument_type_not_assignable_test.dart b/pkg/analyzer/test/src/diagnostics/argument_type_not_assignable_test.dart
index d62e2fa..1ce8a4b 100644
--- a/pkg/analyzer/test/src/diagnostics/argument_type_not_assignable_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/argument_type_not_assignable_test.dart
@@ -16,7 +16,8 @@
 }
 
 @reflectiveTest
-class ArgumentTypeNotAssignableTest extends PubPackageResolutionTest {
+class ArgumentTypeNotAssignableTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_ambiguousClassName() async {
     // See dartbug.com/19624
     newFile('$testPackageLibPath/lib2.dart', content: '''
diff --git a/pkg/analyzer/test/src/diagnostics/assignment_of_do_not_store_test.dart b/pkg/analyzer/test/src/diagnostics/assignment_of_do_not_store_test.dart
index e2c27bb..27f94c8 100644
--- a/pkg/analyzer/test/src/diagnostics/assignment_of_do_not_store_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/assignment_of_do_not_store_test.dart
@@ -241,14 +241,14 @@
 import 'package:meta/meta.dart';
 
 @doNotStore
-final v = '';
+final String? v = '';
 
 class A {
   final f = v ?? v;
 }
 ''', [
-      error(HintCode.ASSIGNMENT_OF_DO_NOT_STORE, 83, 1),
-      error(HintCode.ASSIGNMENT_OF_DO_NOT_STORE, 88, 1),
+      error(HintCode.ASSIGNMENT_OF_DO_NOT_STORE, 91, 1),
+      error(HintCode.ASSIGNMENT_OF_DO_NOT_STORE, 96, 1),
     ]);
   }
 
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 0ce29b5..81bfd42 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
@@ -15,7 +15,8 @@
 }
 
 @reflectiveTest
-class AssignmentToFinalLocalTest extends PubPackageResolutionTest {
+class AssignmentToFinalLocalTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_localVariable() async {
     await assertErrorsInCode('''
 f() {
diff --git a/pkg/analyzer/test/src/diagnostics/assignment_to_final_test.dart b/pkg/analyzer/test/src/diagnostics/assignment_to_final_test.dart
index 6b1537c..0e78785 100644
--- a/pkg/analyzer/test/src/diagnostics/assignment_to_final_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/assignment_to_final_test.dart
@@ -15,7 +15,8 @@
 }
 
 @reflectiveTest
-class AssignmentToFinalTest extends PubPackageResolutionTest {
+class AssignmentToFinalTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_prefixedIdentifier_instanceField() async {
     await assertNoErrorsInCode('''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/can_be_null_after_null_aware_test.dart b/pkg/analyzer/test/src/diagnostics/can_be_null_after_null_aware_test.dart
index 9fa19a3..2659709 100644
--- a/pkg/analyzer/test/src/diagnostics/can_be_null_after_null_aware_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/can_be_null_after_null_aware_test.dart
@@ -10,11 +10,45 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(CanBeNullAfterNullAwareTest);
+    defineReflectiveTests(CanBeNullAfterNullAwareWithoutNullSafetyTest);
   });
 }
 
 @reflectiveTest
 class CanBeNullAfterNullAwareTest extends PubPackageResolutionTest {
+  test_definedForNull() async {
+    await assertNoErrorsInCode(r'''
+m(x) {
+  x?.a.hashCode;
+  x?.a.runtimeType;
+  x?.a.toString();
+  x?.b().hashCode;
+  x?.b().runtimeType;
+  x?.b().toString();
+}
+''');
+  }
+
+  test_guarded_methodInvocation() async {
+    await assertNoErrorsInCode(r'''
+m(x) {
+  x?.a()?.b();
+}
+''');
+  }
+
+  test_guarded_propertyAccess() async {
+    await assertNoErrorsInCode(r'''
+m(x) {
+  x?.a?.b;
+}
+''');
+  }
+}
+
+@reflectiveTest
+class CanBeNullAfterNullAwareWithoutNullSafetyTest
+    extends PubPackageResolutionTest with WithoutNullSafetyMixin {
   test_afterCascade() async {
     await assertErrorsInCode(r'''
 m(x) {
@@ -45,35 +79,6 @@
     ]);
   }
 
-  test_definedForNull() async {
-    await assertNoErrorsInCode(r'''
-m(x) {
-  x?.a.hashCode;
-  x?.a.runtimeType;
-  x?.a.toString();
-  x?.b().hashCode;
-  x?.b().runtimeType;
-  x?.b().toString();
-}
-''');
-  }
-
-  test_guarded_methodInvocation() async {
-    await assertNoErrorsInCode(r'''
-m(x) {
-  x?.a()?.b();
-}
-''');
-  }
-
-  test_guarded_propertyAccess() async {
-    await assertNoErrorsInCode(r'''
-m(x) {
-  x?.a?.b;
-}
-''');
-  }
-
   test_methodInvocation() async {
     await assertErrorsInCode(r'''
 m(x) {
diff --git a/pkg/analyzer/test/src/diagnostics/case_block_not_terminated_test.dart b/pkg/analyzer/test/src/diagnostics/case_block_not_terminated_test.dart
index 67e0536..6b5aa1e 100644
--- a/pkg/analyzer/test/src/diagnostics/case_block_not_terminated_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/case_block_not_terminated_test.dart
@@ -10,6 +10,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(CaseBlockNotTerminatedTest);
+    defineReflectiveTests(CaseBlockNotTerminatedWithoutNullSafetyTest);
   });
 }
 
@@ -26,20 +27,6 @@
 ''');
   }
 
-  test_notTerminated() async {
-    await assertErrorsInCode('''
-void f(int a) {
-  switch (a) {
-    case 0:
-      print(0);
-    default:
-      return;
-  }
-}''', [
-      error(CompileTimeErrorCode.CASE_BLOCK_NOT_TERMINATED, 35, 4),
-    ]);
-  }
-
   test_terminated_break() async {
     await assertNoErrorsInCode(r'''
 void f(int a) {
@@ -108,3 +95,21 @@
 ''');
   }
 }
+
+@reflectiveTest
+class CaseBlockNotTerminatedWithoutNullSafetyTest
+    extends PubPackageResolutionTest with WithoutNullSafetyMixin {
+  test_notTerminated() async {
+    await assertErrorsInCode('''
+void f(int a) {
+  switch (a) {
+    case 0:
+      print(0);
+    default:
+      return;
+  }
+}''', [
+      error(CompileTimeErrorCode.CASE_BLOCK_NOT_TERMINATED, 35, 4),
+    ]);
+  }
+}
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 bfec408..6d3f9a1 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
@@ -15,7 +15,8 @@
 }
 
 @reflectiveTest
-class CaseExpressionTypeImplementsEqualsTest extends PubPackageResolutionTest {
+class CaseExpressionTypeImplementsEqualsTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   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 73c8ee9..cfbabf8 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
@@ -16,7 +16,7 @@
 
 @reflectiveTest
 class ConcreteClassWithAbstractMemberTest extends PubPackageResolutionTest
-    with ConcreteClassWithAbstractMemberTestCases {}
+    with WithoutNullSafetyMixin, ConcreteClassWithAbstractMemberTestCases {}
 
 mixin ConcreteClassWithAbstractMemberTestCases on PubPackageResolutionTest {
   test_direct() async {
diff --git a/pkg/analyzer/test/src/diagnostics/conflicting_generic_interfaces_test.dart b/pkg/analyzer/test/src/diagnostics/conflicting_generic_interfaces_test.dart
index aa368bb..a893d8b 100644
--- a/pkg/analyzer/test/src/diagnostics/conflicting_generic_interfaces_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/conflicting_generic_interfaces_test.dart
@@ -15,7 +15,8 @@
 }
 
 @reflectiveTest
-class ConflictingGenericInterfacesTest extends PubPackageResolutionTest {
+class ConflictingGenericInterfacesTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_class_extends_implements() async {
     await assertErrorsInCode('''
 class I<T> {}
diff --git a/pkg/analyzer/test/src/diagnostics/const_constructor_param_type_mismatch_test.dart b/pkg/analyzer/test/src/diagnostics/const_constructor_param_type_mismatch_test.dart
index 24ad795..f9bcac1 100644
--- a/pkg/analyzer/test/src/diagnostics/const_constructor_param_type_mismatch_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/const_constructor_param_type_mismatch_test.dart
@@ -11,22 +11,13 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(ConstConstructorParamTypeMismatchTest);
+    defineReflectiveTests(
+        ConstConstructorParamTypeMismatchWithoutNullSafetyTest);
   });
 }
 
 @reflectiveTest
 class ConstConstructorParamTypeMismatchTest extends PubPackageResolutionTest {
-  test_assignable_fieldFormal_null() async {
-    // Null is assignable to anything (before null safety).
-    await assertNoErrorsInCode(r'''
-class A {
-  final int x;
-  const A(this.x);
-}
-var v = const A(null);
-''');
-  }
-
   test_assignable_fieldFormal_omittedType() async {
     // If a field is declared without a type, and no initializer, it's type is
     // dynamic.
@@ -81,29 +72,6 @@
 ''');
   }
 
-  test_assignable_fieldFormal_unresolved_null() async {
-    // Null always passes runtime type checks, even when the type is
-    // unresolved.
-    await assertErrorsInCode(r'''
-class A {
-  final Unresolved x;
-  const A(String this.x);
-}
-var v = const A(null);
-''', [
-      error(CompileTimeErrorCode.UNDEFINED_CLASS, 18, 10),
-    ]);
-  }
-
-  test_assignable_null() async {
-    // Null is assignable to anything (before null safety).
-    await assertNoErrorsInCode(r'''
-class A {
-  const A(int x);
-}
-var v = const A(null);''');
-  }
-
   test_assignable_typeSubstitution() async {
     await assertNoErrorsInCode(r'''
 class A<T> {
@@ -249,7 +217,9 @@
 const A u = const A();
 var v = const C(u);
 ''', [
+      // TODO(srawlins): It would be best to report only the first one.
       error(CompileTimeErrorCode.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH, 143, 1),
+      error(CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, 143, 1),
     ]);
   }
 
@@ -319,3 +289,41 @@
     ]);
   }
 }
+
+@reflectiveTest
+class ConstConstructorParamTypeMismatchWithoutNullSafetyTest
+    extends PubPackageResolutionTest with WithoutNullSafetyMixin {
+  test_assignable_fieldFormal_null() async {
+    // Null is assignable to anything (before null safety).
+    await assertNoErrorsInCode(r'''
+class A {
+  final int x;
+  const A(this.x);
+}
+var v = const A(null);
+''');
+  }
+
+  test_assignable_fieldFormal_unresolved_null() async {
+    // Null always passes runtime type checks, even when the type is
+    // unresolved.
+    await assertErrorsInCode(r'''
+class A {
+  final Unresolved x;
+  const A(String this.x);
+}
+var v = const A(null);
+''', [
+      error(CompileTimeErrorCode.UNDEFINED_CLASS, 18, 10),
+    ]);
+  }
+
+  test_assignable_null() async {
+    // Null is assignable to anything (before null safety).
+    await assertNoErrorsInCode(r'''
+class A {
+  const A(int x);
+}
+var v = const A(null);''');
+  }
+}
diff --git a/pkg/analyzer/test/src/diagnostics/const_eval_throws_exception_test.dart b/pkg/analyzer/test/src/diagnostics/const_eval_throws_exception_test.dart
index 23be73a..b71deef 100644
--- a/pkg/analyzer/test/src/diagnostics/const_eval_throws_exception_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/const_eval_throws_exception_test.dart
@@ -17,7 +17,7 @@
 
 @reflectiveTest
 class ConstEvalThrowsExceptionTest extends PubPackageResolutionTest
-    with ConstEvalThrowsExceptionTestCases {
+    with WithoutNullSafetyMixin, ConstEvalThrowsExceptionTestCases {
   test_binaryMinus_null() async {
     await assertErrorsInCode('''
 const dynamic D = null;
diff --git a/pkg/analyzer/test/src/diagnostics/const_eval_type_bool_test.dart b/pkg/analyzer/test/src/diagnostics/const_eval_type_bool_test.dart
index dc91c13..db0701d 100644
--- a/pkg/analyzer/test/src/diagnostics/const_eval_type_bool_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/const_eval_type_bool_test.dart
@@ -58,7 +58,7 @@
   test_logicalOr_trueLeftOperand() async {
     await assertNoErrorsInCode(r'''
 class C {
-  final int x;
+  final int? x;
   const C({this.x}) : assert(x == null || x >= 0);
 }
 const c = const C();
diff --git a/pkg/analyzer/test/src/diagnostics/const_initialized_with_non_constant_value_test.dart b/pkg/analyzer/test/src/diagnostics/const_initialized_with_non_constant_value_test.dart
index 79c1c58..6b2096d 100644
--- a/pkg/analyzer/test/src/diagnostics/const_initialized_with_non_constant_value_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/const_initialized_with_non_constant_value_test.dart
@@ -82,12 +82,12 @@
     await assertErrorsInCode('''
 class C<T> {
   const C();
-  T get t => null;
+  T? get t => null;
 }
 
 const x = const C().t;
 ''', [
-      error(CompileTimeErrorCode.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE, 58,
+      error(CompileTimeErrorCode.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE, 59,
           11),
     ]);
   }
diff --git a/pkg/analyzer/test/src/diagnostics/const_not_initialized_test.dart b/pkg/analyzer/test/src/diagnostics/const_not_initialized_test.dart
index 786dfe7..f96bfde 100644
--- a/pkg/analyzer/test/src/diagnostics/const_not_initialized_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/const_not_initialized_test.dart
@@ -15,7 +15,8 @@
 }
 
 @reflectiveTest
-class ConstNotInitializedTest extends PubPackageResolutionTest {
+class ConstNotInitializedTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_extension_static() async {
     await assertErrorsInCode('''
 extension E on String {
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 2f7f2c3..46783f7 100644
--- a/pkg/analyzer/test/src/diagnostics/could_not_infer_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/could_not_infer_test.dart
@@ -15,7 +15,8 @@
 }
 
 @reflectiveTest
-class CouldNotInferTest extends PubPackageResolutionTest {
+class CouldNotInferTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_constructors_inferenceFBounded() async {
     await assertErrorsInCode('''
 class C<T> {}
diff --git a/pkg/analyzer/test/src/diagnostics/dead_code_test.dart b/pkg/analyzer/test/src/diagnostics/dead_code_test.dart
index effa025..4b2098e 100644
--- a/pkg/analyzer/test/src/diagnostics/dead_code_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/dead_code_test.dart
@@ -15,7 +15,8 @@
 }
 
 @reflectiveTest
-class DeadCodeTest extends PubPackageResolutionTest {
+class DeadCodeTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   @override
   void setUp() {
     super.setUp();
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 6a45253..20c8729 100644
--- a/pkg/analyzer/test/src/diagnostics/deprecated_member_use_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/deprecated_member_use_test.dart
@@ -109,7 +109,7 @@
 
 @reflectiveTest
 class DeprecatedMemberUse_BasicWorkspaceTest extends PubPackageResolutionTest
-    with DeprecatedMemberUse_BasicWorkspaceTestCases {}
+    with WithoutNullSafetyMixin, DeprecatedMemberUse_BasicWorkspaceTestCases {}
 
 mixin DeprecatedMemberUse_BasicWorkspaceTestCases on PubPackageResolutionTest {
   @override
@@ -467,7 +467,7 @@
 
 @reflectiveTest
 class DeprecatedMemberUseFromSamePackage_BasicWorkspaceTest
-    extends PubPackageResolutionTest {
+    extends PubPackageResolutionTest with WithoutNullSafetyMixin {
   test_assignmentExpression_compound_deprecatedGetter() async {
     await assertErrorsInCode(r'''
 @deprecated
diff --git a/pkg/analyzer/test/src/diagnostics/duplicate_definition_test.dart b/pkg/analyzer/test/src/diagnostics/duplicate_definition_test.dart
index a05e934..72c03f2 100644
--- a/pkg/analyzer/test/src/diagnostics/duplicate_definition_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/duplicate_definition_test.dart
@@ -1051,11 +1051,11 @@
   test_parameters_constructor_field_second() async {
     await assertErrorsInCode(r'''
 class A {
-  int a;
+  int? a;
   A(int a, this.a);
 }
 ''', [
-      error(CompileTimeErrorCode.DUPLICATE_DEFINITION, 35, 1),
+      error(CompileTimeErrorCode.DUPLICATE_DEFINITION, 36, 1),
     ]);
   }
 
diff --git a/pkg/analyzer/test/src/diagnostics/extends_non_class_test.dart b/pkg/analyzer/test/src/diagnostics/extends_non_class_test.dart
index 5313441..95db122 100644
--- a/pkg/analyzer/test/src/diagnostics/extends_non_class_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/extends_non_class_test.dart
@@ -15,7 +15,8 @@
 }
 
 @reflectiveTest
-class ExtendsNonClassTest extends PubPackageResolutionTest {
+class ExtendsNonClassTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_undefined() async {
     await assertErrorsInCode(r'''
 class C extends A {}
diff --git a/pkg/analyzer/test/src/diagnostics/extension_declares_field_test.dart b/pkg/analyzer/test/src/diagnostics/extension_declares_field_test.dart
index ec4b005..9c51b66 100644
--- a/pkg/analyzer/test/src/diagnostics/extension_declares_field_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/extension_declares_field_test.dart
@@ -18,9 +18,9 @@
   test_multiple() async {
     await assertErrorsInCode('''
 extension E on String {
-  String one, two, three;
+  String? one, two, three;
 }
-''', [error(ParserErrorCode.EXTENSION_DECLARES_INSTANCE_FIELD, 33, 3)]);
+''', [error(ParserErrorCode.EXTENSION_DECLARES_INSTANCE_FIELD, 34, 3)]);
   }
 
   test_none() async {
@@ -32,9 +32,9 @@
   test_one() async {
     await assertErrorsInCode('''
 extension E on String {
-  String s;
+  String? s;
 }
-''', [error(ParserErrorCode.EXTENSION_DECLARES_INSTANCE_FIELD, 33, 1)]);
+''', [error(ParserErrorCode.EXTENSION_DECLARES_INSTANCE_FIELD, 34, 1)]);
   }
 
   test_static() 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 6ee8f7b..540a822 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
@@ -17,7 +17,7 @@
 
 @reflectiveTest
 class ExtensionOverrideArgumentNotAssignableTest
-    extends PubPackageResolutionTest {
+    extends PubPackageResolutionTest with WithoutNullSafetyMixin {
   test_subtype() async {
     await assertNoErrorsInCode('''
 class A {}
diff --git a/pkg/analyzer/test/src/diagnostics/field_in_struct_with_initializer_test.dart b/pkg/analyzer/test/src/diagnostics/field_in_struct_with_initializer_test.dart
index 9c908b5..5a32780 100644
--- a/pkg/analyzer/test/src/diagnostics/field_in_struct_with_initializer_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/field_in_struct_with_initializer_test.dart
@@ -19,10 +19,10 @@
     await assertErrorsInCode(r'''
 import 'dart:ffi';
 class C extends Struct {
-  Pointer p = null;
+  Pointer? p = null;
 }
 ''', [
-      error(FfiCode.FIELD_IN_STRUCT_WITH_INITIALIZER, 54, 1),
+      error(FfiCode.FIELD_IN_STRUCT_WITH_INITIALIZER, 55, 1),
     ]);
   }
 
@@ -30,7 +30,7 @@
     await assertNoErrorsInCode(r'''
 import 'dart:ffi';
 class C extends Struct {
-  Pointer p;
+  Pointer? p;
 }
 ''');
   }
@@ -39,7 +39,7 @@
     await assertNoErrorsInCode(r'''
 import 'dart:ffi';
 class C extends Struct {
-  Pointer p;
+  Pointer? p;
   static String str = '';
 }
 ''');
diff --git a/pkg/analyzer/test/src/diagnostics/field_initializer_factory_constructor_test.dart b/pkg/analyzer/test/src/diagnostics/field_initializer_factory_constructor_test.dart
index 10a351a..eb9adaa 100644
--- a/pkg/analyzer/test/src/diagnostics/field_initializer_factory_constructor_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/field_initializer_factory_constructor_test.dart
@@ -30,14 +30,14 @@
   test_functionTypedParameter() async {
     await assertErrorsInCode(r'''
 class A {
-  int Function() x;
+  int Function()? x;
   factory A(int this.x());
 }
 ''', [
       // TODO(srawlins): Only report one error. Theoretically change Fasta to
       // report "Field initiailizer in factory constructor" as a parse error.
-      error(CompileTimeErrorCode.FIELD_INITIALIZER_FACTORY_CONSTRUCTOR, 42, 12),
-      error(ParserErrorCode.MISSING_FUNCTION_BODY, 55, 1),
+      error(CompileTimeErrorCode.FIELD_INITIALIZER_FACTORY_CONSTRUCTOR, 43, 12),
+      error(ParserErrorCode.MISSING_FUNCTION_BODY, 56, 1),
     ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/field_initializer_in_struct_test.dart b/pkg/analyzer/test/src/diagnostics/field_initializer_in_struct_test.dart
index f1e7575..e687a98 100644
--- a/pkg/analyzer/test/src/diagnostics/field_initializer_in_struct_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/field_initializer_in_struct_test.dart
@@ -19,11 +19,11 @@
     await assertErrorsInCode('''
 import 'dart:ffi';
 class C extends Struct {
-  @Int32() int f;
+  @Int32() int? f;
   C() : f = 0;
 }
 ''', [
-      error(FfiCode.FIELD_INITIALIZER_IN_STRUCT, 70, 5),
+      error(FfiCode.FIELD_INITIALIZER_IN_STRUCT, 71, 5),
     ]);
   }
 
@@ -31,7 +31,7 @@
     await assertNoErrorsInCode('''
 import 'dart:ffi';
 class C extends Struct {
-  @Int32() int f;
+  @Int32() int? f;
   C() : super();
 }
 ''');
diff --git a/pkg/analyzer/test/src/diagnostics/field_initializer_outside_constructor_test.dart b/pkg/analyzer/test/src/diagnostics/field_initializer_outside_constructor_test.dart
index e9367b1..138a984 100644
--- a/pkg/analyzer/test/src/diagnostics/field_initializer_outside_constructor_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/field_initializer_outside_constructor_test.dart
@@ -41,23 +41,23 @@
     // TODO(srawlins) Fix the duplicate error messages.
     await assertErrorsInCode(r'''
 class A {
-  int Function() x;
+  int Function()? x;
   m(int this.x()) {}
 }
 ''', [
-      error(CompileTimeErrorCode.FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR, 34, 12),
-      error(ParserErrorCode.FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR, 38, 4),
+      error(CompileTimeErrorCode.FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR, 35, 12),
+      error(ParserErrorCode.FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR, 39, 4),
     ]);
   }
 
   test_inFunctionTypedParameter() async {
     await assertErrorsInCode(r'''
 class A {
-  int x;
+  int? x;
   A(int p(this.x));
 }
 ''', [
-      error(CompileTimeErrorCode.FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR, 29, 6),
+      error(CompileTimeErrorCode.FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR, 30, 6),
     ]);
   }
 
@@ -65,12 +65,12 @@
     // TODO(brianwilkerson) Fix the duplicate error messages.
     await assertErrorsInCode(r'''
 class A {
-  int x;
+  int? x;
   m(this.x) {}
 }
 ''', [
-      error(ParserErrorCode.FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR, 23, 4),
-      error(CompileTimeErrorCode.FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR, 23, 6),
+      error(ParserErrorCode.FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR, 24, 4),
+      error(CompileTimeErrorCode.FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR, 24, 6),
     ]);
   }
 
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 f46212a..716b9d7 100644
--- a/pkg/analyzer/test/src/diagnostics/final_not_initialized_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/final_not_initialized_test.dart
@@ -15,7 +15,8 @@
 }
 
 @reflectiveTest
-class FinalNotInitializedTest extends PubPackageResolutionTest {
+class FinalNotInitializedTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_class_instanceField_final_factoryConstructor_only() async {
     await assertNoErrorsInCode('''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/for_in_of_invalid_type_test.dart b/pkg/analyzer/test/src/diagnostics/for_in_of_invalid_type_test.dart
index 89baab4..f1ca1bd 100644
--- a/pkg/analyzer/test/src/diagnostics/for_in_of_invalid_type_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/for_in_of_invalid_type_test.dart
@@ -15,7 +15,8 @@
 }
 
 @reflectiveTest
-class ForInOfInvalidTypeTest extends PubPackageResolutionTest {
+class ForInOfInvalidTypeTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_awaitForIn_dynamic() async {
     await assertNoErrorsInCode('''
 f(dynamic e) async {
diff --git a/pkg/analyzer/test/src/diagnostics/generic_function_type_cannot_be_bound_test.dart b/pkg/analyzer/test/src/diagnostics/generic_function_type_cannot_be_bound_test.dart
index 72de5dc..89fde84 100644
--- a/pkg/analyzer/test/src/diagnostics/generic_function_type_cannot_be_bound_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/generic_function_type_cannot_be_bound_test.dart
@@ -26,9 +26,9 @@
 
   test_genericFunction() async {
     await assertErrorsInCode(r'''
-T Function<T extends S Function<S>(S)>(T) fun;
+late T Function<T extends S Function<S>(S)>(T) fun;
 ''', [
-      error(CompileTimeErrorCode.GENERIC_FUNCTION_TYPE_CANNOT_BE_BOUND, 21, 16),
+      error(CompileTimeErrorCode.GENERIC_FUNCTION_TYPE_CANNOT_BE_BOUND, 26, 16),
     ]);
   }
 
diff --git a/pkg/analyzer/test/src/diagnostics/getter_not_assignable_setter_types_test.dart b/pkg/analyzer/test/src/diagnostics/getter_not_assignable_setter_types_test.dart
index b4996d1..5e89733 100644
--- a/pkg/analyzer/test/src/diagnostics/getter_not_assignable_setter_types_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/getter_not_assignable_setter_types_test.dart
@@ -14,7 +14,10 @@
 }
 
 @reflectiveTest
-class GetterNotAssignableSetterTypesTest extends PubPackageResolutionTest {
+class GetterNotAssignableSetterTypesTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
+  // TODO(https://github.com/dart-lang/sdk/issues/44666): Use null safety in
+  //  test cases.
   test_class_instance_dynamicGetter() async {
     await assertNoErrorsInCode(r'''
 class C {
diff --git a/pkg/analyzer/test/src/diagnostics/implements_non_class_test.dart b/pkg/analyzer/test/src/diagnostics/implements_non_class_test.dart
index adcb2a3..7172e98 100644
--- a/pkg/analyzer/test/src/diagnostics/implements_non_class_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/implements_non_class_test.dart
@@ -15,7 +15,8 @@
 }
 
 @reflectiveTest
-class ImplementsNonClassTest extends PubPackageResolutionTest {
+class ImplementsNonClassTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_class() async {
     await assertErrorsInCode(r'''
 int A = 7;
diff --git a/pkg/analyzer/test/src/diagnostics/implicit_this_reference_in_initializer_test.dart b/pkg/analyzer/test/src/diagnostics/implicit_this_reference_in_initializer_test.dart
index 45493d4..c3b6d67 100644
--- a/pkg/analyzer/test/src/diagnostics/implicit_this_reference_in_initializer_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/implicit_this_reference_in_initializer_test.dart
@@ -15,7 +15,8 @@
 }
 
 @reflectiveTest
-class ImplicitThisReferenceInInitializerTest extends PubPackageResolutionTest {
+class ImplicitThisReferenceInInitializerTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_class_field_commentReference_prefixedIdentifier() async {
     await assertNoErrorsInCode(r'''
 class A {
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 775c57b..28a4312 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
@@ -15,7 +15,8 @@
 }
 
 @reflectiveTest
-class InconsistentCaseExpressionTypesTest extends PubPackageResolutionTest {
+class InconsistentCaseExpressionTypesTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_dynamic() async {
     // Even though A.S and S have a static type of "dynamic", we should see
     // that they match 'abc', because they are constant strings.
diff --git a/pkg/analyzer/test/src/diagnostics/inconsistent_language_version_override_test.dart b/pkg/analyzer/test/src/diagnostics/inconsistent_language_version_override_test.dart
index 66e52d0..617a0d2 100644
--- a/pkg/analyzer/test/src/diagnostics/inconsistent_language_version_override_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/inconsistent_language_version_override_test.dart
@@ -15,7 +15,11 @@
 }
 
 @reflectiveTest
-class InconsistentLanguageVersionOverrideTest extends PubPackageResolutionTest {
+class InconsistentLanguageVersionOverrideTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
+  // TODO(https://github.com/dart-lang/sdk/issues/44666): Use null safety in
+  //  test cases.
+
   CompileTimeErrorCode get _errorCode =>
       CompileTimeErrorCode.INCONSISTENT_LANGUAGE_VERSION_OVERRIDE;
 
diff --git a/pkg/analyzer/test/src/diagnostics/inference_failure_on_collection_literal_test.dart b/pkg/analyzer/test/src/diagnostics/inference_failure_on_collection_literal_test.dart
index 0633063..6719677 100644
--- a/pkg/analyzer/test/src/diagnostics/inference_failure_on_collection_literal_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/inference_failure_on_collection_literal_test.dart
@@ -136,11 +136,11 @@
 
   test_inferredFromNullAware() async {
     await assertErrorsInCode(r'''
-void f(List<int> a) {
+void f(List<int>? a) {
   var x = a ?? [];
 }
 ''', [
-      error(HintCode.UNUSED_LOCAL_VARIABLE, 28, 1),
+      error(HintCode.UNUSED_LOCAL_VARIABLE, 29, 1),
     ]);
   }
 
diff --git a/pkg/analyzer/test/src/diagnostics/initializing_formal_for_static_field_test.dart b/pkg/analyzer/test/src/diagnostics/initializing_formal_for_static_field_test.dart
index 7b5b1dd..78471ac 100644
--- a/pkg/analyzer/test/src/diagnostics/initializing_formal_for_static_field_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/initializing_formal_for_static_field_test.dart
@@ -18,11 +18,11 @@
   test_static() async {
     await assertErrorsInCode(r'''
 class A {
-  static int x;
+  static int? x;
   A([this.x = 0]) {}
 }
 ''', [
-      error(CompileTimeErrorCode.INITIALIZING_FORMAL_FOR_STATIC_FIELD, 31, 6),
+      error(CompileTimeErrorCode.INITIALIZING_FORMAL_FOR_STATIC_FIELD, 32, 6),
     ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_assignment_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_assignment_test.dart
index f24a3ce..d984401 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_assignment_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_assignment_test.dart
@@ -93,7 +93,8 @@
 }
 
 @reflectiveTest
-class InvalidAssignmentTest extends PubPackageResolutionTest {
+class InvalidAssignmentTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_assignment_to_dynamic() async {
     await assertErrorsInCode(r'''
 f() {
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_cast_new_expr_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_cast_new_expr_test.dart
index fc1ce1e..80347bb 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_cast_new_expr_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_cast_new_expr_test.dart
@@ -14,7 +14,10 @@
 }
 
 @reflectiveTest
-class InvalidCastNewExprTest extends PubPackageResolutionTest {
+class InvalidCastNewExprTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
+  // TODO(https://github.com/dart-lang/sdk/issues/44666): Use null safety in
+  //  test cases.
   test_listLiteral_const() async {
     await assertErrorsInCode(r'''
 const c = <B>[A()];
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_constant_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_constant_test.dart
index a000c02..1eaf99d 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_constant_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_constant_test.dart
@@ -15,7 +15,8 @@
 }
 
 @reflectiveTest
-class InvalidConstantTest extends PubPackageResolutionTest {
+class InvalidConstantTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_in_initializer_assert_condition() async {
     await assertErrorsInCode('''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_field_type_in_struct_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_field_type_in_struct_test.dart
index 6fec555..4cdedd7 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_field_type_in_struct_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_field_type_in_struct_test.dart
@@ -20,12 +20,12 @@
     await assertErrorsInCode(r'''
 import 'dart:ffi';
 class C extends Struct {
-  String str;
+  String? str;
 
-  Pointer notEmpty;
+  Pointer? notEmpty;
 }
 ''', [
-      error(FfiCode.INVALID_FIELD_TYPE_IN_STRUCT, 46, 6),
+      error(FfiCode.INVALID_FIELD_TYPE_IN_STRUCT, 46, 7),
     ]);
   }
 
@@ -33,7 +33,7 @@
     await assertNoErrorsInCode(r'''
 import 'dart:ffi';
 class C extends Struct {
-  Pointer p;
+  Pointer? p;
 }
 ''');
   }
@@ -43,9 +43,9 @@
     await assertNoErrorsInCode(r'''
 import 'dart:ffi';
 class C extends Struct {
-  static String str;
+  static String? str;
 
-  Pointer notEmpty;
+  Pointer? notEmpty;
 }
 ''');
   }
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_implementation_override_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_implementation_override_test.dart
index dba5d65..7e0de60 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_implementation_override_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_implementation_override_test.dart
@@ -15,7 +15,8 @@
 }
 
 @reflectiveTest
-class InvalidImplementationOverrideTest extends PubPackageResolutionTest {
+class InvalidImplementationOverrideTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_getter_abstractOverridesConcrete() async {
     await assertErrorsInCode('''
 class A {
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 b70e7b3..13338b4 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
@@ -20,6 +20,9 @@
 @reflectiveTest
 class InvalidLanguageOverrideGreaterTest extends PubPackageResolutionTest
     with WithNullSafetyMixin {
+  @override
+  String? get testPackageLanguageVersion => null;
+
   test_greaterThanLatest() async {
     var latestVersion = ExperimentStatus.currentVersion;
     await assertErrorsInCode('''
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_override_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_override_test.dart
index 42afb2e..89b8221 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_override_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_override_test.dart
@@ -15,7 +15,8 @@
 }
 
 @reflectiveTest
-class InvalidOverrideTest extends PubPackageResolutionTest {
+class InvalidOverrideTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_getter_returnType() async {
     await assertErrorsInCode('''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_reference_to_this_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_reference_to_this_test.dart
index d565790..f58cb1a 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_reference_to_this_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_reference_to_this_test.dart
@@ -15,7 +15,8 @@
 }
 
 @reflectiveTest
-class InvalidReferenceToThisTest extends PubPackageResolutionTest {
+class InvalidReferenceToThisTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_class_constructor() async {
     await assertErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_super_invocation_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_super_invocation_test.dart
index 68f2839..078fecf 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_super_invocation_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_super_invocation_test.dart
@@ -18,10 +18,10 @@
   test_superBeforeAssert() async {
     await assertErrorsInCode(r'''
 class A {
-  A(int x) : super(), assert(x != null);
+  A(int? x) : super(), assert(x != null);
 }
 ''', [
-      error(CompileTimeErrorCode.INVALID_SUPER_INVOCATION, 23, 5),
+      error(CompileTimeErrorCode.INVALID_SUPER_INVOCATION, 24, 5),
     ]);
   }
 
diff --git a/pkg/analyzer/test/src/diagnostics/invocation_of_extension_without_call_test.dart b/pkg/analyzer/test/src/diagnostics/invocation_of_extension_without_call_test.dart
index 780de76..a7e6924 100644
--- a/pkg/analyzer/test/src/diagnostics/invocation_of_extension_without_call_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invocation_of_extension_without_call_test.dart
@@ -14,7 +14,8 @@
 }
 
 @reflectiveTest
-class InvocationOfExtensionWithoutCallTest extends PubPackageResolutionTest {
+class InvocationOfExtensionWithoutCallTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_instance_differentKind() async {
     await assertErrorsInCode('''
 extension E on Object {}
diff --git a/pkg/analyzer/test/src/diagnostics/label_undefined_test.dart b/pkg/analyzer/test/src/diagnostics/label_undefined_test.dart
index c89d139..abe2d6a 100644
--- a/pkg/analyzer/test/src/diagnostics/label_undefined_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/label_undefined_test.dart
@@ -15,7 +15,8 @@
 }
 
 @reflectiveTest
-class LabelUndefinedTest extends PubPackageResolutionTest {
+class LabelUndefinedTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_break() async {
     await assertErrorsInCode(r'''
 f() {
diff --git a/pkg/analyzer/test/src/diagnostics/list_element_type_not_assignable_test.dart b/pkg/analyzer/test/src/diagnostics/list_element_type_not_assignable_test.dart
index 6c69432..54f519d 100644
--- a/pkg/analyzer/test/src/diagnostics/list_element_type_not_assignable_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/list_element_type_not_assignable_test.dart
@@ -92,7 +92,7 @@
 
   test_const_stringNull() async {
     await assertNoErrorsInCode('''
-var v = const <String>[null];
+var v = const <String?>[null];
 ''');
   }
 
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 43b7fa9..357315a 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
@@ -16,7 +16,7 @@
 
 @reflectiveTest
 class MainFirstPositionalParameterTest extends PubPackageResolutionTest
-    with MainFirstPositionalParameterTestCases {}
+    with WithoutNullSafetyMixin, MainFirstPositionalParameterTestCases {}
 
 mixin MainFirstPositionalParameterTestCases on PubPackageResolutionTest {
   test_positionalOptional_listOfInt() async {
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 dab48b2..5687f54 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
@@ -16,7 +16,7 @@
 
 @reflectiveTest
 class MainHasRequiredNamedParametersTest extends PubPackageResolutionTest
-    with MainHasRequiredNamedParametersTestCases {}
+    with WithoutNullSafetyMixin, MainHasRequiredNamedParametersTestCases {}
 
 mixin MainHasRequiredNamedParametersTestCases on PubPackageResolutionTest {
   test_namedOptional() async {
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 6457de5..f9036ac 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
@@ -19,7 +19,9 @@
 @reflectiveTest
 class MainHasTooManyRequiredPositionalParametersTest
     extends PubPackageResolutionTest
-    with MainHasTooManyRequiredPositionalParametersTestCases {}
+    with
+        WithoutNullSafetyMixin,
+        MainHasTooManyRequiredPositionalParametersTestCases {}
 
 mixin MainHasTooManyRequiredPositionalParametersTestCases
     on PubPackageResolutionTest {
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 6b5921d..11ebf19 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
@@ -16,7 +16,7 @@
 
 @reflectiveTest
 class MainIsNotFunctionTest extends PubPackageResolutionTest
-    with MainIsNotFunctionTestCases {}
+    with WithoutNullSafetyMixin, MainIsNotFunctionTestCases {}
 
 mixin MainIsNotFunctionTestCases on PubPackageResolutionTest {
   test_class() async {
diff --git a/pkg/analyzer/test/src/diagnostics/map_key_type_not_assignable_test.dart b/pkg/analyzer/test/src/diagnostics/map_key_type_not_assignable_test.dart
index 55fcfd1..44ef7ef 100644
--- a/pkg/analyzer/test/src/diagnostics/map_key_type_not_assignable_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/map_key_type_not_assignable_test.dart
@@ -10,6 +10,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(MapKeyTypeNotAssignableTest);
+    defineReflectiveTests(MapKeyTypeNotAssignableWithoutNullSafetyTest);
   });
 }
 
@@ -187,12 +188,6 @@
 ''');
   }
 
-  test_nonConst_spread_intNum() async {
-    await assertNoErrorsInCode('''
-var v = <int, int>{...<num, num>{1: 1}};
-''');
-  }
-
   test_nonConst_spread_intString() async {
     await assertErrorsInCode('''
 var v = <int, String>{...{'a': 'a'}};
@@ -208,3 +203,14 @@
 ''');
   }
 }
+
+@reflectiveTest
+class MapKeyTypeNotAssignableWithoutNullSafetyTest
+    extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin, MapKeyTypeNotAssignableTestCases {
+  test_nonConst_spread_intNum() async {
+    await assertNoErrorsInCode('''
+var v = <int, int>{...<num, num>{1: 1}};
+''');
+  }
+}
diff --git a/pkg/analyzer/test/src/diagnostics/map_value_type_not_assignable_test.dart b/pkg/analyzer/test/src/diagnostics/map_value_type_not_assignable_test.dart
index 443ce2b..e5d6220 100644
--- a/pkg/analyzer/test/src/diagnostics/map_value_type_not_assignable_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/map_value_type_not_assignable_test.dart
@@ -10,6 +10,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(MapValueTypeNotAssignableTest);
+    defineReflectiveTests(MapValueTypeNotAssignableWithoutNullSafetyTest);
   });
 }
 
@@ -181,12 +182,6 @@
 ''');
   }
 
-  test_nonConst_spread_intNum() async {
-    await assertNoErrorsInCode('''
-var v = <int, int>{...<num, num>{1: 1}};
-''');
-  }
-
   test_nonConst_spread_intString() async {
     await assertErrorsInCode('''
 var v = <bool, int>{...{true: 'a'}};
@@ -202,3 +197,14 @@
 ''');
   }
 }
+
+@reflectiveTest
+class MapValueTypeNotAssignableWithoutNullSafetyTest
+    extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin, MapValueTypeNotAssignableTestCases {
+  test_nonConst_spread_intNum() async {
+    await assertNoErrorsInCode('''
+var v = <int, int>{...<num, num>{1: 1}};
+''');
+  }
+}
diff --git a/pkg/analyzer/test/src/diagnostics/missing_enum_constant_in_switch_test.dart b/pkg/analyzer/test/src/diagnostics/missing_enum_constant_in_switch_test.dart
index 86eee40..e3523e4 100644
--- a/pkg/analyzer/test/src/diagnostics/missing_enum_constant_in_switch_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/missing_enum_constant_in_switch_test.dart
@@ -15,7 +15,8 @@
 }
 
 @reflectiveTest
-class MissingEnumConstantInSwitchTest extends PubPackageResolutionTest {
+class MissingEnumConstantInSwitchTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_default() async {
     await assertNoErrorsInCode('''
 enum E { one, two, three }
diff --git a/pkg/analyzer/test/src/diagnostics/missing_js_lib_annotation_test.dart b/pkg/analyzer/test/src/diagnostics/missing_js_lib_annotation_test.dart
index 82c93cd..9f0346b 100644
--- a/pkg/analyzer/test/src/diagnostics/missing_js_lib_annotation_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/missing_js_lib_annotation_test.dart
@@ -11,6 +11,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(MissingJSLibAnnotationTest);
+    defineReflectiveTests(MissingJSLibAnnotationWithoutNullSafetyTest);
   });
 }
 
@@ -36,19 +37,6 @@
     ]);
   }
 
-  test_externalField() async {
-    // https://github.com/dart-lang/sdk/issues/26987
-    await assertErrorsInCode('''
-import 'package:js/js.dart';
-
-@JS()
-external dynamic exports;
-''', [
-      error(HintCode.MISSING_JS_LIB_ANNOTATION, 30, 5),
-      error(ParserErrorCode.EXTERNAL_FIELD, 36, 8),
-    ]);
-  }
-
   test_function() async {
     await assertErrorsInCode('''
 library foo;
@@ -101,3 +89,27 @@
     ]);
   }
 }
+
+@reflectiveTest
+class MissingJSLibAnnotationWithoutNullSafetyTest
+    extends PubPackageResolutionTest with WithoutNullSafetyMixin {
+  @override
+  void setUp() {
+    super.setUp();
+
+    writeTestPackageConfig(PackageConfigFileBuilder(), js: true);
+  }
+
+  test_externalField() async {
+    // https://github.com/dart-lang/sdk/issues/26987
+    await assertErrorsInCode('''
+import 'package:js/js.dart';
+
+@JS()
+external dynamic exports;
+''', [
+      error(HintCode.MISSING_JS_LIB_ANNOTATION, 30, 5),
+      error(ParserErrorCode.EXTERNAL_FIELD, 36, 8),
+    ]);
+  }
+}
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 236e071..865ef42 100644
--- a/pkg/analyzer/test/src/diagnostics/missing_required_param_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/missing_required_param_test.dart
@@ -16,7 +16,8 @@
 }
 
 @reflectiveTest
-class MissingRequiredParamTest extends PubPackageResolutionTest {
+class MissingRequiredParamTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   @override
   void setUp() {
     super.setUp();
diff --git a/pkg/analyzer/test/src/diagnostics/missing_return_test.dart b/pkg/analyzer/test/src/diagnostics/missing_return_test.dart
index 4d9fec5..99e1950 100644
--- a/pkg/analyzer/test/src/diagnostics/missing_return_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/missing_return_test.dart
@@ -15,7 +15,8 @@
 }
 
 @reflectiveTest
-class MissingReturnTest extends PubPackageResolutionTest {
+class MissingReturnTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_alwaysThrows() async {
     writeTestPackageConfigWithMeta();
     await assertNoErrorsInCode(r'''
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 cdc0fde..f83053e 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
@@ -18,7 +18,9 @@
 
 @reflectiveTest
 class MixinInferenceNoPossibleSubstitutionTest extends PubPackageResolutionTest
-    with MixinInferenceNoPossibleSubstitutionTestCases {}
+    with
+        WithoutNullSafetyMixin,
+        MixinInferenceNoPossibleSubstitutionTestCases {}
 
 mixin MixinInferenceNoPossibleSubstitutionTestCases on ResolutionTest {
   test_valid_single() async {
diff --git a/pkg/analyzer/test/src/diagnostics/mixin_of_non_class_test.dart b/pkg/analyzer/test/src/diagnostics/mixin_of_non_class_test.dart
index 948a8dd..53935fa 100644
--- a/pkg/analyzer/test/src/diagnostics/mixin_of_non_class_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/mixin_of_non_class_test.dart
@@ -15,7 +15,8 @@
 }
 
 @reflectiveTest
-class MixinOfNonClassTest extends PubPackageResolutionTest {
+class MixinOfNonClassTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_class() async {
     await assertErrorsInCode(r'''
 int A = 7;
diff --git a/pkg/analyzer/test/src/diagnostics/mixin_super_class_constraint_non_interface_test.dart b/pkg/analyzer/test/src/diagnostics/mixin_super_class_constraint_non_interface_test.dart
index cec22cb..204e614 100644
--- a/pkg/analyzer/test/src/diagnostics/mixin_super_class_constraint_non_interface_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/mixin_super_class_constraint_non_interface_test.dart
@@ -16,8 +16,8 @@
 }
 
 @reflectiveTest
-class MixinSuperClassConstraintNonInterfaceTest
-    extends PubPackageResolutionTest {}
+class MixinSuperClassConstraintNonInterfaceTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {}
 
 @reflectiveTest
 class MixinSuperClassConstraintNonInterfaceWithNullSafetyTest
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 3643e02..3352f08 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
@@ -16,7 +16,7 @@
 
 @reflectiveTest
 class NoDefaultSuperConstructorTest extends PubPackageResolutionTest
-    with NoDefaultSuperConstructorTestCases {}
+    with WithoutNullSafetyMixin, NoDefaultSuperConstructorTestCases {}
 
 mixin NoDefaultSuperConstructorTestCases on PubPackageResolutionTest {
   test_explicitDefaultSuperConstructor() async {
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 ef8e5e6..8467c31 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
@@ -18,7 +18,9 @@
 @reflectiveTest
 class NonAbstractClassInheritsAbstractMemberTest
     extends PubPackageResolutionTest
-    with NonAbstractClassInheritsAbstractMemberTestCases {}
+    with
+        WithoutNullSafetyMixin,
+        NonAbstractClassInheritsAbstractMemberTestCases {}
 
 mixin NonAbstractClassInheritsAbstractMemberTestCases
     on PubPackageResolutionTest {
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 f7aa310..4ba6bf1 100644
--- a/pkg/analyzer/test/src/diagnostics/non_bool_condition_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_bool_condition_test.dart
@@ -15,7 +15,8 @@
 }
 
 @reflectiveTest
-class NonBoolConditionTest extends PubPackageResolutionTest {
+class NonBoolConditionTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_conditional() async {
     await assertErrorsInCode('''
 f() { return 3 ? 2 : 1; }
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 1fdb4eb..562e090 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
@@ -15,7 +15,8 @@
 }
 
 @reflectiveTest
-class NonBoolNegationExpressionTest extends PubPackageResolutionTest {
+class NonBoolNegationExpressionTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_nonBool() async {
     await assertErrorsInCode(r'''
 f() {
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 456e55c..da6767b 100644
--- a/pkg/analyzer/test/src/diagnostics/non_bool_operand_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_bool_operand_test.dart
@@ -15,7 +15,8 @@
 }
 
 @reflectiveTest
-class NonBoolOperandTest extends PubPackageResolutionTest {
+class NonBoolOperandTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_and_left() async {
     await assertErrorsInCode(r'''
 bool f(int left, bool right) {
diff --git a/pkg/analyzer/test/src/diagnostics/non_constant_case_expression_test.dart b/pkg/analyzer/test/src/diagnostics/non_constant_case_expression_test.dart
index 0140b9e..d36da75 100644
--- a/pkg/analyzer/test/src/diagnostics/non_constant_case_expression_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_constant_case_expression_test.dart
@@ -15,7 +15,8 @@
 }
 
 @reflectiveTest
-class NonConstantCaseExpressionTest extends PubPackageResolutionTest {
+class NonConstantCaseExpressionTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_constField() async {
     await assertNoErrorsInCode(r'''
 void f(C e) {
diff --git a/pkg/analyzer/test/src/diagnostics/non_type_in_catch_clause_test.dart b/pkg/analyzer/test/src/diagnostics/non_type_in_catch_clause_test.dart
index 17c3039..530ff4b 100644
--- a/pkg/analyzer/test/src/diagnostics/non_type_in_catch_clause_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_type_in_catch_clause_test.dart
@@ -62,6 +62,8 @@
   }
 }
 ''', [
+      // TODO(srawlins): Ideally the first error should not be reported.
+      error(HintCode.NULLABLE_TYPE_IN_CATCH_CLAUSE, 21, 1),
       error(CompileTimeErrorCode.NON_TYPE_IN_CATCH_CLAUSE, 21, 1),
       error(HintCode.UNUSED_CATCH_CLAUSE, 30, 1),
     ]);
@@ -76,6 +78,8 @@
   }
 }
 ''', [
+      // TODO(srawlins): Ideally the first error should not be reported.
+      error(HintCode.NULLABLE_TYPE_IN_CATCH_CLAUSE, 32, 1),
       error(CompileTimeErrorCode.NON_TYPE_IN_CATCH_CLAUSE, 32, 1),
       error(HintCode.UNUSED_CATCH_CLAUSE, 41, 1),
     ]);
diff --git a/pkg/analyzer/test/src/diagnostics/not_iterable_spread_test.dart b/pkg/analyzer/test/src/diagnostics/not_iterable_spread_test.dart
index 4be6794..a8b606c 100644
--- a/pkg/analyzer/test/src/diagnostics/not_iterable_spread_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/not_iterable_spread_test.dart
@@ -28,7 +28,8 @@
 }
 
 @reflectiveTest
-class NotIterableSpreadTest extends PubPackageResolutionTest {
+class NotIterableSpreadTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_iterable_list() async {
     await assertNoErrorsInCode('''
 var a = [0];
diff --git a/pkg/analyzer/test/src/diagnostics/not_map_spread_test.dart b/pkg/analyzer/test/src/diagnostics/not_map_spread_test.dart
index b95d6f8..c025714 100644
--- a/pkg/analyzer/test/src/diagnostics/not_map_spread_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/not_map_spread_test.dart
@@ -28,7 +28,8 @@
 }
 
 @reflectiveTest
-class NotMapSpreadTest extends PubPackageResolutionTest {
+class NotMapSpreadTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_map() async {
     await assertNoErrorsInCode('''
 var a = {0: 0};
diff --git a/pkg/analyzer/test/src/diagnostics/not_null_aware_null_spread_test.dart b/pkg/analyzer/test/src/diagnostics/not_null_aware_null_spread_test.dart
index f521be8..4fe91b3 100644
--- a/pkg/analyzer/test/src/diagnostics/not_null_aware_null_spread_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/not_null_aware_null_spread_test.dart
@@ -14,7 +14,10 @@
 }
 
 @reflectiveTest
-class NotNullAwareNullSpreadTest extends PubPackageResolutionTest {
+class NotNullAwareNullSpreadTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
+  // TODO(https://github.com/dart-lang/sdk/issues/44666): Use null safety in
+  //  test cases.
   test_listLiteral_notNullAware_nullLiteral() async {
     await assertErrorsInCode('''
 var v = [...null];
diff --git a/pkg/analyzer/test/src/diagnostics/null_aware_before_operator_test.dart b/pkg/analyzer/test/src/diagnostics/null_aware_before_operator_test.dart
index 2fb8510..0dc59fb 100644
--- a/pkg/analyzer/test/src/diagnostics/null_aware_before_operator_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/null_aware_before_operator_test.dart
@@ -14,7 +14,10 @@
 }
 
 @reflectiveTest
-class NullAwareBeforeOperatorTest extends PubPackageResolutionTest {
+class NullAwareBeforeOperatorTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
+  // TODO(https://github.com/dart-lang/sdk/issues/44666): Use null safety in
+  //  test cases.
   test_assignment() async {
     await assertNoErrorsInCode(r'''
 m(x) {
diff --git a/pkg/analyzer/test/src/diagnostics/null_aware_in_condition_test.dart b/pkg/analyzer/test/src/diagnostics/null_aware_in_condition_test.dart
index 94daa48..4c3a84ba 100644
--- a/pkg/analyzer/test/src/diagnostics/null_aware_in_condition_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/null_aware_in_condition_test.dart
@@ -14,7 +14,10 @@
 }
 
 @reflectiveTest
-class NullAwareInConditionTest extends PubPackageResolutionTest {
+class NullAwareInConditionTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
+  // TODO(https://github.com/dart-lang/sdk/issues/44666): Use null safety in
+  //  test cases.
   test_assert() async {
     await assertErrorsInCode(r'''
 m(x) {
diff --git a/pkg/analyzer/test/src/diagnostics/null_aware_in_logical_operator_test.dart b/pkg/analyzer/test/src/diagnostics/null_aware_in_logical_operator_test.dart
index a64628b..384de5c 100644
--- a/pkg/analyzer/test/src/diagnostics/null_aware_in_logical_operator_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/null_aware_in_logical_operator_test.dart
@@ -14,7 +14,10 @@
 }
 
 @reflectiveTest
-class NullAwareInLogicalOperatorTest extends PubPackageResolutionTest {
+class NullAwareInLogicalOperatorTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
+  // TODO(https://github.com/dart-lang/sdk/issues/44666): Use null safety in
+  //  test cases.
   test_conditionalAnd_first() async {
     await assertErrorsInCode(r'''
 m(x) {
diff --git a/pkg/analyzer/test/src/diagnostics/prefix_shadowed_by_local_declaration_test.dart b/pkg/analyzer/test/src/diagnostics/prefix_shadowed_by_local_declaration_test.dart
index 33c6cf1..b6b7e32 100644
--- a/pkg/analyzer/test/src/diagnostics/prefix_shadowed_by_local_declaration_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/prefix_shadowed_by_local_declaration_test.dart
@@ -18,7 +18,7 @@
   test_function_return_type_not_shadowed_by_parameter() async {
     await assertNoErrorsInCode('''
 import 'dart:async' as a;
-a.Future f(int a) {
+a.Future? f(int a) {
   return null;
 }
 ''');
@@ -28,7 +28,7 @@
     await assertErrorsInCode('''
 import 'dart:async' as a;
 f(int a) {
-  a.Future x = null;
+  a.Future? x = null;
   return x;
 }
 ''', [
@@ -41,14 +41,14 @@
     await assertErrorsInCode('''
 import 'dart:async' as a;
 f() {
-  a.Future x = null;
+  a.Future? x = null;
   int a = 0;
   return [x, a];
 }
 ''', [
       error(HintCode.UNUSED_IMPORT, 7, 12),
       error(CompileTimeErrorCode.REFERENCED_BEFORE_DECLARATION, 34, 1,
-          contextMessages: [message('$testPackageLibPath/test.dart', 59, 1)]),
+          contextMessages: [message('$testPackageLibPath/test.dart', 60, 1)]),
       error(CompileTimeErrorCode.PREFIX_SHADOWED_BY_LOCAL_DECLARATION, 34, 1),
     ]);
   }
@@ -58,7 +58,7 @@
 import 'dart:async' as a;
 f() {
   int a = 0;
-  a.Future x = null;
+  a.Future? x = null;
   return [x, a];
 }
 ''', [
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 411e564..60eeb58 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
@@ -558,7 +558,8 @@
 }
 
 @reflectiveTest
-class InvalidUseOfNeverTest_Legacy extends PubPackageResolutionTest {
+class InvalidUseOfNeverTest_Legacy extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_binaryExpression_eqEq() async {
     await assertNoErrorsInCode(r'''
 void f() {
diff --git a/pkg/analyzer/test/src/diagnostics/return_of_do_not_store_test.dart b/pkg/analyzer/test/src/diagnostics/return_of_do_not_store_test.dart
index c8f61f5..ec72a74 100644
--- a/pkg/analyzer/test/src/diagnostics/return_of_do_not_store_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/return_of_do_not_store_test.dart
@@ -84,17 +84,15 @@
 import 'package:meta/meta.dart';
 
 @doNotStore
-String _v = '';
+String? _v = '';
 
 @doNotStore
-String _v2 = '';
+String? _v2 = '';
 
-var b = true;
-
-String get v => _v ?? _v2;
+String? get v => _v ?? _v2;
 ''', [
-      error(HintCode.RETURN_OF_DO_NOT_STORE, 124, 2, messageContains: '_v'),
-      error(HintCode.RETURN_OF_DO_NOT_STORE, 130, 3, messageContains: '_v2'),
+      error(HintCode.RETURN_OF_DO_NOT_STORE, 112, 2, messageContains: '_v'),
+      error(HintCode.RETURN_OF_DO_NOT_STORE, 118, 3, messageContains: '_v2'),
     ]);
   }
 
diff --git a/pkg/analyzer/test/src/diagnostics/return_of_invalid_type_from_catch_error_test.dart b/pkg/analyzer/test/src/diagnostics/return_of_invalid_type_from_catch_error_test.dart
index 51b7617..1e976ed 100644
--- a/pkg/analyzer/test/src/diagnostics/return_of_invalid_type_from_catch_error_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/return_of_invalid_type_from_catch_error_test.dart
@@ -15,7 +15,8 @@
 }
 
 @reflectiveTest
-class ReturnOfInvalidTypeForCatchErrorTest extends PubPackageResolutionTest {
+class ReturnOfInvalidTypeForCatchErrorTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_async_okReturnType() async {
     await assertNoErrorsInCode('''
 void f(Future<int> future) {
diff --git a/pkg/analyzer/test/src/diagnostics/return_of_invalid_type_test.dart b/pkg/analyzer/test/src/diagnostics/return_of_invalid_type_test.dart
index 986bd56..d1f7457 100644
--- a/pkg/analyzer/test/src/diagnostics/return_of_invalid_type_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/return_of_invalid_type_test.dart
@@ -15,7 +15,8 @@
 }
 
 @reflectiveTest
-class ReturnOfInvalidTypeTest extends PubPackageResolutionTest {
+class ReturnOfInvalidTypeTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_closure() async {
     await assertErrorsInCode('''
 typedef Td = int Function();
diff --git a/pkg/analyzer/test/src/diagnostics/return_type_invalid_for_catch_error_test.dart b/pkg/analyzer/test/src/diagnostics/return_type_invalid_for_catch_error_test.dart
index ddd5ed2..fd534d0 100644
--- a/pkg/analyzer/test/src/diagnostics/return_type_invalid_for_catch_error_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/return_type_invalid_for_catch_error_test.dart
@@ -15,7 +15,8 @@
 }
 
 @reflectiveTest
-class ReturnTypeInvalidForCatchErrorTest extends PubPackageResolutionTest {
+class ReturnTypeInvalidForCatchErrorTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_dynamic_returnTypeIsUnrelatedFuture() async {
     await assertNoErrorsInCode('''
 void f(
diff --git a/pkg/analyzer/test/src/diagnostics/return_without_value_test.dart b/pkg/analyzer/test/src/diagnostics/return_without_value_test.dart
index 9a31d66..f90e7e6 100644
--- a/pkg/analyzer/test/src/diagnostics/return_without_value_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/return_without_value_test.dart
@@ -15,7 +15,8 @@
 }
 
 @reflectiveTest
-class ReturnWithoutValueTest extends PubPackageResolutionTest {
+class ReturnWithoutValueTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_async_futureInt() async {
     await assertErrorsInCode('''
 Future<int> f() async {
diff --git a/pkg/analyzer/test/src/diagnostics/sdk_version_eq_eq_operator_test.dart b/pkg/analyzer/test/src/diagnostics/sdk_version_eq_eq_operator_test.dart
index dc8a974..34ff26a 100644
--- a/pkg/analyzer/test/src/diagnostics/sdk_version_eq_eq_operator_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/sdk_version_eq_eq_operator_test.dart
@@ -5,6 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
+import '../dart/resolution/context_collection_resolution.dart';
 import 'sdk_constraint_verifier_support.dart';
 
 main() {
@@ -14,7 +15,10 @@
 }
 
 @reflectiveTest
-class SdkVersionEqEqOperatorTest extends SdkConstraintVerifierTest {
+class SdkVersionEqEqOperatorTest extends SdkConstraintVerifierTest
+    with WithoutNullSafetyMixin {
+  // TODO(https://github.com/dart-lang/sdk/issues/44666): Use null safety in
+  //  test cases.
   test_left_equals() async {
     await verifyVersion('2.5.0', '''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/sdk_version_never_test.dart b/pkg/analyzer/test/src/diagnostics/sdk_version_never_test.dart
index 6601e17..4773eae 100644
--- a/pkg/analyzer/test/src/diagnostics/sdk_version_never_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/sdk_version_never_test.dart
@@ -16,7 +16,8 @@
 }
 
 @reflectiveTest
-class SdkVersionNeverTest extends SdkConstraintVerifierTest {
+class SdkVersionNeverTest extends SdkConstraintVerifierTest
+    with WithoutNullSafetyMixin {
   test_languageVersionBeforeNullSafety() async {
     await verifyVersion('2.7.0', r'''
 Never foo;
diff --git a/pkg/analyzer/test/src/diagnostics/switch_expression_not_assignable_test.dart b/pkg/analyzer/test/src/diagnostics/switch_expression_not_assignable_test.dart
index 60f0a17..91b2978 100644
--- a/pkg/analyzer/test/src/diagnostics/switch_expression_not_assignable_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/switch_expression_not_assignable_test.dart
@@ -14,7 +14,10 @@
 }
 
 @reflectiveTest
-class SwitchExpressionNotAssignableTest extends PubPackageResolutionTest {
+class SwitchExpressionNotAssignableTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
+  // TODO(https://github.com/dart-lang/sdk/issues/44666): Use null safety in
+  //  test cases.
   test_simple() async {
     await assertErrorsInCode('''
 f(int p) {
diff --git a/pkg/analyzer/test/src/diagnostics/type_alias_cannot_reference_itself_test.dart b/pkg/analyzer/test/src/diagnostics/type_alias_cannot_reference_itself_test.dart
index 4c9ceb3..7b85a9e 100644
--- a/pkg/analyzer/test/src/diagnostics/type_alias_cannot_reference_itself_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/type_alias_cannot_reference_itself_test.dart
@@ -39,7 +39,7 @@
 typedef F = void Function(List<G> l);
 typedef G = void Function(List<F> l);
 main() {
-  F foo(G g) => g;
+  F? foo(G? g) => g;
   foo(null);
 }
 ''', [
@@ -69,7 +69,7 @@
 typedef void F(List<G> l);
 typedef void G(List<F> l);
 main() {
-  F foo(G g) => g;
+  F? foo(G? g) => g;
   foo(null);
 }
 ''', [
@@ -127,7 +127,7 @@
     await assertNoErrorsInCode(r'''
 typedef B A();
 class B {
-  A a;
+  A? a;
 }
 ''');
   }
@@ -138,7 +138,7 @@
 typedef C A();
 typedef A B();
 class C {
-  B a;
+  B? a;
 }
 ''');
   }
diff --git a/pkg/analyzer/test/src/diagnostics/type_annotation_deferred_class_test.dart b/pkg/analyzer/test/src/diagnostics/type_annotation_deferred_class_test.dart
index a82563a..1068226 100644
--- a/pkg/analyzer/test/src/diagnostics/type_annotation_deferred_class_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/type_annotation_deferred_class_test.dart
@@ -67,8 +67,9 @@
     await assertErrorsInCode('''
 library root;
 import 'lib1.dart' deferred as a;
-a.A f() { return null; }''', [
-      error(CompileTimeErrorCode.TYPE_ANNOTATION_DEFERRED_CLASS, 48, 3),
+a.A? f() { return null; }
+''', [
+      error(CompileTimeErrorCode.TYPE_ANNOTATION_DEFERRED_CLASS, 48, 4),
     ]);
   }
 
@@ -107,9 +108,9 @@
 library root;
 import 'lib1.dart' deferred as a;
 class C {
-  a.A m() { return null; }
+  a.A? m() { return null; }
 }''', [
-      error(CompileTimeErrorCode.TYPE_ANNOTATION_DEFERRED_CLASS, 60, 3),
+      error(CompileTimeErrorCode.TYPE_ANNOTATION_DEFERRED_CLASS, 60, 4),
     ]);
   }
 
diff --git a/pkg/analyzer/test/src/diagnostics/type_argument_not_matching_bounds_test.dart b/pkg/analyzer/test/src/diagnostics/type_argument_not_matching_bounds_test.dart
index fba1fe4..0a010bf 100644
--- a/pkg/analyzer/test/src/diagnostics/type_argument_not_matching_bounds_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/type_argument_not_matching_bounds_test.dart
@@ -21,7 +21,7 @@
 
 @reflectiveTest
 class TypeArgumentNotMatchingBoundsTest extends PubPackageResolutionTest
-    with TypeArgumentNotMatchingBoundsTestCases {
+    with WithoutNullSafetyMixin, TypeArgumentNotMatchingBoundsTestCases {
   test_regression_42196_Null() async {
     await assertNoErrorsInCode(r'''
 typedef G<X> = Function(X);
diff --git a/pkg/analyzer/test/src/diagnostics/type_parameter_referenced_by_static_test.dart b/pkg/analyzer/test/src/diagnostics/type_parameter_referenced_by_static_test.dart
index 96fb733..bdae863 100644
--- a/pkg/analyzer/test/src/diagnostics/type_parameter_referenced_by_static_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/type_parameter_referenced_by_static_test.dart
@@ -30,7 +30,7 @@
   test_type_field() async {
     await assertErrorsInCode('''
 class A<T> {
-  static T foo;
+  static T? foo;
 }
 ''', [
       error(CompileTimeErrorCode.TYPE_PARAMETER_REFERENCED_BY_STATIC, 22, 1),
@@ -40,7 +40,7 @@
   test_type_getter() async {
     await assertErrorsInCode('''
 class A<T> {
-  static T get foo => null;
+  static T? get foo => null;
 }
 ''', [
       error(CompileTimeErrorCode.TYPE_PARAMETER_REFERENCED_BY_STATIC, 22, 1),
diff --git a/pkg/analyzer/test/src/diagnostics/type_parameter_supertype_of_its_bound_test.dart b/pkg/analyzer/test/src/diagnostics/type_parameter_supertype_of_its_bound_test.dart
index 54192759..fea9303 100644
--- a/pkg/analyzer/test/src/diagnostics/type_parameter_supertype_of_its_bound_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/type_parameter_supertype_of_its_bound_test.dart
@@ -15,7 +15,8 @@
 }
 
 @reflectiveTest
-class TypeParameterSupertypeOfItsBoundTest extends PubPackageResolutionTest {
+class TypeParameterSupertypeOfItsBoundTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_1of1() async {
     await assertErrorsInCode(r'''
 class A<T extends T> {
diff --git a/pkg/analyzer/test/src/diagnostics/undefined_getter_test.dart b/pkg/analyzer/test/src/diagnostics/undefined_getter_test.dart
index 1c3e268..d02a26d 100644
--- a/pkg/analyzer/test/src/diagnostics/undefined_getter_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/undefined_getter_test.dart
@@ -17,7 +17,7 @@
 
 @reflectiveTest
 class UndefinedGetterTest extends PubPackageResolutionTest
-    with UndefinedGetterTestCases {}
+    with WithoutNullSafetyMixin, UndefinedGetterTestCases {}
 
 mixin UndefinedGetterTestCases on PubPackageResolutionTest {
   test_compoundAssignment_hasSetter_instance() async {
diff --git a/pkg/analyzer/test/src/diagnostics/undefined_hidden_name_test.dart b/pkg/analyzer/test/src/diagnostics/undefined_hidden_name_test.dart
index 57fbdfc..6fcfad3 100644
--- a/pkg/analyzer/test/src/diagnostics/undefined_hidden_name_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/undefined_hidden_name_test.dart
@@ -15,7 +15,8 @@
 }
 
 @reflectiveTest
-class UndefinedHiddenNameTest extends PubPackageResolutionTest {
+class UndefinedHiddenNameTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_export() async {
     newFile('$testPackageLibPath/lib1.dart');
     await assertErrorsInCode(r'''
diff --git a/pkg/analyzer/test/src/diagnostics/undefined_identifier_test.dart b/pkg/analyzer/test/src/diagnostics/undefined_identifier_test.dart
index 6195779..1c584a0 100644
--- a/pkg/analyzer/test/src/diagnostics/undefined_identifier_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/undefined_identifier_test.dart
@@ -16,7 +16,8 @@
 }
 
 @reflectiveTest
-class UndefinedIdentifierTest extends PubPackageResolutionTest {
+class UndefinedIdentifierTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   @failingTest
   test_commentReference() async {
     await assertErrorsInCode('''
diff --git a/pkg/analyzer/test/src/diagnostics/undefined_operator_test.dart b/pkg/analyzer/test/src/diagnostics/undefined_operator_test.dart
index 45bc660..fc6fd7c 100644
--- a/pkg/analyzer/test/src/diagnostics/undefined_operator_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/undefined_operator_test.dart
@@ -14,7 +14,10 @@
 }
 
 @reflectiveTest
-class UndefinedOperatorTest extends PubPackageResolutionTest {
+class UndefinedOperatorTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
+  // TODO(https://github.com/dart-lang/sdk/issues/44666): Use null safety in
+  //  test cases.
   test_assignmentExpression_undefined() async {
     await assertErrorsInCode(r'''
 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 3fbb7c1..858c519 100644
--- a/pkg/analyzer/test/src/diagnostics/undefined_setter_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/undefined_setter_test.dart
@@ -16,7 +16,7 @@
 
 @reflectiveTest
 class UndefinedSetterTest extends PubPackageResolutionTest
-    with UndefinedSetterTestCases {}
+    with WithoutNullSafetyMixin, UndefinedSetterTestCases {}
 
 mixin UndefinedSetterTestCases on PubPackageResolutionTest {
   test_importWithPrefix_defined() async {
diff --git a/pkg/analyzer/test/src/diagnostics/undefined_shown_name_test.dart b/pkg/analyzer/test/src/diagnostics/undefined_shown_name_test.dart
index 4fba9ed..ea89f9a 100644
--- a/pkg/analyzer/test/src/diagnostics/undefined_shown_name_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/undefined_shown_name_test.dart
@@ -15,7 +15,8 @@
 }
 
 @reflectiveTest
-class UndefinedShownNameTest extends PubPackageResolutionTest {
+class UndefinedShownNameTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_export() async {
     newFile('$testPackageLibPath/lib1.dart');
     await assertErrorsInCode(r'''
diff --git a/pkg/analyzer/test/src/diagnostics/unnecessary_cast_test.dart b/pkg/analyzer/test/src/diagnostics/unnecessary_cast_test.dart
index 4b9d36e..e0e6397 100644
--- a/pkg/analyzer/test/src/diagnostics/unnecessary_cast_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/unnecessary_cast_test.dart
@@ -15,7 +15,8 @@
 }
 
 @reflectiveTest
-class UnnecessaryCastTest extends PubPackageResolutionTest {
+class UnnecessaryCastTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_conditionalExpression_changesResultType_left() async {
     await assertNoErrorsInCode(r'''
 class A {}
diff --git a/pkg/analyzer/test/src/diagnostics/unnecessary_type_check_test.dart b/pkg/analyzer/test/src/diagnostics/unnecessary_type_check_test.dart
index 4c277a3..65e5479 100644
--- a/pkg/analyzer/test/src/diagnostics/unnecessary_type_check_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/unnecessary_type_check_test.dart
@@ -17,7 +17,8 @@
 }
 
 @reflectiveTest
-class UnnecessaryTypeCheckFalseTest extends PubPackageResolutionTest {
+class UnnecessaryTypeCheckFalseTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_null_not_Null() async {
     await assertErrorsInCode(r'''
 var b = null is! Null;
@@ -71,7 +72,8 @@
 }
 
 @reflectiveTest
-class UnnecessaryTypeCheckTrueTest extends PubPackageResolutionTest {
+class UnnecessaryTypeCheckTrueTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_null_is_Null() async {
     await assertErrorsInCode(r'''
 var b = null is Null;
diff --git a/pkg/analyzer/test/src/diagnostics/unused_element_test.dart b/pkg/analyzer/test/src/diagnostics/unused_element_test.dart
index 08e380a..de000a1 100644
--- a/pkg/analyzer/test/src/diagnostics/unused_element_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/unused_element_test.dart
@@ -16,7 +16,8 @@
 }
 
 @reflectiveTest
-class UnusedElementTest extends PubPackageResolutionTest {
+class UnusedElementTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   @override
   bool get enableUnusedElement => true;
 
diff --git a/pkg/analyzer/test/src/diagnostics/unused_import_test.dart b/pkg/analyzer/test/src/diagnostics/unused_import_test.dart
index db7bfb5..b9ac11a 100644
--- a/pkg/analyzer/test/src/diagnostics/unused_import_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/unused_import_test.dart
@@ -172,7 +172,7 @@
 ''');
     await assertNoErrorsInCode(r'''
 import 'lib1.dart';
-Three three;
+Three? three;
 ''');
   }
 
@@ -191,7 +191,7 @@
 ''');
     await assertNoErrorsInCode(r'''
 import 'lib1.dart';
-Two two;
+Two? two;
 ''');
   }
 
@@ -365,7 +365,7 @@
     await assertErrorsInCode(r'''
 import 'lib1.dart';
 import 'lib1.dart' hide A;
-A a;
+A? a;
 ''', [
       error(HintCode.UNUSED_IMPORT, 27, 11),
     ]);
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 bb87ff3..e25c163 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
@@ -16,7 +16,8 @@
 }
 
 @reflectiveTest
-class UseOfVoidResultTest extends PubPackageResolutionTest {
+class UseOfVoidResultTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_andVoidLhsError() async {
     await assertErrorsInCode('''
 void main() {
diff --git a/pkg/analyzer/test/src/diagnostics/variable_type_mismatch_test.dart b/pkg/analyzer/test/src/diagnostics/variable_type_mismatch_test.dart
index 155020e..0944903 100644
--- a/pkg/analyzer/test/src/diagnostics/variable_type_mismatch_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/variable_type_mismatch_test.dart
@@ -10,6 +10,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(VariableTypeMismatchTest);
+    defineReflectiveTests(VariableTypeMismatchWithoutNullSafetyTest);
   });
 }
 
@@ -17,7 +18,7 @@
 class VariableTypeMismatchTest extends PubPackageResolutionTest {
   test_assignNullToInt() async {
     await assertNoErrorsInCode('''
-const int x = null;
+const int? x = null;
 ''');
   }
 
@@ -45,7 +46,11 @@
       error(CompileTimeErrorCode.UNDEFINED_CLASS, 6, 10),
     ]);
   }
+}
 
+@reflectiveTest
+class VariableTypeMismatchWithoutNullSafetyTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_int_to_double_variable_reference_is_not_promoted() async {
     // Note: in the following code, the declaration of `y` should produce an
     // error because we should only promote literal ints to doubles; we
diff --git a/pkg/analyzer/test/src/diagnostics/wrong_number_of_type_arguments_test.dart b/pkg/analyzer/test/src/diagnostics/wrong_number_of_type_arguments_test.dart
index 3eb42b9..29e3eee 100644
--- a/pkg/analyzer/test/src/diagnostics/wrong_number_of_type_arguments_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/wrong_number_of_type_arguments_test.dart
@@ -18,18 +18,18 @@
   test_class_tooFew() async {
     await assertErrorsInCode(r'''
 class A<E, F> {}
-A<A> a;
+A<A>? a;
 ''', [
-      error(CompileTimeErrorCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS, 17, 4),
+      error(CompileTimeErrorCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS, 17, 5),
     ]);
   }
 
   test_class_tooMany() async {
     await assertErrorsInCode(r'''
 class A<E> {}
-A<A, A> a;
+A<A, A>? a;
 ''', [
-      error(CompileTimeErrorCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS, 14, 7),
+      error(CompileTimeErrorCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS, 14, 8),
     ]);
   }
 
@@ -132,36 +132,36 @@
   test_type_tooFew() async {
     await assertErrorsInCode(r'''
 class A<K, V> {
-  K element;
+  late K element;
 }
 f(A<int> a) {
   a.element.anyGetterExistsInDynamic;
 }
 ''', [
-      error(CompileTimeErrorCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS, 33, 6),
+      error(CompileTimeErrorCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS, 38, 6),
     ]);
   }
 
   test_type_tooMany() async {
     await assertErrorsInCode(r'''
 class A<E> {
-  E element;
+  late E element;
 }
 f(A<int, int> a) {
   a.element.anyGetterExistsInDynamic;
 }
 ''', [
-      error(CompileTimeErrorCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS, 30, 11),
+      error(CompileTimeErrorCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS, 35, 11),
     ]);
   }
 
   test_typeParameter() async {
     await assertErrorsInCode(r'''
 class C<T> {
-  T<int> f;
+  late T<int> f;
 }
 ''', [
-      error(CompileTimeErrorCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS, 15, 6),
+      error(CompileTimeErrorCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS, 20, 6),
     ]);
   }
 
diff --git a/pkg/analyzer/test/src/diagnostics/yield_of_invalid_type_test.dart b/pkg/analyzer/test/src/diagnostics/yield_of_invalid_type_test.dart
index 2062598..a107230 100644
--- a/pkg/analyzer/test/src/diagnostics/yield_of_invalid_type_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/yield_of_invalid_type_test.dart
@@ -15,7 +15,8 @@
 }
 
 @reflectiveTest
-class YieldOfInvalidTypeTest extends PubPackageResolutionTest {
+class YieldOfInvalidTypeTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
   test_none_asyncStar_dynamic_to_streamInt() async {
     await assertErrorsInCode(
         '''
diff --git a/pkg/analyzer/test/src/lint/linter/linter_context_impl_test.dart b/pkg/analyzer/test/src/lint/linter/linter_context_impl_test.dart
index d70792b..cf43a2a 100644
--- a/pkg/analyzer/test/src/lint/linter/linter_context_impl_test.dart
+++ b/pkg/analyzer/test/src/lint/linter/linter_context_impl_test.dart
@@ -23,7 +23,10 @@
 }
 
 @reflectiveTest
-abstract class AbstractLinterContextTest extends PubPackageResolutionTest {
+abstract class AbstractLinterContextTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
+  // TODO(https://github.com/dart-lang/sdk/issues/44666): Use null safety in
+  //  test cases.
   late final LinterContextImpl context;
 
   Future<void> resolve(String content) async {
diff --git a/pkg/analyzer/test/src/task/strong/checker_test.dart b/pkg/analyzer/test/src/task/strong/checker_test.dart
index 777a8a1..5fa624c 100644
--- a/pkg/analyzer/test/src/task/strong/checker_test.dart
+++ b/pkg/analyzer/test/src/task/strong/checker_test.dart
@@ -15,7 +15,9 @@
 }
 
 @reflectiveTest
-class CheckerTest extends PubPackageResolutionTest {
+class CheckerTest extends PubPackageResolutionTest with WithoutNullSafetyMixin {
+  // TODO(https://github.com/dart-lang/sdk/issues/44666): Use null safety in
+  //  test cases.
   test_awaitForInCastsStreamElementToVariable() async {
     await assertErrorsInCode('''
 abstract class MyStream<T> extends Stream<T> {
diff --git a/pkg/analyzer/test/src/task/strong/dart2_inference_test.dart b/pkg/analyzer/test/src/task/strong/dart2_inference_test.dart
index 378090b..d2ec94b 100644
--- a/pkg/analyzer/test/src/task/strong/dart2_inference_test.dart
+++ b/pkg/analyzer/test/src/task/strong/dart2_inference_test.dart
@@ -22,7 +22,10 @@
 ///
 /// https://github.com/dart-lang/sdk/issues/31638
 @reflectiveTest
-class Dart2InferenceTest extends PubPackageResolutionTest {
+class Dart2InferenceTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
+  // TODO(https://github.com/dart-lang/sdk/issues/44666): Use null safety in
+  //  test cases.
   test_bool_assert() async {
     var code = r'''
 T f<T>(int _) => null;
diff --git a/pkg/analyzer/test/src/task/strong/inferred_type_test.dart b/pkg/analyzer/test/src/task/strong/inferred_type_test.dart
index f10a523..cc1d282 100644
--- a/pkg/analyzer/test/src/task/strong/inferred_type_test.dart
+++ b/pkg/analyzer/test/src/task/strong/inferred_type_test.dart
@@ -17,7 +17,10 @@
 }
 
 @reflectiveTest
-class InferredTypeTest extends PubPackageResolutionTest {
+class InferredTypeTest extends PubPackageResolutionTest
+    with WithoutNullSafetyMixin {
+  // TODO(https://github.com/dart-lang/sdk/issues/44666): Use null safety in
+  //  test cases.
   CompilationUnitElement get _resultUnitElement {
     return result.unit!.declaredElement!;
   }
diff --git a/pkg/analyzer/tool/experiments/experiments_test.dart b/pkg/analyzer/tool/experiments/experiments_test.dart
index 1b0e8ec..575c084 100644
--- a/pkg/analyzer/tool/experiments/experiments_test.dart
+++ b/pkg/analyzer/tool/experiments/experiments_test.dart
@@ -1,4 +1,3 @@
-// @dart = 2.9
 // Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
diff --git a/pkg/compiler/lib/src/inferrer/abstract_value_domain.dart b/pkg/compiler/lib/src/inferrer/abstract_value_domain.dart
index a034e30..024f6a2 100644
--- a/pkg/compiler/lib/src/inferrer/abstract_value_domain.dart
+++ b/pkg/compiler/lib/src/inferrer/abstract_value_domain.dart
@@ -391,14 +391,6 @@
   /// number or `null` at runtime.
   AbstractBool isNumberOrNull(covariant AbstractValue value);
 
-  /// Returns an [AbstractBool] that describes whether [value] is a non-integer
-  /// number at runtime.
-  AbstractBool isDouble(covariant AbstractValue value);
-
-  /// Returns an [AbstractBool] that describes whether [value] is a non-integer
-  /// number or `null` at runtime.
-  AbstractBool isDoubleOrNull(covariant AbstractValue value);
-
   /// Returns an [AbstractBool] that describes whether [value] is a JavaScript
   /// bool at runtime.
   AbstractBool isBoolean(covariant AbstractValue value);
diff --git a/pkg/compiler/lib/src/inferrer/inferrer_engine.dart b/pkg/compiler/lib/src/inferrer/inferrer_engine.dart
index 39c1a06..02ae17c 100644
--- a/pkg/compiler/lib/src/inferrer/inferrer_engine.dart
+++ b/pkg/compiler/lib/src/inferrer/inferrer_engine.dart
@@ -671,7 +671,7 @@
 
   /// Returns `true` if [cls] has a 'call' method.
   bool _hasCallType(ClassEntity cls) {
-    return closedWorld.elementMap.types
+    return closedWorld.dartTypes
             .getCallType(closedWorld.elementEnvironment.getThisType(cls)) !=
         null;
   }
diff --git a/pkg/compiler/lib/src/inferrer/powersets/powerset_bits.dart b/pkg/compiler/lib/src/inferrer/powersets/powerset_bits.dart
index 946412a..15738f2 100644
--- a/pkg/compiler/lib/src/inferrer/powersets/powerset_bits.dart
+++ b/pkg/compiler/lib/src/inferrer/powersets/powerset_bits.dart
@@ -244,10 +244,6 @@
     return AbstractBool.Maybe;
   }
 
-  AbstractBool isDoubleOrNull(int value) => isDouble(excludeNull(value));
-
-  AbstractBool isDouble(int value) => isOther(value);
-
   AbstractBool isNumberOrNull(int value) => isNumber(excludeNull(value));
 
   AbstractBool isNumber(int value) => isOther(value);
diff --git a/pkg/compiler/lib/src/inferrer/powersets/powersets.dart b/pkg/compiler/lib/src/inferrer/powersets/powersets.dart
index 22dc603..0931fee 100644
--- a/pkg/compiler/lib/src/inferrer/powersets/powersets.dart
+++ b/pkg/compiler/lib/src/inferrer/powersets/powersets.dart
@@ -436,17 +436,6 @@
           _abstractValueDomain.isTruthy(value._abstractValue));
 
   @override
-  AbstractBool isDoubleOrNull(covariant PowersetValue value) =>
-      AbstractBool.strengthen(
-          _powersetBitsDomain.isDoubleOrNull(value._powersetBits),
-          _abstractValueDomain.isDoubleOrNull(value._abstractValue));
-
-  @override
-  AbstractBool isDouble(covariant PowersetValue value) =>
-      AbstractBool.strengthen(_powersetBitsDomain.isDouble(value._powersetBits),
-          _abstractValueDomain.isDouble(value._abstractValue));
-
-  @override
   AbstractBool isNumberOrNull(covariant PowersetValue value) =>
       AbstractBool.strengthen(
           _powersetBitsDomain.isNumberOrNull(value._powersetBits),
diff --git a/pkg/compiler/lib/src/inferrer/powersets/wrapped.dart b/pkg/compiler/lib/src/inferrer/powersets/wrapped.dart
index 977bef0..46a60ad 100644
--- a/pkg/compiler/lib/src/inferrer/powersets/wrapped.dart
+++ b/pkg/compiler/lib/src/inferrer/powersets/wrapped.dart
@@ -319,14 +319,6 @@
       _abstractValueDomain.isTruthy(value._abstractValue);
 
   @override
-  AbstractBool isDoubleOrNull(covariant WrappedAbstractValue value) =>
-      _abstractValueDomain.isDoubleOrNull(value._abstractValue);
-
-  @override
-  AbstractBool isDouble(covariant WrappedAbstractValue value) =>
-      _abstractValueDomain.isDouble(value._abstractValue);
-
-  @override
   AbstractBool isNumberOrNull(covariant WrappedAbstractValue value) =>
       _abstractValueDomain.isNumberOrNull(value._abstractValue);
 
diff --git a/pkg/compiler/lib/src/inferrer/trivial.dart b/pkg/compiler/lib/src/inferrer/trivial.dart
index 8ddb82b..8e176be 100644
--- a/pkg/compiler/lib/src/inferrer/trivial.dart
+++ b/pkg/compiler/lib/src/inferrer/trivial.dart
@@ -226,12 +226,6 @@
   AbstractBool isTruthy(AbstractValue value) => AbstractBool.Maybe;
 
   @override
-  AbstractBool isDoubleOrNull(AbstractValue value) => AbstractBool.Maybe;
-
-  @override
-  AbstractBool isDouble(AbstractValue value) => AbstractBool.Maybe;
-
-  @override
   AbstractBool isNumberOrNull(AbstractValue value) => AbstractBool.Maybe;
 
   @override
diff --git a/pkg/compiler/lib/src/inferrer/type_system.dart b/pkg/compiler/lib/src/inferrer/type_system.dart
index 32b3081..85f2de5 100644
--- a/pkg/compiler/lib/src/inferrer/type_system.dart
+++ b/pkg/compiler/lib/src/inferrer/type_system.dart
@@ -165,13 +165,6 @@
         getConcreteTypeFor(_abstractValueDomain.positiveIntType);
   }
 
-  TypeInformation doubleTypeCache;
-  TypeInformation get doubleType {
-    if (doubleTypeCache != null) return doubleTypeCache;
-    return doubleTypeCache =
-        getConcreteTypeFor(_abstractValueDomain.doubleType);
-  }
-
   TypeInformation numTypeCache;
   TypeInformation get numType {
     if (numTypeCache != null) return numTypeCache;
diff --git a/pkg/compiler/lib/src/inferrer/typemasks/flat_type_mask.dart b/pkg/compiler/lib/src/inferrer/typemasks/flat_type_mask.dart
index deb7d88..649bc88 100644
--- a/pkg/compiler/lib/src/inferrer/typemasks/flat_type_mask.dart
+++ b/pkg/compiler/lib/src/inferrer/typemasks/flat_type_mask.dart
@@ -157,7 +157,7 @@
     }
   }
 
-  bool isSingleImplementationOf(ClassEntity cls, JClosedWorld closedWorld) {
+  bool _isSingleImplementationOf(ClassEntity cls, JClosedWorld closedWorld) {
     // Special case basic types so that, for example, JSString is the
     // single implementation of String.
     // The general optimization is to realize there is only one class that
@@ -179,10 +179,6 @@
           cls == commonElements.jsUInt32Class ||
           cls == commonElements.jsUInt31Class;
     }
-    if (containsOnlyDouble(closedWorld)) {
-      return cls == closedWorld.commonElements.doubleClass ||
-          cls == commonElements.jsDoubleClass;
-    }
     return false;
   }
 
@@ -200,10 +196,10 @@
     FlatTypeMask flatOther = other;
     ClassEntity otherBase = flatOther.base;
     // If other is exact, it only contains its base.
-    // TODO(herhut): Get rid of isSingleImplementationOf.
+    // TODO(herhut): Get rid of _isSingleImplementationOf.
     if (flatOther.isExact) {
       return (isExact && base == otherBase) ||
-          isSingleImplementationOf(otherBase, closedWorld);
+          _isSingleImplementationOf(otherBase, closedWorld);
     }
     // If other is subclass, this has to be subclass, as well. Unless
     // flatOther.base covers all subtypes of this. Currently, we only
@@ -228,7 +224,7 @@
   @override
   bool containsOnlyInt(JClosedWorld closedWorld) {
     CommonElements commonElements = closedWorld.commonElements;
-    return base == closedWorld.commonElements.intClass ||
+    return base == commonElements.intClass ||
         base == commonElements.jsIntClass ||
         base == commonElements.jsPositiveIntClass ||
         base == commonElements.jsUInt31Class ||
@@ -236,15 +232,10 @@
   }
 
   @override
-  bool containsOnlyDouble(JClosedWorld closedWorld) {
-    return base == closedWorld.commonElements.doubleClass ||
-        base == closedWorld.commonElements.jsDoubleClass;
-  }
-
-  @override
   bool containsOnlyNum(JClosedWorld closedWorld) {
     return containsOnlyInt(closedWorld) ||
-        containsOnlyDouble(closedWorld) ||
+        base == closedWorld.commonElements.doubleClass ||
+        base == closedWorld.commonElements.jsDoubleClass ||
         base == closedWorld.commonElements.numClass ||
         base == closedWorld.commonElements.jsNumberClass;
   }
diff --git a/pkg/compiler/lib/src/inferrer/typemasks/forwarding_type_mask.dart b/pkg/compiler/lib/src/inferrer/typemasks/forwarding_type_mask.dart
index ca3910d..ec29cbe 100644
--- a/pkg/compiler/lib/src/inferrer/typemasks/forwarding_type_mask.dart
+++ b/pkg/compiler/lib/src/inferrer/typemasks/forwarding_type_mask.dart
@@ -53,11 +53,6 @@
   }
 
   @override
-  bool containsOnlyDouble(JClosedWorld closedWorld) {
-    return forwardTo.containsOnlyDouble(closedWorld);
-  }
-
-  @override
   bool containsOnlyNum(JClosedWorld closedWorld) {
     return forwardTo.containsOnlyNum(closedWorld);
   }
diff --git a/pkg/compiler/lib/src/inferrer/typemasks/masks.dart b/pkg/compiler/lib/src/inferrer/typemasks/masks.dart
index b8840fb..50fa04f 100644
--- a/pkg/compiler/lib/src/inferrer/typemasks/masks.dart
+++ b/pkg/compiler/lib/src/inferrer/typemasks/masks.dart
@@ -628,17 +628,6 @@
   }
 
   @override
-  AbstractBool isDouble(TypeMask value) {
-    return AbstractBool.trueOrMaybe(
-        value.containsOnlyDouble(_closedWorld) && !value.isNullable);
-  }
-
-  @override
-  AbstractBool isDoubleOrNull(TypeMask value) {
-    return AbstractBool.trueOrMaybe(value.containsOnlyDouble(_closedWorld));
-  }
-
-  @override
   AbstractBool isBoolean(TypeMask value) {
     return AbstractBool.trueOrMaybe(
         value.containsOnlyBool(_closedWorld) && !value.isNullable);
diff --git a/pkg/compiler/lib/src/inferrer/typemasks/type_mask.dart b/pkg/compiler/lib/src/inferrer/typemasks/type_mask.dart
index f98ad55..7fd62a8 100644
--- a/pkg/compiler/lib/src/inferrer/typemasks/type_mask.dart
+++ b/pkg/compiler/lib/src/inferrer/typemasks/type_mask.dart
@@ -354,7 +354,6 @@
   bool get isValue;
 
   bool containsOnlyInt(JClosedWorld closedWorld);
-  bool containsOnlyDouble(JClosedWorld closedWorld);
   bool containsOnlyNum(JClosedWorld closedWorld);
   bool containsOnlyBool(JClosedWorld closedWorld);
   bool containsOnlyString(JClosedWorld closedWorld);
diff --git a/pkg/compiler/lib/src/inferrer/typemasks/union_type_mask.dart b/pkg/compiler/lib/src/inferrer/typemasks/union_type_mask.dart
index a4ffd6d..dddd0ed 100644
--- a/pkg/compiler/lib/src/inferrer/typemasks/union_type_mask.dart
+++ b/pkg/compiler/lib/src/inferrer/typemasks/union_type_mask.dart
@@ -359,11 +359,6 @@
   }
 
   @override
-  bool containsOnlyDouble(JClosedWorld closedWorld) {
-    return disjointMasks.every((mask) => mask.containsOnlyDouble(closedWorld));
-  }
-
-  @override
   bool containsOnlyNum(JClosedWorld closedWorld) {
     return disjointMasks.every((mask) {
       return mask.containsOnlyNum(closedWorld);
diff --git a/pkg/compiler/lib/src/ir/element_map.dart b/pkg/compiler/lib/src/ir/element_map.dart
index 4a782ce..f2b9a66 100644
--- a/pkg/compiler/lib/src/ir/element_map.dart
+++ b/pkg/compiler/lib/src/ir/element_map.dart
@@ -61,7 +61,7 @@
   Iterable<InterfaceType> getInterfaces(IndexedClass cls);
   InterfaceType asInstanceOf(InterfaceType type, ClassEntity cls);
   DartType substByContext(DartType type, InterfaceType context);
-  DartType getCallType(InterfaceType type);
+  FunctionType getCallType(InterfaceType type);
   int getHierarchyDepth(IndexedClass cls);
   DartType getTypeVariableBound(IndexedTypeVariable typeVariable);
   List<Variance> getTypeVariableVariances(IndexedClass cls);
diff --git a/pkg/compiler/lib/src/ir/types.dart b/pkg/compiler/lib/src/ir/types.dart
index 2d2d603..f725d34 100644
--- a/pkg/compiler/lib/src/ir/types.dart
+++ b/pkg/compiler/lib/src/ir/types.dart
@@ -50,10 +50,7 @@
   }
 
   @override
-  FunctionType getCallType(InterfaceType type) {
-    DartType callType = elementMap.getCallType(type);
-    return callType is FunctionType ? callType : null;
-  }
+  FunctionType getCallType(InterfaceType type) => elementMap.getCallType(type);
 
   @override
   void checkTypeVariableBounds<T>(
diff --git a/pkg/compiler/lib/src/js_backend/codegen_listener.dart b/pkg/compiler/lib/src/js_backend/codegen_listener.dart
index 46aa940..c85c14c 100644
--- a/pkg/compiler/lib/src/js_backend/codegen_listener.dart
+++ b/pkg/compiler/lib/src/js_backend/codegen_listener.dart
@@ -271,8 +271,7 @@
       registerInstantiation(_commonElements.jsUInt32Class);
       registerInstantiation(_commonElements.jsUInt31Class);
       registerInstantiation(_commonElements.jsNumberClass);
-    } else if (cls == _commonElements.doubleClass ||
-        cls == _commonElements.jsDoubleClass) {
+    } else if (cls == _commonElements.jsDoubleClass) {
       registerInstantiation(_commonElements.jsDoubleClass);
       registerInstantiation(_commonElements.jsNumberClass);
     } else if (cls == _commonElements.boolClass ||
@@ -281,7 +280,8 @@
     } else if (cls == _commonElements.nullClass ||
         cls == _commonElements.jsNullClass) {
       registerInstantiation(_commonElements.jsNullClass);
-    } else if (cls == _commonElements.numClass ||
+    } else if (cls == _commonElements.doubleClass ||
+        cls == _commonElements.numClass ||
         cls == _commonElements.jsNumberClass) {
       registerInstantiation(_commonElements.jsIntClass);
       registerInstantiation(_commonElements.jsPositiveIntClass);
diff --git a/pkg/compiler/lib/src/js_backend/resolution_listener.dart b/pkg/compiler/lib/src/js_backend/resolution_listener.dart
index 9bd730b..a889fc8 100644
--- a/pkg/compiler/lib/src/js_backend/resolution_listener.dart
+++ b/pkg/compiler/lib/src/js_backend/resolution_listener.dart
@@ -373,8 +373,7 @@
       _addInterceptors(_commonElements.jsUInt32Class, impactBuilder);
       _addInterceptors(_commonElements.jsUInt31Class, impactBuilder);
       _addInterceptors(_commonElements.jsNumberClass, impactBuilder);
-    } else if (cls == _commonElements.doubleClass ||
-        cls == _commonElements.jsDoubleClass) {
+    } else if (cls == _commonElements.jsDoubleClass) {
       _addInterceptors(_commonElements.jsDoubleClass, impactBuilder);
       _addInterceptors(_commonElements.jsNumberClass, impactBuilder);
     } else if (cls == _commonElements.boolClass ||
@@ -383,7 +382,8 @@
     } else if (cls == _commonElements.nullClass ||
         cls == _commonElements.jsNullClass) {
       _addInterceptors(_commonElements.jsNullClass, impactBuilder);
-    } else if (cls == _commonElements.numClass ||
+    } else if (cls == _commonElements.doubleClass ||
+        cls == _commonElements.numClass ||
         cls == _commonElements.jsNumberClass) {
       _addInterceptors(_commonElements.jsIntClass, impactBuilder);
       _addInterceptors(_commonElements.jsPositiveIntClass, impactBuilder);
diff --git a/pkg/compiler/lib/src/js_backend/runtime_types.dart b/pkg/compiler/lib/src/js_backend/runtime_types.dart
index c8084d5..c24e828 100644
--- a/pkg/compiler/lib/src/js_backend/runtime_types.dart
+++ b/pkg/compiler/lib/src/js_backend/runtime_types.dart
@@ -334,10 +334,6 @@
       for (InterfaceType type in _types.getSupertypes(cls)) {
         processSupertype(type);
       }
-      FunctionType callType = _types.getCallType(_types.getThisType(cls));
-      if (callType != null) {
-        processSupertype(_closedWorld.commonElements.functionType);
-      }
       return checks;
     }
 
diff --git a/pkg/compiler/lib/src/js_backend/specialized_checks.dart b/pkg/compiler/lib/src/js_backend/specialized_checks.dart
index 5802406..dfaabfd 100644
--- a/pkg/compiler/lib/src/js_backend/specialized_checks.dart
+++ b/pkg/compiler/lib/src/js_backend/specialized_checks.dart
@@ -57,8 +57,7 @@
         return IsTestSpecialization.bool;
       }
 
-      if (element == commonElements.jsDoubleClass ||
-          element == commonElements.doubleClass ||
+      if (element == commonElements.doubleClass ||
           element == commonElements.jsNumberClass ||
           element == commonElements.numClass) {
         return IsTestSpecialization.num;
@@ -166,8 +165,7 @@
       return commonElements.specializedAsBool;
     }
 
-    if (element == commonElements.jsDoubleClass ||
-        element == commonElements.doubleClass) {
+    if (element == commonElements.doubleClass) {
       if (legacy) return commonElements.specializedAsDoubleLegacy;
       if (nullable) return commonElements.specializedAsDoubleNullable;
       return commonElements.specializedAsDouble;
diff --git a/pkg/compiler/lib/src/js_model/closure.dart b/pkg/compiler/lib/src/js_model/closure.dart
index cfdee0b..41f9170 100644
--- a/pkg/compiler/lib/src/js_model/closure.dart
+++ b/pkg/compiler/lib/src/js_model/closure.dart
@@ -998,7 +998,7 @@
   bool get isEnumClass => false;
 
   @override
-  DartType get callType => null;
+  FunctionType get callType => null;
 
   @override
   List<InterfaceType> get interfaces => const <InterfaceType>[];
diff --git a/pkg/compiler/lib/src/js_model/element_map_impl.dart b/pkg/compiler/lib/src/js_model/element_map_impl.dart
index 1f4cd96..ba0057a 100644
--- a/pkg/compiler/lib/src/js_model/element_map_impl.dart
+++ b/pkg/compiler/lib/src/js_model/element_map_impl.dart
@@ -634,6 +634,20 @@
     return data.supertype;
   }
 
+  void _ensureCallType(ClassEntity cls, JClassData data) {
+    assert(checkFamily(cls));
+    if (data is JClassDataImpl && !data.isCallTypeComputed) {
+      MemberEntity callMember =
+          _elementEnvironment.lookupClassMember(cls, Identifiers.call);
+      if (callMember is FunctionEntity &&
+          callMember.isFunction &&
+          !callMember.isAbstract) {
+        data.callType = _elementEnvironment.getFunctionType(callMember);
+      }
+      data.isCallTypeComputed = true;
+    }
+  }
+
   void _ensureThisAndRawType(ClassEntity cls, JClassData data) {
     assert(checkFamily(cls));
     if (data is JClassDataImpl && data.thisType == null) {
@@ -940,14 +954,14 @@
 
   /// Returns the type of the `call` method on 'type'.
   ///
-  /// If [type] doesn't have a `call` member `null` is returned. If [type] has
-  /// an invalid `call` member (non-method or a synthesized method with both
-  /// optional and named parameters) a [DynamicType] is returned.
+  /// If [type] doesn't have a `call` member or has a non-method `call` member,
+  /// `null` is returned.
   @override
-  DartType getCallType(InterfaceType type) {
+  FunctionType getCallType(InterfaceType type) {
     IndexedClass cls = type.element;
     assert(checkFamily(cls));
     JClassData data = classes.getData(cls);
+    _ensureCallType(cls, data);
     if (data.callType != null) {
       return substByContext(data.callType, type);
     }
diff --git a/pkg/compiler/lib/src/js_model/env.dart b/pkg/compiler/lib/src/js_model/env.dart
index 2e408ee..2dd5c12 100644
--- a/pkg/compiler/lib/src/js_model/env.dart
+++ b/pkg/compiler/lib/src/js_model/env.dart
@@ -446,7 +446,7 @@
   InterfaceType get mixedInType;
   List<InterfaceType> get interfaces;
   OrderedTypeSet get orderedTypeSet;
-  DartType get callType;
+  FunctionType get callType;
 
   bool get isEnumClass;
   bool get isMixinApplication;
@@ -464,7 +464,6 @@
   final ClassDefinition definition;
   @override
   bool isMixinApplication;
-  bool isCallTypeComputed = false;
 
   @override
   InterfaceType thisType;
@@ -508,7 +507,8 @@
   bool get isEnumClass => cls != null && cls.isEnum;
 
   @override
-  DartType get callType => null;
+  FunctionType callType;
+  bool isCallTypeComputed = false;
 
   @override
   List<Variance> getVariances() =>
diff --git a/pkg/compiler/lib/src/kernel/element_map_impl.dart b/pkg/compiler/lib/src/kernel/element_map_impl.dart
index d7aa0c8..6f2ba5f 100644
--- a/pkg/compiler/lib/src/kernel/element_map_impl.dart
+++ b/pkg/compiler/lib/src/kernel/element_map_impl.dart
@@ -269,6 +269,20 @@
     return data.supertype;
   }
 
+  void _ensureCallType(ClassEntity cls, KClassData data) {
+    assert(checkFamily(cls));
+    if (data is KClassDataImpl && !data.isCallTypeComputed) {
+      MemberEntity callMember =
+          _elementEnvironment.lookupClassMember(cls, Identifiers.call);
+      if (callMember is FunctionEntity &&
+          callMember.isFunction &&
+          !callMember.isAbstract) {
+        data.callType = _elementEnvironment.getFunctionType(callMember);
+      }
+      data.isCallTypeComputed = true;
+    }
+  }
+
   void _ensureThisAndRawType(ClassEntity cls, KClassData data) {
     assert(checkFamily(cls));
     if (data is KClassDataImpl && data.thisType == null) {
@@ -575,14 +589,14 @@
 
   /// Returns the type of the `call` method on 'type'.
   ///
-  /// If [type] doesn't have a `call` member `null` is returned. If [type] has
-  /// an invalid `call` member (non-method or a synthesized method with both
-  /// optional and named parameters) a [DynamicType] is returned.
+  /// If [type] doesn't have a `call` member or has a non-method `call` member,
+  /// `null` is returned.
   @override
-  DartType getCallType(InterfaceType type) {
+  FunctionType getCallType(InterfaceType type) {
     IndexedClass cls = type.element;
     assert(checkFamily(cls));
     KClassData data = classes.getData(cls);
+    _ensureCallType(cls, data);
     if (data.callType != null) {
       return substByContext(data.callType, type);
     }
diff --git a/pkg/compiler/lib/src/kernel/env.dart b/pkg/compiler/lib/src/kernel/env.dart
index 4393f84..7474592 100644
--- a/pkg/compiler/lib/src/kernel/env.dart
+++ b/pkg/compiler/lib/src/kernel/env.dart
@@ -615,7 +615,6 @@
   final ir.Class node;
   @override
   bool isMixinApplication;
-  bool isCallTypeComputed = false;
 
   @override
   InterfaceType thisType;
@@ -643,7 +642,8 @@
   bool get isEnumClass => node.isEnum;
 
   @override
-  DartType get callType => null;
+  FunctionType callType;
+  bool isCallTypeComputed = false;
 
   @override
   Iterable<ConstantValue> getMetadata(
diff --git a/pkg/compiler/lib/src/kernel/kernel_world.dart b/pkg/compiler/lib/src/kernel/kernel_world.dart
index 2f25c0c..f1d295a 100644
--- a/pkg/compiler/lib/src/kernel/kernel_world.dart
+++ b/pkg/compiler/lib/src/kernel/kernel_world.dart
@@ -269,6 +269,15 @@
           if (type == null) return;
           if (dartTypes.canAssignGenericFunctionTo(type)) {
             _genericCallablePropertiesCache[member] = type;
+          } else {
+            type = type.withoutNullability;
+            if (type is InterfaceType) {
+              FunctionType callType = dartTypes.getCallType(type);
+              if (callType != null &&
+                  dartTypes.canAssignGenericFunctionTo(callType)) {
+                _genericCallablePropertiesCache[member] = callType;
+              }
+            }
           }
         }
       });
diff --git a/pkg/compiler/lib/src/ssa/interceptor_simplifier.dart b/pkg/compiler/lib/src/ssa/interceptor_simplifier.dart
index f03685c..d54784a 100644
--- a/pkg/compiler/lib/src/ssa/interceptor_simplifier.dart
+++ b/pkg/compiler/lib/src/ssa/interceptor_simplifier.dart
@@ -133,8 +133,6 @@
       }
     } else if (_abstractValueDomain.isIntegerOrNull(type).isDefinitelyTrue) {
       return _commonElements.jsIntClass;
-    } else if (_abstractValueDomain.isDoubleOrNull(type).isDefinitelyTrue) {
-      return _commonElements.jsDoubleClass;
     } else if (_abstractValueDomain.isBooleanOrNull(type).isDefinitelyTrue) {
       return _commonElements.jsBoolClass;
     } else if (_abstractValueDomain.isStringOrNull(type).isDefinitelyTrue) {
diff --git a/pkg/compiler/lib/src/ssa/invoke_dynamic_specializers.dart b/pkg/compiler/lib/src/ssa/invoke_dynamic_specializers.dart
index 7311e2e..61d417fb 100644
--- a/pkg/compiler/lib/src/ssa/invoke_dynamic_specializers.dart
+++ b/pkg/compiler/lib/src/ssa/invoke_dynamic_specializers.dart
@@ -404,11 +404,6 @@
           .isDefinitelyTrue) {
         return closedWorld.abstractValueDomain.intType;
       }
-      if (operand
-          .isDoubleOrNull(closedWorld.abstractValueDomain)
-          .isDefinitelyTrue) {
-        return closedWorld.abstractValueDomain.doubleType;
-      }
       return closedWorld.abstractValueDomain.numType;
     }
     return super.computeTypeFromInputTypes(instruction, results, closedWorld);
@@ -492,14 +487,6 @@
       return closedWorld.abstractValueDomain.intType;
     }
     if (left.isNumberOrNull(closedWorld.abstractValueDomain).isDefinitelyTrue) {
-      if (left
-              .isDoubleOrNull(closedWorld.abstractValueDomain)
-              .isDefinitelyTrue ||
-          right
-              .isDoubleOrNull(closedWorld.abstractValueDomain)
-              .isDefinitelyTrue) {
-        return closedWorld.abstractValueDomain.doubleType;
-      }
       return closedWorld.abstractValueDomain.numType;
     }
     return super.computeTypeFromInputTypes(instruction, results, closedWorld);
@@ -621,7 +608,7 @@
       GlobalTypeInferenceResults results, JClosedWorld closedWorld) {
     HInstruction left = instruction.inputs[1];
     if (left.isNumberOrNull(closedWorld.abstractValueDomain).isDefinitelyTrue) {
-      return closedWorld.abstractValueDomain.doubleType;
+      return closedWorld.abstractValueDomain.numType;
     }
     return super.computeTypeFromInputTypes(instruction, results, closedWorld);
   }
@@ -630,7 +617,7 @@
   HInstruction newBuiltinVariant(HInvokeDynamic instruction,
       GlobalTypeInferenceResults results, JClosedWorld closedWorld) {
     return new HDivide(instruction.inputs[1], instruction.inputs[2],
-        closedWorld.abstractValueDomain.doubleType);
+        closedWorld.abstractValueDomain.numType);
   }
 
   @override
diff --git a/pkg/compiler/lib/src/ssa/nodes.dart b/pkg/compiler/lib/src/ssa/nodes.dart
index cf71f75..fee62dd 100644
--- a/pkg/compiler/lib/src/ssa/nodes.dart
+++ b/pkg/compiler/lib/src/ssa/nodes.dart
@@ -1207,12 +1207,6 @@
   AbstractBool isNumberOrNull(AbstractValueDomain domain) =>
       domain.isNumberOrNull(instructionType);
 
-  AbstractBool isDouble(AbstractValueDomain domain) =>
-      domain.isDouble(instructionType);
-
-  AbstractBool isDoubleOrNull(AbstractValueDomain domain) =>
-      domain.isDoubleOrNull(instructionType);
-
   AbstractBool isBoolean(AbstractValueDomain domain) =>
       domain.isBoolean(instructionType);
 
@@ -4223,19 +4217,6 @@
       return AbstractBool.False;
     }
 
-    if (expression.isDouble(abstractValueDomain).isDefinitelyTrue) {
-      if (dartTypes.isSubtype(commonElements.doubleType, interface)) {
-        return AbstractBool.True;
-      }
-      if (interface == commonElements.intType) {
-        // We let the JS semantics decide for that check. Currently the code we
-        // emit will return true for a double that can be represented as a 31-bit
-        // integer and for -0.0.
-        return AbstractBool.Maybe;
-      }
-      return AbstractBool.False;
-    }
-
     if (expression.isNumber(abstractValueDomain).isDefinitelyTrue) {
       if (dartTypes.isSubtype(commonElements.numType, interface)) {
         return AbstractBool.True;
diff --git a/pkg/compiler/lib/src/ssa/ssa_tracer.dart b/pkg/compiler/lib/src/ssa/ssa_tracer.dart
index 3eb079b..f0fa679 100644
--- a/pkg/compiler/lib/src/ssa/ssa_tracer.dart
+++ b/pkg/compiler/lib/src/ssa/ssa_tracer.dart
@@ -154,8 +154,6 @@
       prefix = 'b';
     } else if (instruction.isInteger(_abstractValueDomain).isDefinitelyTrue) {
       prefix = 'i';
-    } else if (instruction.isDouble(_abstractValueDomain).isDefinitelyTrue) {
-      prefix = 'd';
     } else if (instruction.isNumber(_abstractValueDomain).isDefinitelyTrue) {
       prefix = 'n';
     } else if (_abstractValueDomain
diff --git a/pkg/compiler/lib/src/ssa/types_propagation.dart b/pkg/compiler/lib/src/ssa/types_propagation.dart
index a5a1581..92a35e1 100644
--- a/pkg/compiler/lib/src/ssa/types_propagation.dart
+++ b/pkg/compiler/lib/src/ssa/types_propagation.dart
@@ -138,9 +138,6 @@
         right.isInteger(abstractValueDomain).isDefinitelyTrue) {
       return abstractValueDomain.intType;
     }
-    if (left.isDouble(abstractValueDomain).isDefinitelyTrue) {
-      return abstractValueDomain.doubleType;
-    }
     return abstractValueDomain.numType;
   }
 
diff --git a/pkg/compiler/lib/src/universe/codegen_world_builder.dart b/pkg/compiler/lib/src/universe/codegen_world_builder.dart
index 21cc9f2..8b34788 100644
--- a/pkg/compiler/lib/src/universe/codegen_world_builder.dart
+++ b/pkg/compiler/lib/src/universe/codegen_world_builder.dart
@@ -805,6 +805,15 @@
           if (type == null) return;
           if (_closedWorld.dartTypes.canAssignGenericFunctionTo(type)) {
             _genericCallablePropertiesCache[member] = type;
+          } else {
+            type = type.withoutNullability;
+            if (type is InterfaceType) {
+              FunctionType callType = _closedWorld.dartTypes.getCallType(type);
+              if (callType != null &&
+                  _closedWorld.dartTypes.canAssignGenericFunctionTo(callType)) {
+                _genericCallablePropertiesCache[member] = callType;
+              }
+            }
           }
         }
       });
diff --git a/pkg/compiler/lib/src/universe/use.dart b/pkg/compiler/lib/src/universe/use.dart
index e103bcd..3480869 100644
--- a/pkg/compiler/lib/src/universe/use.dart
+++ b/pkg/compiler/lib/src/universe/use.dart
@@ -44,14 +44,13 @@
   final Object receiverConstraint;
   final List<DartType> _typeArguments;
 
-  DynamicUse(this.selector, this.receiverConstraint, this._typeArguments) {
-    assert(
-        selector.callStructure.typeArgumentCount ==
-            (_typeArguments?.length ?? 0),
-        "Type argument count mismatch. Selector has "
-        "${selector.callStructure.typeArgumentCount} but "
-        "${_typeArguments?.length ?? 0} were passed.");
-  }
+  DynamicUse(this.selector, this.receiverConstraint, this._typeArguments)
+      : assert(
+            selector.callStructure.typeArgumentCount ==
+                (_typeArguments?.length ?? 0),
+            "Type argument count mismatch. Selector has "
+            "${selector.callStructure.typeArgumentCount} but "
+            "${_typeArguments?.length ?? 0} were passed.");
 
   DynamicUse withReceiverConstraint(Object otherReceiverConstraint) {
     if (otherReceiverConstraint == receiverConstraint) {
diff --git a/pkg/compiler/test/codegen/data/tdiv1.dart b/pkg/compiler/test/codegen/data/tdiv1.dart
index fb8d4d0b..89beb19 100644
--- a/pkg/compiler/test/codegen/data/tdiv1.dart
+++ b/pkg/compiler/test/codegen/data/tdiv1.dart
@@ -85,7 +85,7 @@
 @pragma('dart2js:noInline')
 /*member: foo_regress_37502:function(param1, param2) {
   var a = param1 ? 1.2 : 12.3;
-  return C.JSInt_methods.gcd$1(C.JSDouble_methods.$tdiv(a, param2 ? 3.14 : 2.81), 2);
+  return C.JSInt_methods.gcd$1(C.JSNumber_methods.$tdiv(a, param2 ? 3.14 : 2.81), 2);
 }*/
 foo_regress_37502(param1, param2) {
   var a = param1 ? 1.2 : 12.3;
diff --git a/pkg/compiler/test/codegen/data_2/tdiv1.dart b/pkg/compiler/test/codegen/data_2/tdiv1.dart
index d180327..43eb113 100644
--- a/pkg/compiler/test/codegen/data_2/tdiv1.dart
+++ b/pkg/compiler/test/codegen/data_2/tdiv1.dart
@@ -101,11 +101,11 @@
 @pragma('dart2js:noInline')
 /*spec.member: foo_regress_37502:function(param1, param2) {
   var a = H.boolConversionCheck(param1) ? 1.2 : 12.3;
-  return C.JSInt_methods.gcd$1(C.JSDouble_methods.$tdiv(a, H.boolConversionCheck(param2) ? 3.14 : 2.81), 2);
+  return C.JSInt_methods.gcd$1(C.JSNumber_methods.$tdiv(a, H.boolConversionCheck(param2) ? 3.14 : 2.81), 2);
 }*/
 /*prod.member: foo_regress_37502:function(param1, param2) {
   var a = param1 ? 1.2 : 12.3;
-  return C.JSInt_methods.gcd$1(C.JSDouble_methods.$tdiv(a, param2 ? 3.14 : 2.81), 2);
+  return C.JSInt_methods.gcd$1(C.JSNumber_methods.$tdiv(a, param2 ? 3.14 : 2.81), 2);
 }*/
 foo_regress_37502(param1, param2) {
   var a = param1 ? 1.2 : 12.3;
diff --git a/pkg/front_end/messages.yaml b/pkg/front_end/messages.yaml
index afe7438..6556e70 100644
--- a/pkg/front_end/messages.yaml
+++ b/pkg/front_end/messages.yaml
@@ -1498,12 +1498,12 @@
 
 MetadataTypeArguments:
   index: 91
-  template: "An annotation (metadata) can't use type arguments."
+  template: "An annotation can't use type arguments."
   analyzerCode: ParserErrorCode.ANNOTATION_WITH_TYPE_ARGUMENTS
 
 MetadataTypeArgumentsUninstantiated:
   index: 114
-  template: "An annotation (metadata) with type arguments must be followed by an argument list."
+  template: "An annotation with type arguments must be followed by an argument list."
   analyzerCode: ParserErrorCode.ANNOTATION_WITH_TYPE_ARGUMENTS_UNINSTANTIATED
   script:
     - "@deprecated<int> class C {}"
@@ -3189,7 +3189,7 @@
   template: "Access error: '#name'."
 
 ExpressionNotMetadata:
-  template: "This can't be used as metadata; metadata should be a reference to a compile-time constant variable, or a call to a constant constructor."
+  template: "This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor."
 
 ExpectedAnInitializer:
   index: 36
diff --git a/pkg/front_end/testcases/general/type_literal_as_metadata.dart.outline.expect b/pkg/front_end/testcases/general/type_literal_as_metadata.dart.outline.expect
index 2add531..a2be08b 100644
--- a/pkg/front_end/testcases/general/type_literal_as_metadata.dart.outline.expect
+++ b/pkg/front_end/testcases/general/type_literal_as_metadata.dart.outline.expect
@@ -2,7 +2,7 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/type_literal_as_metadata.dart:9:2: Error: This can't be used as metadata; metadata should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// pkg/front_end/testcases/general/type_literal_as_metadata.dart:9:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
 // @A
 //  ^
 //
@@ -24,7 +24,7 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-@let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/general/type_literal_as_metadata.dart:9:2: Error: This can't be used as metadata; metadata should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/general/type_literal_as_metadata.dart:9:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
 @A
  ^" in self::A*
 class B extends core::Object {
diff --git a/pkg/front_end/testcases/general/type_literal_as_metadata.dart.strong.expect b/pkg/front_end/testcases/general/type_literal_as_metadata.dart.strong.expect
index d3a48a1..6039ee4 100644
--- a/pkg/front_end/testcases/general/type_literal_as_metadata.dart.strong.expect
+++ b/pkg/front_end/testcases/general/type_literal_as_metadata.dart.strong.expect
@@ -2,7 +2,7 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/type_literal_as_metadata.dart:9:2: Error: This can't be used as metadata; metadata should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// pkg/front_end/testcases/general/type_literal_as_metadata.dart:9:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
 // @A
 //  ^
 //
@@ -24,7 +24,7 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-@invalid-expression "pkg/front_end/testcases/general/type_literal_as_metadata.dart:9:2: Error: This can't be used as metadata; metadata should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@invalid-expression "pkg/front_end/testcases/general/type_literal_as_metadata.dart:9:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
 @A
  ^"
 class B extends core::Object {
diff --git a/pkg/front_end/testcases/general/type_literal_as_metadata.dart.strong.transformed.expect b/pkg/front_end/testcases/general/type_literal_as_metadata.dart.strong.transformed.expect
index d3a48a1..6039ee4 100644
--- a/pkg/front_end/testcases/general/type_literal_as_metadata.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/type_literal_as_metadata.dart.strong.transformed.expect
@@ -2,7 +2,7 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/type_literal_as_metadata.dart:9:2: Error: This can't be used as metadata; metadata should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// pkg/front_end/testcases/general/type_literal_as_metadata.dart:9:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
 // @A
 //  ^
 //
@@ -24,7 +24,7 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-@invalid-expression "pkg/front_end/testcases/general/type_literal_as_metadata.dart:9:2: Error: This can't be used as metadata; metadata should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@invalid-expression "pkg/front_end/testcases/general/type_literal_as_metadata.dart:9:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
 @A
  ^"
 class B extends core::Object {
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/type_literal_as_metadata.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/type_literal_as_metadata.dart.weak.expect
index fa62aba..e1e789f 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/type_literal_as_metadata.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/type_literal_as_metadata.dart.weak.expect
@@ -2,7 +2,7 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general_nnbd_opt_out/type_literal_as_metadata.dart:11:2: Error: This can't be used as metadata; metadata should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// pkg/front_end/testcases/general_nnbd_opt_out/type_literal_as_metadata.dart:11:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
 // @A
 //  ^
 //
@@ -24,7 +24,7 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-@invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/type_literal_as_metadata.dart:11:2: Error: This can't be used as metadata; metadata should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/type_literal_as_metadata.dart:11:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
 @A
  ^"
 class B extends core::Object {
diff --git a/pkg/front_end/testcases/general_nnbd_opt_out/type_literal_as_metadata.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/type_literal_as_metadata.dart.weak.transformed.expect
index fa62aba..e1e789f 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/type_literal_as_metadata.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/type_literal_as_metadata.dart.weak.transformed.expect
@@ -2,7 +2,7 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general_nnbd_opt_out/type_literal_as_metadata.dart:11:2: Error: This can't be used as metadata; metadata should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// pkg/front_end/testcases/general_nnbd_opt_out/type_literal_as_metadata.dart:11:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
 // @A
 //  ^
 //
@@ -24,7 +24,7 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-@invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/type_literal_as_metadata.dart:11:2: Error: This can't be used as metadata; metadata should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/type_literal_as_metadata.dart:11:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
 @A
  ^"
 class B extends core::Object {
diff --git a/pkg/test_runner/tool/update_static_error_tests.dart b/pkg/test_runner/tool/update_static_error_tests.dart
index add8fe5..20ed7f5 100644
--- a/pkg/test_runner/tool/update_static_error_tests.dart
+++ b/pkg/test_runner/tool/update_static_error_tests.dart
@@ -13,6 +13,7 @@
 import 'package:path/path.dart' as p;
 
 import 'package:test_runner/src/command_output.dart';
+import 'package:test_runner/src/feature.dart' show Feature;
 import 'package:test_runner/src/path.dart';
 import 'package:test_runner/src/static_error.dart';
 import 'package:test_runner/src/test_file.dart';
@@ -61,8 +62,6 @@
       allowed: sources);
 
   parser.addSeparator("Other flags:");
-  parser.addFlag("null-safety",
-      help: "Enable the 'non-nullable' experiment.", negatable: false);
 
   var results = parser.parse(args);
 
@@ -76,7 +75,6 @@
   }
 
   var dryRun = results["dry-run"] as bool;
-  var nullSafety = results["null-safety"] as bool;
 
   var removeSources = <ErrorSource>{};
   var insertSources = <ErrorSource>{};
@@ -134,10 +132,7 @@
 
     if (entry is pkg_file.File) {
       await _processFile(entry,
-          dryRun: dryRun,
-          remove: removeSources,
-          insert: insertSources,
-          nullSafety: nullSafety);
+          dryRun: dryRun, remove: removeSources, insert: insertSources);
     }
   }
 }
@@ -151,16 +146,12 @@
 }
 
 Future<void> _processFile(File file,
-    {bool dryRun,
-    Set<ErrorSource> remove,
-    Set<ErrorSource> insert,
-    bool nullSafety}) async {
+    {bool dryRun, Set<ErrorSource> remove, Set<ErrorSource> insert}) async {
   stdout.write("${file.path}...");
   var source = file.readAsStringSync();
   var testFile = TestFile.parse(Path("."), file.absolute.path, source);
 
   var experiments = [
-    if (nullSafety) "non-nullable",
     if (testFile.experiments.isNotEmpty) ...testFile.experiments
   ];
 
@@ -184,10 +175,15 @@
   // tell which web errors are web-specific.
   List<StaticError> cfeErrors;
   if (insert.contains(ErrorSource.cfe) || insert.contains(ErrorSource.web)) {
+    var cfeOptions = [
+      if (testFile.requirements.contains(Feature.nnbdWeak)) "--nnbd-weak",
+      if (testFile.requirements.contains(Feature.nnbdStrong)) "--nnbd-strong",
+      ...options
+    ];
     // Clear the previous line.
     stdout.write("\r${file.path}                      ");
     stdout.write("\r${file.path} (Running CFE...)");
-    cfeErrors = await runCfe(file.absolute.path, options);
+    cfeErrors = await runCfe(file.absolute.path, cfeOptions);
     if (cfeErrors == null) {
       print("Error: failed to update ${file.path}");
     } else if (insert.contains(ErrorSource.cfe)) {
diff --git a/runtime/bin/security_context_macos.cc b/runtime/bin/security_context_macos.cc
index c56487d..1cba22d 100644
--- a/runtime/bin/security_context_macos.cc
+++ b/runtime/bin/security_context_macos.cc
@@ -79,6 +79,8 @@
 typedef ScopedCFType<SecCertificateRef> ScopedSecCertificateRef;
 typedef ScopedCFType<SecTrustRef> ScopedSecTrustRef;
 
+const int kNumTrustEvaluateRequestParams = 5;
+
 static SecCertificateRef CreateSecCertificateFromX509(X509* cert) {
   if (cert == NULL) {
     return NULL;
@@ -206,11 +208,21 @@
     return ssl_verify_invalid;
   }
 
-  // Handler should release trust and root_cert.
+  // TrustEvaluateHandler should release all handles.
   Dart_CObject dart_cobject_trust;
   dart_cobject_trust.type = Dart_CObject_kInt64;
   dart_cobject_trust.value.as_int64 =
-      reinterpret_cast<intptr_t>(CFRetain(trust.get()));
+      reinterpret_cast<intptr_t>(trust.release());
+
+  Dart_CObject dart_cobject_cert_chain;
+  dart_cobject_cert_chain.type = Dart_CObject_kInt64;
+  dart_cobject_cert_chain.value.as_int64 =
+      reinterpret_cast<intptr_t>(cert_chain.release());
+
+  Dart_CObject dart_cobject_trusted_certs;
+  dart_cobject_trusted_certs.type = Dart_CObject_kInt64;
+  dart_cobject_trusted_certs.value.as_int64 =
+      reinterpret_cast<intptr_t>(trusted_certs.release());
 
   Dart_CObject dart_cobject_root_cert;
   dart_cobject_root_cert.type = Dart_CObject_kInt64;
@@ -222,9 +234,10 @@
 
   Dart_CObject array;
   array.type = Dart_CObject_kArray;
-  array.value.as_array.length = 3;
-  Dart_CObject* values[] = {&dart_cobject_trust, &dart_cobject_root_cert,
-                            &reply_send_port};
+  array.value.as_array.length = kNumTrustEvaluateRequestParams;
+  Dart_CObject* values[] = {&dart_cobject_trust, &dart_cobject_cert_chain,
+                            &dart_cobject_trusted_certs,
+                            &dart_cobject_root_cert, &reply_send_port};
   array.value.as_array.values = values;
 
   Dart_PostCObject(filter->trust_evaluate_reply_port(), &array);
@@ -265,12 +278,23 @@
   }
 
   CObjectArray request(message);
-  ASSERT(request.Length() == 3);
+  if (request.Length() != kNumTrustEvaluateRequestParams) {
+    FATAL2("Malformed trust evaluate message: got %" Pd
+           " parameters "
+           "expected %d\n",
+           request.Length(), kNumTrustEvaluateRequestParams);
+  }
   CObjectIntptr trust_cobject(request[0]);
   ScopedSecTrustRef trust(reinterpret_cast<SecTrustRef>(trust_cobject.Value()));
-  CObjectIntptr root_cert_cobject(request[1]);
+  CObjectIntptr cert_chain_cobject(request[1]);
+  ScopedCFMutableArrayRef cert_chain(
+      reinterpret_cast<CFMutableArrayRef>(cert_chain_cobject.Value()));
+  CObjectIntptr trusted_certs_cobject(request[2]);
+  ScopedCFMutableArrayRef trusted_certs(
+      reinterpret_cast<CFMutableArrayRef>(trusted_certs_cobject.Value()));
+  CObjectIntptr root_cert_cobject(request[3]);
   X509* root_cert = reinterpret_cast<X509*>(root_cert_cobject.Value());
-  CObjectSendPort reply_port(request[2]);
+  CObjectSendPort reply_port(request[4]);
   Dart_Port reply_port_id = reply_port.Value();
 
   SecTrustResultType trust_result;
@@ -278,23 +302,20 @@
     usleep(3000 * 1000 /* 3 s*/);
   }
 
+  OSStatus status = noErr;
   // Perform the certificate verification.
-#if ((defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && defined(__MAC_10_14_0) &&    \
-      __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_14_0) ||                     \
-     (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && defined(__IPHONE_12_0) &&   \
-      _IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_12_0))
-  // SecTrustEvaluateWithError available as of OSX 10.14 and iOS 12.
-  // The result is ignored as we get more information from the following call to
-  // SecTrustGetTrustResult which also happens to match the information we get
-  // from calling SecTrustEvaluate.
-  bool res = SecTrustEvaluateWithError(trust.get(), NULL);
-  USE(res);
-  OSStatus status = SecTrustGetTrustResult(trust.get(), &trust_result);
-#else
-
-  // SecTrustEvaluate is deprecated as of OSX 10.15 and iOS 13.
-  OSStatus status = SecTrustEvaluate(trust.get(), &trust_result);
-#endif
+  if (__builtin_available(iOS 12.0, macOS 10.14, *)) {
+    // SecTrustEvaluateWithError available as of OSX 10.14 and iOS 12.
+    // The result is ignored as we get more information from the following call
+    // to SecTrustGetTrustResult which also happens to match the information we
+    // get from calling SecTrustEvaluate.
+    bool res = SecTrustEvaluateWithError(trust.get(), NULL);
+    USE(res);
+    status = SecTrustGetTrustResult(trust.get(), &trust_result);
+  } else {
+    // SecTrustEvaluate is deprecated as of OSX 10.15 and iOS 13.
+    status = SecTrustEvaluate(trust.get(), &trust_result);
+  }
 
   postReply(reply_port_id,
             status == noErr && (trust_result == kSecTrustResultProceed ||
diff --git a/runtime/vm/dart_api_impl.cc b/runtime/vm/dart_api_impl.cc
index e5860d4b..50521d8 100644
--- a/runtime/vm/dart_api_impl.cc
+++ b/runtime/vm/dart_api_impl.cc
@@ -4401,6 +4401,17 @@
     args.SetAt(arg_index++, argument);
   }
 
+  const int kTypeArgsLen = 0;
+  Array& args_descriptor_array = Array::Handle(
+      Z, ArgumentsDescriptor::NewBoxed(kTypeArgsLen, args.Length()));
+
+  ArgumentsDescriptor args_descriptor(args_descriptor_array);
+  ObjectPtr type_error = constructor.DoArgumentTypesMatch(
+      args, args_descriptor, type_arguments, Object::empty_type_arguments());
+  if (type_error != Error::null()) {
+    return Api::NewHandle(T, type_error);
+  }
+
   // Invoke the constructor and return the new object.
   result = DartEntry::InvokeFunction(constructor, args);
   if (result.IsError()) {
@@ -4451,7 +4462,17 @@
   if (type_obj.IsNull()) {
     RETURN_TYPE_ERROR(Z, type, Type);
   }
+
+  if (!type_obj.IsFinalized()) {
+    return Api::NewError(
+        "%s expects argument 'type' to be a fully resolved type.",
+        CURRENT_FUNC);
+  }
+
   const Class& cls = Class::Handle(Z, type_obj.type_class());
+  const TypeArguments& type_arguments =
+      TypeArguments::Handle(Z, type_obj.arguments());
+
   CHECK_ERROR_HANDLE(cls.VerifyEntryPoint());
 #if defined(DEBUG)
   if (!cls.is_allocated() && (Dart::vm_snapshot_kind() == Snapshot::kFullAOT)) {
@@ -4459,7 +4480,11 @@
   }
 #endif
   CHECK_ERROR_HANDLE(cls.EnsureIsAllocateFinalized(T));
-  return Api::NewHandle(T, AllocateObject(T, cls));
+  const Instance& new_obj = Instance::Handle(Z, AllocateObject(T, cls));
+  if (!type_arguments.IsNull()) {
+    new_obj.SetTypeArguments(type_arguments);
+  }
+  return Api::NewHandle(T, new_obj.ptr());
 }
 
 DART_EXPORT Dart_Handle
@@ -4546,7 +4571,7 @@
 
   // Construct name of the constructor to invoke.
   const String& constructor_name = Api::UnwrapStringHandle(Z, name);
-  const AbstractType& type_obj =
+  AbstractType& type_obj =
       AbstractType::Handle(Z, instance.GetType(Heap::kNew));
   const Class& cls = Class::Handle(Z, type_obj.type_class());
   const String& class_name = String::Handle(Z, cls.Name());
@@ -4570,20 +4595,23 @@
           kTypeArgsLen, number_of_arguments + extra_args, 0, NULL)) {
     CHECK_ERROR_HANDLE(constructor.VerifyCallEntryPoint());
     // Create the argument list.
-    // Constructors get the uninitialized object.
-    if (!type_arguments.IsNull()) {
-      // The type arguments will be null if the class has no type
-      // parameters, in which case the following call would fail
-      // because there is no slot reserved in the object for the
-      // type vector.
-      instance.SetTypeArguments(type_arguments);
-    }
     Dart_Handle result;
     Array& args = Array::Handle(Z);
     result =
         SetupArguments(T, number_of_arguments, arguments, extra_args, &args);
     if (!Api::IsError(result)) {
       args.SetAt(0, instance);
+
+      const int kTypeArgsLen = 0;
+      const Array& args_descriptor_array = Array::Handle(
+          Z, ArgumentsDescriptor::NewBoxed(kTypeArgsLen, args.Length()));
+      ArgumentsDescriptor args_descriptor(args_descriptor_array);
+      ObjectPtr type_error = constructor.DoArgumentTypesMatch(
+          args, args_descriptor, type_arguments);
+      if (type_error != Error::null()) {
+        return Api::NewHandle(T, type_error);
+      }
+
       const Object& retval =
           Object::Handle(Z, DartEntry::InvokeFunction(constructor, args));
       if (retval.IsError()) {
diff --git a/runtime/vm/dart_api_impl_test.cc b/runtime/vm/dart_api_impl_test.cc
index a9fd5ba..fd10aaa 100644
--- a/runtime/vm/dart_api_impl_test.cc
+++ b/runtime/vm/dart_api_impl_test.cc
@@ -5792,6 +5792,130 @@
   EXPECT(!instanceOf);
 }
 
+TEST_CASE(DartAPI_New_Issue44205) {
+  const char* kScriptChars =
+      "class MyIntClass {\n"
+      "  MyIntClass(this.value);\n"
+      "  int value;\n"
+      "}\n"
+      "\n"
+      "class MyClass<T> {\n"
+      "  T value;\n"
+      "  MyClass(this.value);\n"
+      "  factory MyClass.foo(T x) => MyClass<T>(x);\n"
+      "}\n"
+      "\n"
+      "Type getIntType() { return int; }\n"
+      "\n";
+
+  Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL);
+  Dart_Handle int_wrapper_type =
+      Dart_GetNonNullableType(lib, NewString("MyIntClass"), 0, NULL);
+
+  Dart_Handle args[1];
+  args[0] = Dart_EmptyString();
+
+  Dart_Handle result = Dart_New(int_wrapper_type, Dart_EmptyString(), 1, args);
+  EXPECT_ERROR(result,
+               "type 'String' is not a subtype of type 'int' of 'value'");
+
+  Dart_Handle int_type = Dart_Invoke(lib, NewString("getIntType"), 0, args);
+  EXPECT_VALID(int_type);
+  Dart_Handle type_args = Dart_NewList(1);
+  EXPECT_VALID(type_args);
+  EXPECT_VALID(Dart_ListSetAt(type_args, 0, int_type));
+  Dart_Handle my_class_type =
+      Dart_GetNonNullableType(lib, NewString("MyClass"), 1, &type_args);
+  EXPECT_VALID(my_class_type);
+
+  // Generic generative constructor
+  args[0] = Dart_EmptyString();
+  result = Dart_New(my_class_type, Dart_EmptyString(), 1, args);
+  EXPECT_ERROR(result,
+               "type 'String' is not a subtype of type 'int' of 'value'");
+
+  // Generic factory constructor
+  result = Dart_New(my_class_type, NewString("foo"), 1, args);
+  EXPECT_ERROR(result, "type 'String' is not a subtype of type 'int' of 'x'");
+}
+
+TEST_CASE(DartAPI_InvokeConstructor_Issue44205) {
+  const char* kScriptChars =
+      "class MyIntClass {\n"
+      "  MyIntClass(this.value);\n"
+      "  int value;\n"
+      "}\n"
+      "\n"
+      "class MyClass<T> {\n"
+      "  T value;\n"
+      "  MyClass(this.value);\n"
+      "}\n"
+      "\n"
+      "Type getIntType() { return int; }\n"
+      "\n";
+
+  Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL);
+  Dart_Handle int_wrapper_type =
+      Dart_GetNonNullableType(lib, NewString("MyIntClass"), 0, NULL);
+
+  Dart_Handle args[1];
+  args[0] = Dart_EmptyString();
+  Dart_Handle result = Dart_Allocate(int_wrapper_type);
+  EXPECT_VALID(result);
+
+  result = Dart_InvokeConstructor(result, Dart_EmptyString(), 1, args);
+  EXPECT_ERROR(result,
+               "type 'String' is not a subtype of type 'int' of 'value'");
+
+  Dart_Handle int_type = Dart_Invoke(lib, NewString("getIntType"), 0, args);
+  EXPECT_VALID(int_type);
+  Dart_Handle type_args = Dart_NewList(1);
+  EXPECT_VALID(type_args);
+  EXPECT_VALID(Dart_ListSetAt(type_args, 0, int_type));
+  Dart_Handle my_class_type =
+      Dart_GetNonNullableType(lib, NewString("MyClass"), 1, &type_args);
+  EXPECT_VALID(my_class_type);
+
+  result = Dart_Allocate(my_class_type);
+  EXPECT_VALID(result);
+  result = Dart_InvokeConstructor(result, Dart_EmptyString(), 1, args);
+  EXPECT_ERROR(result,
+               "type 'String' is not a subtype of type 'int' of 'value'");
+}
+
+TEST_CASE(DartAPI_InvokeClosure_Issue44205) {
+  const char* kScriptChars =
+      "class InvokeClosure {\n"
+      "  InvokeClosure(int i, int j) : fld1 = i, fld2 = j {}\n"
+      "  Function method1(int i) {\n"
+      "    f(int j) => j + i + fld1 + fld2 + fld4; \n"
+      "    return f;\n"
+      "  }\n"
+      "  int fld1;\n"
+      "  final int fld2;\n"
+      "  static const int fld4 = 10;\n"
+      "}\n"
+      "Function testMain1() {\n"
+      "  InvokeClosure obj = new InvokeClosure(10, 20);\n"
+      "  return obj.method1(10);\n"
+      "}\n";
+  Dart_Handle result;
+  CHECK_API_SCOPE(thread);
+
+  // Create a test library and Load up a test script in it.
+  Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL);
+
+  // Invoke a function which returns a closure.
+  Dart_Handle retobj = Dart_Invoke(lib, NewString("testMain1"), 0, NULL);
+  EXPECT_VALID(retobj);
+
+  // Now invoke the closure and check the result.
+  Dart_Handle dart_arguments[1];
+  dart_arguments[0] = Dart_EmptyString();
+  result = Dart_InvokeClosure(retobj, 1, dart_arguments);
+  EXPECT_ERROR(result, "type 'String' is not a subtype of type 'int' of 'j'");
+}
+
 TEST_CASE(DartAPI_New_Issue2971) {
   // Issue 2971: We were unable to use Dart_New to construct an
   // instance of List, due to problems implementing interface
diff --git a/runtime/vm/dart_entry.cc b/runtime/vm/dart_entry.cc
index 4f201b3..691bd6c 100644
--- a/runtime/vm/dart_entry.cc
+++ b/runtime/vm/dart_entry.cc
@@ -276,7 +276,7 @@
   const auto& result = Object::Handle(
       zone, callable_function.DoArgumentTypesMatch(arguments, args_desc));
   if (result.IsError()) {
-    Exceptions::PropagateError(Error::Cast(result));
+    return result.ptr();
   }
 
   return InvokeFunction(callable_function, arguments, arguments_descriptor);
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
index 7ad3137..ec68b24 100644
--- a/runtime/vm/object.cc
+++ b/runtime/vm/object.cc
@@ -8138,10 +8138,14 @@
     // Adjust for type arguments when they're present.
     const intptr_t param_index = arg_index - arg_offset;
     type = ParameterTypeAt(param_index);
-
     if (!check_argument(argument, type, instantiator_type_arguments,
                         function_type_arguments)) {
       auto& name = String::Handle(zone, ParameterNameAt(param_index));
+      if (!type.IsInstantiated()) {
+        type =
+            type.InstantiateFrom(instantiator_type_arguments,
+                                 function_type_arguments, kAllFree, Heap::kNew);
+      }
       return ThrowTypeError(token_pos(), argument, type, name);
     }
   }
diff --git a/tests/language/generic/metadata_in_function_body_test.dart b/tests/language/generic/metadata_in_function_body_test.dart
index 40c8549..e6be65f 100644
--- a/tests/language/generic/metadata_in_function_body_test.dart
+++ b/tests/language/generic/metadata_in_function_body_test.dart
@@ -16,11 +16,11 @@
   @C<dynamic>()
   //^
   // [analyzer] SYNTACTIC_ERROR.ANNOTATION_WITH_TYPE_ARGUMENTS
-  // [cfe] An annotation (metadata) can't use type arguments.
+  // [cfe] An annotation can't use type arguments.
   @C<int>()
   //^
   // [analyzer] SYNTACTIC_ERROR.ANNOTATION_WITH_TYPE_ARGUMENTS
-  // [cfe] An annotation (metadata) can't use type arguments.
+  // [cfe] An annotation can't use type arguments.
   int i = 0;
   ignore(i);
 }
diff --git a/tests/language/generic/metadata_test.dart b/tests/language/generic/metadata_test.dart
index 99c8fbc..a6a5ad8 100644
--- a/tests/language/generic/metadata_test.dart
+++ b/tests/language/generic/metadata_test.dart
@@ -12,9 +12,9 @@
 @C<dynamic>()
 //^
 // [analyzer] SYNTACTIC_ERROR.ANNOTATION_WITH_TYPE_ARGUMENTS
-// [cfe] An annotation (metadata) can't use type arguments.
+// [cfe] An annotation can't use type arguments.
 @C<int>()
 //^
 // [analyzer] SYNTACTIC_ERROR.ANNOTATION_WITH_TYPE_ARGUMENTS
-// [cfe] An annotation (metadata) can't use type arguments.
+// [cfe] An annotation can't use type arguments.
 main() {}
diff --git a/tests/language_2/generic/metadata_in_function_body_test.dart b/tests/language_2/generic/metadata_in_function_body_test.dart
index 40c8549..e6be65f 100644
--- a/tests/language_2/generic/metadata_in_function_body_test.dart
+++ b/tests/language_2/generic/metadata_in_function_body_test.dart
@@ -16,11 +16,11 @@
   @C<dynamic>()
   //^
   // [analyzer] SYNTACTIC_ERROR.ANNOTATION_WITH_TYPE_ARGUMENTS
-  // [cfe] An annotation (metadata) can't use type arguments.
+  // [cfe] An annotation can't use type arguments.
   @C<int>()
   //^
   // [analyzer] SYNTACTIC_ERROR.ANNOTATION_WITH_TYPE_ARGUMENTS
-  // [cfe] An annotation (metadata) can't use type arguments.
+  // [cfe] An annotation can't use type arguments.
   int i = 0;
   ignore(i);
 }
diff --git a/tests/language_2/generic/metadata_test.dart b/tests/language_2/generic/metadata_test.dart
index 99c8fbc..a6a5ad8 100644
--- a/tests/language_2/generic/metadata_test.dart
+++ b/tests/language_2/generic/metadata_test.dart
@@ -12,9 +12,9 @@
 @C<dynamic>()
 //^
 // [analyzer] SYNTACTIC_ERROR.ANNOTATION_WITH_TYPE_ARGUMENTS
-// [cfe] An annotation (metadata) can't use type arguments.
+// [cfe] An annotation can't use type arguments.
 @C<int>()
 //^
 // [analyzer] SYNTACTIC_ERROR.ANNOTATION_WITH_TYPE_ARGUMENTS
-// [cfe] An annotation (metadata) can't use type arguments.
+// [cfe] An annotation can't use type arguments.
 main() {}
diff --git a/tests/web/41449d_test.dart b/tests/web/41449d_test.dart
new file mode 100644
index 0000000..0f0a460
--- /dev/null
+++ b/tests/web/41449d_test.dart
@@ -0,0 +1,21 @@
+// Copyright (c) 2021, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'package:expect/expect.dart';
+
+class Foo {
+  Bar get bar => const Bar();
+}
+
+class Bar {
+  const Bar();
+
+  int call<S>(void Function(S) f) => 42;
+}
+
+class NoticeMe {}
+
+void main() {
+  Expect.equals(42, Foo().bar<NoticeMe>((_) {}));
+}
diff --git a/tests/web/regress/44818_test.dart b/tests/web/regress/44818_test.dart
new file mode 100644
index 0000000..db3879e
--- /dev/null
+++ b/tests/web/regress/44818_test.dart
@@ -0,0 +1,21 @@
+// Copyright (c) 2021, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'package:expect/expect.dart';
+
+// Regression test for mis-optimized (a / b).runtimeType.
+
+void main() {
+  Type? t0;
+  Type? t1;
+  for (int i = 0; i < 2; i++) {
+    t0 = i.runtimeType;
+    t1 = ((i * 2) / 2).runtimeType;
+  }
+  final t2 = ((0 * 2) / 2).runtimeType;
+
+  Expect.equals('int', '$t0');
+  Expect.equals('int', '$t1');
+  Expect.equals('int', '$t2');
+}
diff --git a/tests/web_2/41449d_test.dart b/tests/web_2/41449d_test.dart
new file mode 100644
index 0000000..b41cb19
--- /dev/null
+++ b/tests/web_2/41449d_test.dart
@@ -0,0 +1,23 @@
+// Copyright (c) 2021, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+// @dart = 2.7
+
+import 'package:expect/expect.dart';
+
+class Foo {
+  Bar get bar => const Bar();
+}
+
+class Bar {
+  const Bar();
+
+  int call<S>(void Function(S) f) => 42;
+}
+
+class NoticeMe {}
+
+void main() {
+  Expect.equals(42, Foo().bar<NoticeMe>((_) {}));
+}
diff --git a/tests/web_2/regress/44818_test.dart b/tests/web_2/regress/44818_test.dart
new file mode 100644
index 0000000..22f2491
--- /dev/null
+++ b/tests/web_2/regress/44818_test.dart
@@ -0,0 +1,21 @@
+// Copyright (c) 2021, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'package:expect/expect.dart';
+
+// Regression test for mis-optimized (a / b).runtimeType.
+
+void main() {
+  Type t0;
+  Type t1;
+  for (int i = 0; i < 2; i++) {
+    t0 = i.runtimeType;
+    t1 = ((i * 2) / 2).runtimeType;
+  }
+  final t2 = ((0 * 2) / 2).runtimeType;
+
+  Expect.equals('int', '$t0');
+  Expect.equals('int', '$t1');
+  Expect.equals('int', '$t2');
+}
diff --git a/tools/VERSION b/tools/VERSION
index edab86b..e152219 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 13
 PATCH 0
-PRERELEASE 16
+PRERELEASE 17
 PRERELEASE_PATCH 0
\ No newline at end of file