Version 2.10.0-4.0.dev

Merge commit 'cbdd34d1594b7ddc1f22e6e33dd60300ba8985f1' into dev
diff --git a/BUILD.gn b/BUILD.gn
index 2f73ff3..fe0376d 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -165,27 +165,20 @@
     resource_files = [
       ".packages",
       "pkg/testing/test/hello_test.dart",
-      "tools/addlatexhash.dart",
     ]
     resource_dirs = [
-      "tests/standalone_2",
+      "tests/standalone",
+      "tests/language_2",
       "pkg/async_helper",
       "pkg/expect",
       "pkg/meta",
-      "pkg/native_stack_traces",
       "pkg/smith",
       "third_party/pkg/args",
       "third_party/pkg/async",
-      "third_party/pkg/charcode",
       "third_party/pkg/collection",
-      "third_party/pkg/convert",
-      "third_party/pkg/crypto",
-      "third_party/pkg/http",
-      "third_party/pkg/http_parser",
       "third_party/pkg/path",
       "third_party/pkg/pool",
       "third_party/pkg/stack_trace",
-      "third_party/pkg/typed_data",
     ]
 
     resources = []
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 465ff3e..54a5a2f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,11 +1,18 @@
 ## 2.10.0
 
+### Core libraries
+
+#### `dart:typed_data`
+
+*   Class `BytesBuilder` is moved from `dart:io` to `dart:typed_data`.
+    It's temporarily being exported from `dart:io` as well.
+
 ### Dart VM
 
 *   Introduces `Dart_FinalizableHandle`s. They do auto-delete, and the weakly
     referred object cannot be accessed through them.
 
-## 2.9.0
+## 2.9.0 - 2020-08-05
 
 ### Language
 
@@ -77,11 +84,6 @@
 
 [#42714]: https://github.com/dart-lang/sdk/issues/42714
 
-#### `dart:typed_data`
-
-*   Class `BytesBuilder` is moved from `dart:io` to `dart:typed_data`.
-    It's temporarily being exported from `dart:io` as well.
-
 ### Tools
 
 #### dartfmt
diff --git a/DEPS b/DEPS
index 9c5288e..042e77d 100644
--- a/DEPS
+++ b/DEPS
@@ -44,7 +44,7 @@
   # co19 is a cipd package. Use update.sh in tests/co19[_2] to update these
   # hashes. It requires access to the dart-build-access group, which EngProd
   # has.
-  "co19_rev": "e3d6ccfe8fa278041316f7dc958fdd8c2b447b6c",
+  "co19_rev": "a9bd47e85862b4af9006c24ea0cb626850bc5de7",
   "co19_2_rev": "e48b3090826cf40b8037648f19d211e8eab1b4b6",
 
   # The internal benchmarks to use. See go/dart-benchmarks-internal
diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
index 2db2871..3e06c16 100644
--- a/build/config/compiler/BUILD.gn
+++ b/build/config/compiler/BUILD.gn
@@ -377,7 +377,7 @@
 #   configs -= [ "//build/config/compiler:clang_stackrealign" ]
 # See https://crbug.com/556393 for details of where it must be avoided.
 config("clang_stackrealign") {
-  if (is_clang && current_cpu == "x86" && !is_nacl) {
+  if (is_clang && current_cpu == "x86" && !is_nacl && !is_win) {
     cflags = [
       # Align the stack on 16-byte boundaries, http://crbug.com/418554.
       "-mstack-alignment=16",
@@ -516,14 +516,14 @@
 
   if (is_clang) {
     default_warning_flags += [
-      "-Wno-deprecated-declarations", # crashpad
-      "-Wno-ignored-pragma-optimize", # icu, double-conversion
-      "-Wno-implicit-int-float-conversion", # icu
+      "-Wno-deprecated-declarations",  # crashpad
+      "-Wno-ignored-pragma-optimize",  # icu, double-conversion
+      "-Wno-implicit-int-float-conversion",  # icu
       "-Wno-macro-redefined",
       "-Wno-microsoft-cast",
       "-Wno-microsoft-unqualified-friend",
-      "-Wno-unknown-argument", # icu
-      "-Wno-unused-value", # crashpad
+      "-Wno-unknown-argument",  # icu
+      "-Wno-unused-value",  # crashpad
     ]
   } else {
     default_warning_flags += [
diff --git a/build/dart/dart_action.gni b/build/dart/dart_action.gni
index 2058f033..c357aad 100644
--- a/build/dart/dart_action.gni
+++ b/build/dart/dart_action.gni
@@ -288,6 +288,10 @@
 #  script:
 #    The un-rebased path to the Dart script.
 #
+#  dfe (optional):
+#    Sets the DFE file used by Dart. If not set the VM will attempt to load it
+#    from a snapshot, or fall back on its built-in kernel.
+#
 #  vm_args (optional):
 #    Arguments to pass to the Dart VM.
 #
@@ -323,6 +327,17 @@
                                "visibility",
                                "vm_args",
                              ])
+
+      # Dart has an implicit dependency on the kernel service so unless DFE is
+      # passed, we need to add this dep.
+      if (defined(invoker.dfe)) {
+        vm_args += [ "--dfe=" + rebase_path(invoker.dfe) ]
+      } else {
+        if (!defined(invoker.deps)) {
+          deps = []
+        }
+        deps += [ "$_dart_root/utils/kernel-service:kernel-service" ]
+      }
     }
   } else {
     prebuilt_dart_action(target_name) {
diff --git a/build/fuchsia/dart.cmx b/build/fuchsia/dart.cmx
index f8f5750..b4546c1 100644
--- a/build/fuchsia/dart.cmx
+++ b/build/fuchsia/dart.cmx
@@ -8,8 +8,7 @@
       "deprecated-ambient-replace-as-executable",
       "root-ssl-certificates",
       "isolated-cache-storage",
-      "isolated-persistent-storage",
-      "isolated-temp"
+      "isolated-persistent-storage"
     ],
     "services": [
       "fuchsia.deprecatedtimezone.Timezone",
diff --git a/pkg/_fe_analyzer_shared/test/constants/data/function.dart b/pkg/_fe_analyzer_shared/test/constants/data/function.dart
index 7cc9119..296f250 100644
--- a/pkg/_fe_analyzer_shared/test/constants/data/function.dart
+++ b/pkg/_fe_analyzer_shared/test/constants/data/function.dart
@@ -16,16 +16,16 @@
 main() {
   print(
       /*cfe|dart2js.Function(method1)*/
-      /*analyzer.Function(method1,type=T Function<T>(T))*/
+      /*analyzer.Function(method1,type=T* Function<T>(T*)*)*/
       function0);
   print(
       /*cfe.Instantiation(method1<int>)*/
       /*dart2js.Instantiation(method1<int*>)*/
-      /*analyzer.Function(method1,type=int Function(int))*/
+      /*analyzer.Function(method1,type=int* Function(int*)*)*/
       instantiation0);
   print(
       /*cfe.Instantiation(method2<String,int>)*/
       /*dart2js.Instantiation(method2<String*,int*>)*/
-      /*analyzer.Function(method2,type=Map<String, int> Function(String, int))*/
+      /*analyzer.Function(method2,type=Map<String*, int*>* Function(String*, int*)*)*/
       instantiation1);
 }
diff --git a/pkg/_fe_analyzer_shared/test/constants/data/list.dart b/pkg/_fe_analyzer_shared/test/constants/data/list.dart
index 50f3caa..b31cfb5 100644
--- a/pkg/_fe_analyzer_shared/test/constants/data/list.dart
+++ b/pkg/_fe_analyzer_shared/test/constants/data/list.dart
@@ -15,13 +15,13 @@
 const list4 = /*cfe.List<int>(Int(42),Int(87))*/ [42, 87];
 
 main() {
-  print(/*List<dynamic>()*/ list0);
+  print(/*analyzer.List<dynamic>*()*/ /*cfe|dart2js.List<dynamic>()*/ list0);
   print(
-      /*cfe|analyzer.List<int>()*/ /*dart2js.List<int*>()*/ list1);
+      /*analyzer.List<int*>*()*/ /*cfe.List<int>()*/ /*dart2js.List<int*>()*/ list1);
   print(
-      /*cfe|analyzer.List<int>()*/ /*dart2js.List<int*>()*/ list2);
+      /*analyzer.List<int*>*()*/ /*cfe.List<int>()*/ /*dart2js.List<int*>()*/ list2);
   print(
-      /*cfe|analyzer.List<int>(Int(42))*/ /*dart2js.List<int*>(Int(42))*/ list3);
+      /*analyzer.List<int*>*(Int(42))*/ /*cfe.List<int>(Int(42))*/ /*dart2js.List<int*>(Int(42))*/ list3);
   print(
-      /*cfe|analyzer.List<int>(Int(42),Int(87))*/ /*dart2js.List<int*>(Int(42),Int(87))*/ list4);
+      /*analyzer.List<int*>*(Int(42),Int(87))*/ /*cfe.List<int>(Int(42),Int(87))*/ /*dart2js.List<int*>(Int(42),Int(87))*/ list4);
 }
diff --git a/pkg/_fe_analyzer_shared/test/constants/data/map.dart b/pkg/_fe_analyzer_shared/test/constants/data/map.dart
index 1f96470..c9aafc63 100644
--- a/pkg/_fe_analyzer_shared/test/constants/data/map.dart
+++ b/pkg/_fe_analyzer_shared/test/constants/data/map.dart
@@ -16,13 +16,14 @@
     {'foo': 42, 'bar': 87};
 
 main() {
-  print(/*Map<dynamic,dynamic>()*/ map0);
   print(
-      /*cfe|analyzer.Map<String,int>()*/ /*dart2js.Map<String*,int*>()*/ map1);
+      /*analyzer.Map<dynamic, dynamic>*()*/ /*cfe|dart2js.Map<dynamic,dynamic>()*/ map0);
   print(
-      /*cfe|analyzer.Map<String,int>()*/ /*dart2js.Map<String*,int*>()*/ map2);
+      /*analyzer.Map<String*, int*>*()*/ /*cfe.Map<String,int>()*/ /*dart2js.Map<String*,int*>()*/ map1);
   print(
-      /*cfe|analyzer.Map<String,int>(String(foo):Int(42))*/ /*dart2js.Map<String*,int*>(String(foo):Int(42))*/ map3);
+      /*analyzer.Map<String*, int*>*()*/ /*cfe.Map<String,int>()*/ /*dart2js.Map<String*,int*>()*/ map2);
   print(
-      /*cfe|analyzer.Map<String,int>(String(foo):Int(42),String(bar):Int(87))*/ /*dart2js.Map<String*,int*>(String(foo):Int(42),String(bar):Int(87))*/ map4);
+      /*analyzer.Map<String*, int*>*(String(foo):Int(42))*/ /*cfe.Map<String,int>(String(foo):Int(42))*/ /*dart2js.Map<String*,int*>(String(foo):Int(42))*/ map3);
+  print(
+      /*analyzer.Map<String*, int*>*(String(foo):Int(42),String(bar):Int(87))*/ /*cfe.Map<String,int>(String(foo):Int(42),String(bar):Int(87))*/ /*dart2js.Map<String*,int*>(String(foo):Int(42),String(bar):Int(87))*/ map4);
 }
diff --git a/pkg/_fe_analyzer_shared/test/constants/data/set.dart b/pkg/_fe_analyzer_shared/test/constants/data/set.dart
index e512e8a..5b4a84d 100644
--- a/pkg/_fe_analyzer_shared/test/constants/data/set.dart
+++ b/pkg/_fe_analyzer_shared/test/constants/data/set.dart
@@ -20,13 +20,13 @@
 const set4 = /*cfe.Set<int>(Int(42),Int(87))*/ {42, 87};
 
 main() {
-  print(/*Set<dynamic>()*/ set0);
+  print(/*analyzer.Set<dynamic>*()*/ /*cfe|dart2js.Set<dynamic>()*/ set0);
   print(
-      /*cfe|analyzer.Set<int>()*/ /*dart2js.Set<int*>()*/ set1);
+      /*analyzer.Set<int*>*()*/ /*cfe.Set<int>()*/ /*dart2js.Set<int*>()*/ set1);
   print(
-      /*cfe|analyzer.Set<int>()*/ /*dart2js.Set<int*>()*/ set2);
+      /*analyzer.Set<int*>*()*/ /*cfe.Set<int>()*/ /*dart2js.Set<int*>()*/ set2);
   print(
-      /*cfe|analyzer.Set<int>(Int(42))*/ /*dart2js.Set<int*>(Int(42))*/ set3);
+      /*analyzer.Set<int*>*(Int(42))*/ /*cfe.Set<int>(Int(42))*/ /*dart2js.Set<int*>(Int(42))*/ set3);
   print(
-      /*cfe|analyzer.Set<int>(Int(42),Int(87))*/ /*dart2js.Set<int*>(Int(42),Int(87))*/ set4);
+      /*analyzer.Set<int*>*(Int(42),Int(87))*/ /*cfe.Set<int>(Int(42),Int(87))*/ /*dart2js.Set<int*>(Int(42),Int(87))*/ set4);
 }
diff --git a/pkg/_fe_analyzer_shared/test/constants/data/type_literals.dart b/pkg/_fe_analyzer_shared/test/constants/data/type_literals.dart
index f729673..7d003ae 100644
--- a/pkg/_fe_analyzer_shared/test/constants/data/type_literals.dart
+++ b/pkg/_fe_analyzer_shared/test/constants/data/type_literals.dart
@@ -21,31 +21,37 @@
 
 main() {
   print(
-      /*cfe|analyzer.TypeLiteral(dynamic Function())*/
+      /*analyzer.TypeLiteral(dynamic Function()*)*/
+      /*cfe.TypeLiteral(dynamic Function())*/
       /*dart2js.TypeLiteral(()->dynamic)*/
       typedef);
 
   print(
-      /*cfe|analyzer.TypeLiteral(void Function(dynamic))*/
+      /*analyzer.TypeLiteral(void Function(dynamic)*)*/
+      /*cfe.TypeLiteral(void Function(dynamic))*/
       /*dart2js.TypeLiteral((dynamic)->void)*/
       genericTypedef);
 
   print(
-      /*cfe|analyzer.TypeLiteral(void Function<T>(T))*/
+      /*analyzer.TypeLiteral(void Function<T>(T*)*)*/
+      /*cfe.TypeLiteral(void Function<T>(T))*/
       /*dart2js.TypeLiteral((0)->void)*/
       genericFunctionTypedef);
 
   print(
-      /*cfe|analyzer.TypeLiteral(void Function<T>(FutureOr<T>))*/
+      /*analyzer.TypeLiteral(void Function<T>(FutureOr<T*>*)*)*/
+      /*cfe.TypeLiteral(void Function<T>(FutureOr<T>))*/
       /*dart2js.TypeLiteral((FutureOr<0>)->void)*/
       typedefWithFutureOr);
 
   print(
-      /*cfe|analyzer.TypeLiteral(FutureOr<dynamic>)*/
+      /*analyzer.TypeLiteral(FutureOr<dynamic>*)*/
+      /*cfe.TypeLiteral(FutureOr<dynamic>)*/
       /*dart2js.TypeLiteral(dynamic)*/
       futureOr);
 
   print(
-      /*TypeLiteral(Null)*/
+      /*analyzer.TypeLiteral(Null*)*/
+      /*cfe|dart2js.TypeLiteral(Null)*/
       null_);
 }
diff --git a/pkg/analysis_server/lib/src/server/driver.dart b/pkg/analysis_server/lib/src/server/driver.dart
index 6e075f6..d4ce68a1 100644
--- a/pkg/analysis_server/lib/src/server/driver.dart
+++ b/pkg/analysis_server/lib/src/server/driver.dart
@@ -470,13 +470,14 @@
         MulticastInstrumentationService(allInstrumentationServices);
 
     instrumentationService.logVersion(
-        results[TRAIN_USING] != null
-            ? 'training-0'
-            : _readUuid(instrumentationService),
-        analysisServerOptions.clientId,
-        analysisServerOptions.clientVersion,
-        PROTOCOL_VERSION,
-        defaultSdk.sdkVersion);
+      results[TRAIN_USING] != null
+          ? 'training-0'
+          : _readUuid(instrumentationService),
+      analysisServerOptions.clientId,
+      analysisServerOptions.clientVersion,
+      PROTOCOL_VERSION,
+      defaultSdk.languageVersion.toString(),
+    );
     AnalysisEngine.instance.instrumentationService = instrumentationService;
 
     int diagnosticServerPort;
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/extension_member_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/extension_member_contributor.dart
index 001ef8d..c2b2573 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/extension_member_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/extension_member_contributor.dart
@@ -105,8 +105,12 @@
       if (extendedType != null && typeSystem.isSubtypeOf(type, extendedType)) {
         double inheritanceDistance;
         if (memberBuilder.request.useNewRelevance) {
-          inheritanceDistance = memberBuilder.request.featureComputer
-              .inheritanceDistanceFeature(type.element, extendedType.element);
+          if (type is InterfaceType && extendedType is InterfaceType) {
+            inheritanceDistance = memberBuilder.request.featureComputer
+                .inheritanceDistanceFeature(type.element, extendedType.element);
+          } else {
+            inheritanceDistance = -1;
+          }
         }
         // TODO(brianwilkerson) We might want to apply the substitution to the
         //  members of the extension for display purposes.
diff --git a/pkg/analysis_server/lib/src/services/correction/bulk_fix_processor.dart b/pkg/analysis_server/lib/src/services/correction/bulk_fix_processor.dart
index 1ecf7f5..f1c93bf 100644
--- a/pkg/analysis_server/lib/src/services/correction/bulk_fix_processor.dart
+++ b/pkg/analysis_server/lib/src/services/correction/bulk_fix_processor.dart
@@ -9,7 +9,10 @@
 import 'package:analysis_server/src/services/correction/change_workspace.dart';
 import 'package:analysis_server/src/services/correction/dart/abstract_producer.dart';
 import 'package:analysis_server/src/services/correction/dart/add_override.dart';
+import 'package:analysis_server/src/services/correction/dart/convert_add_all_to_spread.dart';
+import 'package:analysis_server/src/services/correction/dart/convert_conditional_expression_to_if_element.dart';
 import 'package:analysis_server/src/services/correction/dart/convert_documentation_into_line.dart';
+import 'package:analysis_server/src/services/correction/dart/convert_quotes.dart';
 import 'package:analysis_server/src/services/correction/dart/convert_to_contains.dart';
 import 'package:analysis_server/src/services/correction/dart/create_method.dart';
 import 'package:analysis_server/src/services/correction/dart/remove_argument.dart';
@@ -27,8 +30,11 @@
 import 'package:analysis_server/src/services/correction/dart/replace_cascade_with_dot.dart';
 import 'package:analysis_server/src/services/correction/dart/replace_colon_with_equals.dart';
 import 'package:analysis_server/src/services/correction/dart/replace_null_with_closure.dart';
+import 'package:analysis_server/src/services/correction/dart/replace_with_conditional_assignment.dart';
+import 'package:analysis_server/src/services/correction/dart/replace_with_is_empty.dart';
 import 'package:analysis_server/src/services/correction/dart/replace_with_var.dart';
 import 'package:analysis_server/src/services/correction/dart/use_curly_braces.dart';
+import 'package:analysis_server/src/services/correction/dart/use_is_not_empty.dart';
 import 'package:analysis_server/src/services/correction/fix.dart';
 import 'package:analysis_server/src/services/correction/fix_internal.dart';
 import 'package:analysis_server/src/services/linter/lint_names.dart';
@@ -64,9 +70,17 @@
     LintNames.null_closures: ReplaceNullWithClosure.newInstance,
     LintNames.omit_local_variable_types: ReplaceWithVar.newInstance,
     LintNames.prefer_adjacent_string_concatenation: RemoveOperator.newInstance,
+    LintNames.prefer_conditional_assignment:
+        ReplaceWithConditionalAssignment.newInstance,
     LintNames.prefer_contains: ConvertToContains.newInstance,
     LintNames.prefer_equal_for_default_values:
         ReplaceColonWithEquals.newInstance,
+    LintNames.prefer_if_elements_to_conditional_expressions:
+        ConvertConditionalExpressionToIfElement.newInstance,
+    LintNames.prefer_is_empty: ReplaceWithIsEmpty.newInstance,
+    LintNames.prefer_is_not_empty: UesIsNotEmpty.newInstance,
+    LintNames.prefer_single_quotes: ConvertToSingleQuotes.newInstance,
+    LintNames.prefer_spread_collections: ConvertAddAllToSpread.newInstance,
     LintNames.slash_for_doc_comments: ConvertDocumentationIntoLine.newInstance,
     LintNames.unnecessary_const: RemoveUnnecessaryConst.newInstance,
     LintNames.unnecessary_new: RemoveUnnecessaryNew.newInstance,
diff --git a/pkg/analysis_server/test/context_manager_test.dart b/pkg/analysis_server/test/context_manager_test.dart
index 59af0c1..b7fbb8b 100644
--- a/pkg/analysis_server/test/context_manager_test.dart
+++ b/pkg/analysis_server/test/context_manager_test.dart
@@ -1591,7 +1591,7 @@
     resourceProvider.newFolder(projPath);
     // Create an SDK in the mock file system.
     MockSdk(resourceProvider: resourceProvider);
-    var sdkManager = DartSdkManager(convertPath('/sdk'));
+    var sdkManager = DartSdkManager(convertPath(sdkRoot));
     manager = ContextManagerImpl(
         resourceProvider,
         sdkManager,
diff --git a/pkg/analysis_server/test/integration/analysis/get_errors_non_standard_sdk_test.dart b/pkg/analysis_server/test/integration/analysis/get_errors_non_standard_sdk_test.dart
index 11cf543..f1fd49a 100644
--- a/pkg/analysis_server/test/integration/analysis/get_errors_non_standard_sdk_test.dart
+++ b/pkg/analysis_server/test/integration/analysis/get_errors_non_standard_sdk_test.dart
@@ -29,6 +29,8 @@
     Directory(path.join(sdkPath, 'lib', 'async')).createSync(recursive: true);
     Directory(path.join(sdkPath, 'lib', 'fake')).createSync(recursive: true);
 
+    File(path.join(sdkPath, 'version')).writeAsStringSync('2.10.0');
+
     File(path.join(sdkPath, 'lib', 'core', 'core.dart')).writeAsStringSync(r'''
 library dart.core;
 import 'dart:async';
diff --git a/pkg/analysis_server/test/services/completion/dart/extension_member_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/extension_member_contributor_test.dart
index 1c5cfd9..12a2cad 100644
--- a/pkg/analysis_server/test/services/completion/dart/extension_member_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/extension_member_contributor_test.dart
@@ -105,6 +105,19 @@
     assertNoSuggestions();
   }
 
+  Future<void> test_extension_onDynamic() async {
+    addTestSource('''
+extension E on dynamic {
+  void e() {}
+}
+void f(String s) {
+  s.^;
+}
+''');
+    await computeSuggestions();
+    assertSuggestMethod('e', null, 'void');
+  }
+
   Future<void> test_extensionOverride_doesNotMatch() async {
     addTestSource('''
 extension E on int {
diff --git a/pkg/analysis_server/test/src/services/correction/fix/bulk/convert_to_if_element_test.dart b/pkg/analysis_server/test/src/services/correction/fix/bulk/convert_to_if_element_test.dart
new file mode 100644
index 0000000..4e3908a
--- /dev/null
+++ b/pkg/analysis_server/test/src/services/correction/fix/bulk/convert_to_if_element_test.dart
@@ -0,0 +1,42 @@
+// Copyright (c) 2020, 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:analysis_server/src/services/linter/lint_names.dart';
+import 'package:test_reflective_loader/test_reflective_loader.dart';
+
+import 'bulk_fix_processor.dart';
+
+void main() {
+  defineReflectiveSuite(() {
+    defineReflectiveTests(ConvertToIfElementTest);
+  });
+}
+
+@reflectiveTest
+class ConvertToIfElementTest extends BulkFixProcessorTest {
+  @override
+  String get lintCode =>
+      LintNames.prefer_if_elements_to_conditional_expressions;
+
+  Future<void> test_singleFile() async {
+    await resolveTestUnit('''
+String f(bool b) {
+  return ['a', b ? 'c' : 'd', 'e'];
+}
+
+String f2(bool b) {
+  return {'a', b ? 'c' : 'd', 'e'};
+}
+''');
+    await assertHasFix('''
+String f(bool b) {
+  return ['a', if (b) 'c' else 'd', 'e'];
+}
+
+String f2(bool b) {
+  return {'a', if (b) 'c' else 'd', 'e'};
+}
+''');
+  }
+}
diff --git a/pkg/analysis_server/test/src/services/correction/fix/bulk/convert_to_single_quoted_strings_test.dart b/pkg/analysis_server/test/src/services/correction/fix/bulk/convert_to_single_quoted_strings_test.dart
new file mode 100644
index 0000000..7bc1a30
--- /dev/null
+++ b/pkg/analysis_server/test/src/services/correction/fix/bulk/convert_to_single_quoted_strings_test.dart
@@ -0,0 +1,35 @@
+// Copyright (c) 2020, 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:analysis_server/src/services/linter/lint_names.dart';
+import 'package:test_reflective_loader/test_reflective_loader.dart';
+
+import 'bulk_fix_processor.dart';
+
+void main() {
+  defineReflectiveSuite(() {
+    defineReflectiveTests(ConvertToSingleQuotedStringTest);
+  });
+}
+
+@reflectiveTest
+class ConvertToSingleQuotedStringTest extends BulkFixProcessorTest {
+  @override
+  String get lintCode => LintNames.prefer_single_quotes;
+
+  Future<void> test_singleFile() async {
+    await resolveTestUnit('''
+main() {
+  print("abc");
+  print("e" + "f" + "g");
+}
+''');
+    await assertHasFix('''
+main() {
+  print('abc');
+  print('e' + 'f' + 'g');
+}
+''');
+  }
+}
diff --git a/pkg/analysis_server/test/src/services/correction/fix/bulk/convert_to_spread_test.dart b/pkg/analysis_server/test/src/services/correction/fix/bulk/convert_to_spread_test.dart
new file mode 100644
index 0000000..59bdc19
--- /dev/null
+++ b/pkg/analysis_server/test/src/services/correction/fix/bulk/convert_to_spread_test.dart
@@ -0,0 +1,47 @@
+// Copyright (c) 2020, 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:analysis_server/src/services/linter/lint_names.dart';
+import 'package:test_reflective_loader/test_reflective_loader.dart';
+
+import 'bulk_fix_processor.dart';
+
+void main() {
+  defineReflectiveSuite(() {
+    defineReflectiveTests(ConvertToSpreadTest);
+  });
+}
+
+@reflectiveTest
+class ConvertToSpreadTest extends BulkFixProcessorTest {
+  @override
+  String get lintCode => LintNames.prefer_spread_collections;
+
+  Future<void> test_singleFile() async {
+    await resolveTestUnit('''
+f() {
+  var ints = [1, 2, 3];
+  print(['a']..addAll(ints.map((i) => i.toString()))..addAll(['c']));
+}
+
+f2() {
+  bool condition;
+  var things;
+  var l = ['a']..addAll(condition ? things : []);
+}
+''');
+    await assertHasFix('''
+f() {
+  var ints = [1, 2, 3];
+  print(['a', ...ints.map((i) => i.toString())]..addAll(['c']));
+}
+
+f2() {
+  bool condition;
+  var things;
+  var l = ['a', if (condition) ...things];
+}
+''');
+  }
+}
diff --git a/pkg/analysis_server/test/src/services/correction/fix/bulk/replace_with_conditional_assignment_test.dart b/pkg/analysis_server/test/src/services/correction/fix/bulk/replace_with_conditional_assignment_test.dart
new file mode 100644
index 0000000..790ff57
--- /dev/null
+++ b/pkg/analysis_server/test/src/services/correction/fix/bulk/replace_with_conditional_assignment_test.dart
@@ -0,0 +1,50 @@
+// Copyright (c) 2020, 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:analysis_server/src/services/linter/lint_names.dart';
+import 'package:test_reflective_loader/test_reflective_loader.dart';
+
+import 'bulk_fix_processor.dart';
+
+void main() {
+  defineReflectiveSuite(() {
+    defineReflectiveTests(ReplaceWithConditionalAssignmentTest);
+  });
+}
+
+@reflectiveTest
+class ReplaceWithConditionalAssignmentTest extends BulkFixProcessorTest {
+  @override
+  String get lintCode => LintNames.prefer_conditional_assignment;
+
+  Future<void> test_singleFile() async {
+    await resolveTestUnit('''
+class Person {
+  String _fullName;
+  void foo() {
+    if (_fullName == null) {
+      _fullName = getFullUserName(this);
+    }
+  }
+  void bar() {
+    if (_fullName == null)
+      _fullName = getFullUserName(this);
+  }
+  String getFullUserName(Person p) => '';
+}
+''');
+    await assertHasFix('''
+class Person {
+  String _fullName;
+  void foo() {
+    _fullName ??= getFullUserName(this);
+  }
+  void bar() {
+    _fullName ??= getFullUserName(this);
+  }
+  String getFullUserName(Person p) => '';
+}
+''');
+  }
+}
diff --git a/pkg/analysis_server/test/src/services/correction/fix/bulk/replace_with_is_empty_test.dart b/pkg/analysis_server/test/src/services/correction/fix/bulk/replace_with_is_empty_test.dart
new file mode 100644
index 0000000..b7475c3
--- /dev/null
+++ b/pkg/analysis_server/test/src/services/correction/fix/bulk/replace_with_is_empty_test.dart
@@ -0,0 +1,35 @@
+// Copyright (c) 2020, 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:analysis_server/src/services/linter/lint_names.dart';
+import 'package:test_reflective_loader/test_reflective_loader.dart';
+
+import 'bulk_fix_processor.dart';
+
+void main() {
+  defineReflectiveSuite(() {
+    defineReflectiveTests(ReplaceWithIsEmptyTest);
+  });
+}
+
+@reflectiveTest
+class ReplaceWithIsEmptyTest extends BulkFixProcessorTest {
+  @override
+  String get lintCode => LintNames.prefer_is_empty;
+
+  Future<void> test_singleFile() async {
+    await resolveTestUnit('''
+void f(List c) {
+  if (0 == c.length) {}
+  if (1 > c.length) {}
+}
+''');
+    await assertHasFix('''
+void f(List c) {
+  if (c.isEmpty) {}
+  if (c.isEmpty) {}
+}
+''');
+  }
+}
diff --git a/pkg/analysis_server/test/src/services/correction/fix/bulk/test_all.dart b/pkg/analysis_server/test/src/services/correction/fix/bulk/test_all.dart
index 75eea74..edac3a0 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/bulk/test_all.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/bulk/test_all.dart
@@ -8,6 +8,10 @@
 import 'convert_documentation_into_line_test.dart'
     as convert_documentation_into_line;
 import 'convert_to_contains_test.dart' as convert_to_contains;
+import 'convert_to_if_element_test.dart' as convert_to_if_element;
+import 'convert_to_single_quoted_strings_test.dart'
+    as convert_to_single_quoted_strings;
+import 'convert_to_spread_test.dart' as convert_to_spread;
 import 'create_method_test.dart' as create_method;
 import 'remove_argument_test.dart' as remove_argument;
 import 'remove_await_test.dart' as remove_await;
@@ -24,14 +28,21 @@
 import 'remove_unnecessary_new_test.dart' as remove_unnecessary_new;
 import 'replace_colon_with_equals_test.dart' as replace_colon_with_equals;
 import 'replace_null_with_closure_test.dart' as replace_null_with_closure;
+import 'replace_with_conditional_assignment_test.dart'
+    as replace_with_conditional_assignment;
+import 'replace_with_is_empty_test.dart' as replace_with_is_empty;
 import 'replace_with_var_test.dart' as replace_with_var;
 import 'use_curly_braces_test.dart' as use_curly_braces;
+import 'use_is_not_empty_test.dart' as use_is_not_empty;
 
 void main() {
   defineReflectiveSuite(() {
     add_override.main();
     convert_documentation_into_line.main();
     convert_to_contains.main();
+    convert_to_if_element.main();
+    convert_to_single_quoted_strings.main();
+    convert_to_spread.main();
     create_method.main();
     remove_argument.main();
     remove_await.main();
@@ -45,9 +56,12 @@
     remove_type_annotation.main();
     remove_unnecessary_const.main();
     remove_unnecessary_new.main();
+    replace_with_conditional_assignment.main();
     replace_colon_with_equals.main();
     replace_null_with_closure.main();
+    replace_with_is_empty.main();
     replace_with_var.main();
     use_curly_braces.main();
+    use_is_not_empty.main();
   }, name: 'bulk');
 }
diff --git a/pkg/analysis_server/test/src/services/correction/fix/bulk/use_is_not_empty_test.dart b/pkg/analysis_server/test/src/services/correction/fix/bulk/use_is_not_empty_test.dart
new file mode 100644
index 0000000..e9010c7
--- /dev/null
+++ b/pkg/analysis_server/test/src/services/correction/fix/bulk/use_is_not_empty_test.dart
@@ -0,0 +1,35 @@
+// Copyright (c) 2020, 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:analysis_server/src/services/linter/lint_names.dart';
+import 'package:test_reflective_loader/test_reflective_loader.dart';
+
+import 'bulk_fix_processor.dart';
+
+void main() {
+  defineReflectiveSuite(() {
+    defineReflectiveTests(UseIsNotEmptyTest);
+  });
+}
+
+@reflectiveTest
+class UseIsNotEmptyTest extends BulkFixProcessorTest {
+  @override
+  String get lintCode => LintNames.prefer_is_not_empty;
+
+  Future<void> test_singleFile() async {
+    await resolveTestUnit('''
+void f(List<int> l) {
+  if (!l.isEmpty) {}
+  if (!l.isEmpty || true) {}
+}
+''');
+    await assertHasFix('''
+void f(List<int> l) {
+  if (l.isNotEmpty) {}
+  if (l.isNotEmpty || true) {}
+}
+''');
+  }
+}
diff --git a/pkg/analysis_server/tool/completion_metrics/flutter_metrics.dart b/pkg/analysis_server/tool/completion_metrics/flutter_metrics.dart
new file mode 100644
index 0000000..817a3e8
--- /dev/null
+++ b/pkg/analysis_server/tool/completion_metrics/flutter_metrics.dart
@@ -0,0 +1,309 @@
+// Copyright (c) 2020, 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 'dart:async';
+import 'dart:io' as io;
+
+import 'package:analysis_server/src/utilities/flutter.dart';
+import 'package:analyzer/dart/analysis/analysis_context_collection.dart';
+import 'package:analyzer/dart/analysis/context_root.dart';
+import 'package:analyzer/dart/analysis/results.dart';
+import 'package:analyzer/dart/ast/ast.dart';
+import 'package:analyzer/dart/ast/visitor.dart';
+import 'package:analyzer/diagnostic/diagnostic.dart';
+import 'package:analyzer/file_system/physical_file_system.dart';
+import 'package:analyzer/src/generated/engine.dart';
+import 'package:args/args.dart';
+
+/// Compute and print information about flutter packages.
+Future<void> main(List<String> args) async {
+  var parser = createArgParser();
+  var result = parser.parse(args);
+
+  if (validArguments(parser, result)) {
+    var out = io.stdout;
+    var rootPath = result.rest[0];
+    out.writeln('Analyzing root: "$rootPath"');
+
+    var computer = FlutterMetricsComputer();
+    var stopwatch = Stopwatch()..start();
+    await computer.compute(rootPath);
+    stopwatch.stop();
+    var duration = Duration(milliseconds: stopwatch.elapsedMilliseconds);
+    out.writeln('');
+    out.writeln('Analysis performed in $duration');
+    computer.writeResults(out);
+    await out.flush();
+  }
+  io.exit(0);
+}
+
+/// Create a parser that can be used to parse the command-line arguments.
+ArgParser createArgParser() {
+  var parser = ArgParser();
+  parser.addOption(
+    'help',
+    abbr: 'h',
+    help: 'Print this help message.',
+  );
+  return parser;
+}
+
+/// Print usage information for this tool.
+void printUsage(ArgParser parser, {String error}) {
+  if (error != null) {
+    print(error);
+    print('');
+  }
+  print('usage: dart flutter_metrics.dart [options] packagePath');
+  print('');
+  print('Compute and print information about flutter packages.');
+  print('');
+  print(parser.usage);
+}
+
+/// Return `true` if the command-line arguments (represented by the [result] and
+/// parsed by the [parser]) are valid.
+bool validArguments(ArgParser parser, ArgResults result) {
+  if (result.wasParsed('help')) {
+    printUsage(parser);
+    return false;
+  } else if (result.rest.length != 1) {
+    printUsage(parser, error: 'No directory path specified.');
+    return false;
+  }
+  var rootPath = result.rest[0];
+  if (!io.Directory(rootPath).existsSync()) {
+    printUsage(parser, error: 'The directory "$rootPath" does not exist.');
+    return false;
+  }
+  return true;
+}
+
+/// An object that records the data as it is being computed.
+class FlutterData {
+  /// The total number of widget creation expressions found.
+  int totalWidgetCount = 0;
+
+  /// A table mapping the name of a widget class to the number of times in
+  /// which an instance of that class is created.
+  Map<String, int> widgetCounts = {};
+
+  /// A table mapping the name of a widget class and the name of the parent
+  /// widget to the number of times the widget was created as a child of the
+  /// parent.
+  Map<String, Map<String, int>> parentData = {};
+
+  /// A table mapping the name of the parent widget and the name of a widget
+  /// class to the number of times the parent had a widget of the given kind.
+  Map<String, Map<String, int>> childData = {};
+
+  /// Initialize a newly created set of data to be empty.
+  FlutterData();
+
+  /// Record that an instance of the [childWidget] was created. If the instance
+  /// creation expression is an argument in another widget constructor
+  /// invocation, then the [parentWidget] is the name of the enclosing class.
+  void recordWidgetCreation(String childWidget, String parentWidget) {
+    totalWidgetCount++;
+    widgetCounts[childWidget] = (widgetCounts[childWidget] ?? 0) + 1;
+
+    if (parentWidget != null) {
+      var parentMap = parentData.putIfAbsent(childWidget, () => {});
+      parentMap[parentWidget] = (parentMap[parentWidget] ?? 0) + 1;
+
+      var childMap = childData.putIfAbsent(parentWidget, () => {});
+      childMap[childWidget] = (childMap[childWidget] ?? 0) + 1;
+    }
+  }
+}
+
+/// An object that visits a compilation unit in order to record the data being
+/// collected.
+class FlutterDataCollector extends RecursiveAstVisitor<void> {
+  /// The data being collected.
+  final FlutterData data;
+
+  /// The object used to determine Flutter-specific features.
+  Flutter flutter;
+
+  /// The name of the most deeply widget class whose constructor invocation we
+  /// are within.
+  String parentWidget;
+
+  /// Initialize a newly created collector to add data points to the given
+  /// [data].
+  FlutterDataCollector(this.data);
+
+  @override
+  void visitInstanceCreationExpression(InstanceCreationExpression node) {
+    var previousParentWidget = parentWidget;
+    if (flutter.isWidgetCreation(node)) {
+      var element = node.constructorName.staticElement;
+      if (element == null) {
+        throw StateError(
+            'Unresolved constructor name: ${node.constructorName}');
+      }
+      var childWidget = element.enclosingElement.name;
+      if (!element.librarySource.uri
+          .toString()
+          .startsWith('package:flutter/')) {
+        childWidget = 'user-defined';
+      }
+      data.recordWidgetCreation(childWidget, parentWidget);
+      parentWidget = childWidget;
+    }
+    super.visitInstanceCreationExpression(node);
+    parentWidget = previousParentWidget;
+  }
+}
+
+/// An object used to compute metrics for a single file or directory.
+class FlutterMetricsComputer {
+  /// The resource provider used to access the files being analyzed.
+  final PhysicalResourceProvider resourceProvider =
+      PhysicalResourceProvider.INSTANCE;
+
+  /// The data that was computed.
+  final FlutterData data = FlutterData();
+
+  /// Initialize a newly created metrics computer that can compute the metrics
+  /// in one or more files and directories.
+  FlutterMetricsComputer();
+
+  /// Compute the metrics for the file(s) in the [rootPath].
+  void compute(String rootPath) async {
+    final collection = AnalysisContextCollection(
+      includedPaths: [rootPath],
+      resourceProvider: PhysicalResourceProvider.INSTANCE,
+    );
+    final collector = FlutterDataCollector(data);
+    for (var context in collection.contexts) {
+      await _computeInContext(context.contextRoot, collector);
+    }
+  }
+
+  /// Write a report of the metrics that were computed to the [sink].
+  void writeResults(StringSink sink) {
+    _writeWidgetCounts(sink);
+    _writeChildData(sink);
+    _writeParentData(sink);
+  }
+
+  /// Compute the metrics for the files in the context [root], creating a
+  /// separate context collection to prevent accumulating memory. The metrics
+  /// should be captured in the [collector].
+  Future<void> _computeInContext(
+      ContextRoot root, FlutterDataCollector collector) async {
+    // Create a new collection to avoid consuming large quantities of memory.
+    final collection = AnalysisContextCollection(
+      includedPaths: root.includedPaths.toList(),
+      excludedPaths: root.excludedPaths.toList(),
+      resourceProvider: PhysicalResourceProvider.INSTANCE,
+    );
+    var context = collection.contexts[0];
+    for (var filePath in context.contextRoot.analyzedFiles()) {
+      if (AnalysisEngine.isDartFileName(filePath)) {
+        try {
+          var resolvedUnitResult =
+              await context.currentSession.getResolvedUnit(filePath);
+          //
+          // Check for errors that cause the file to be skipped.
+          //
+          if (resolvedUnitResult == null) {
+            print('');
+            print('File $filePath skipped because of an internal error.');
+            continue;
+          } else if (resolvedUnitResult.state != ResultState.VALID) {
+            print('');
+            print('File $filePath skipped because it could not be analyzed.');
+            continue;
+          } else if (hasError(resolvedUnitResult)) {
+            print('');
+            print('File $filePath skipped due to errors:');
+            for (var error in resolvedUnitResult.errors) {
+              print('  ${error.toString()}');
+            }
+            continue;
+          }
+
+          collector.flutter = Flutter.instance;
+          resolvedUnitResult.unit.accept(collector);
+        } catch (exception, stackTrace) {
+          print('');
+          print('Exception caught analyzing: "$filePath"');
+          print(exception);
+          print(stackTrace);
+        }
+      }
+    }
+  }
+
+  /// Compute and format a percentage for the fraction [value] / [total].
+  String _formatPercent(int value, int total) {
+    var percent = ((value / total) * 100).toStringAsFixed(1);
+    if (percent.length == 3) {
+      percent = '  $percent';
+    } else if (percent.length == 4) {
+      percent = ' $percent';
+    }
+    return percent;
+  }
+
+  /// Write the child data to the [sink].
+  void _writeChildData(StringSink sink) {
+    sink.writeln('');
+    sink.writeln('The number of times a widget had a given child.');
+    _writeStructureData(sink, data.childData);
+  }
+
+  /// Write the parent data to the [sink].
+  void _writeParentData(StringSink sink) {
+    sink.writeln('');
+    sink.writeln('The number of times a widget had a given parent.');
+    _writeStructureData(sink, data.parentData);
+  }
+
+  /// Write the structure data in the [structureMap] to the [sink].
+  void _writeStructureData(
+      StringSink sink, Map<String, Map<String, int>> structureMap) {
+    var outerKeys = structureMap.keys.toList()..sort();
+    for (var outerKey in outerKeys) {
+      sink.writeln(outerKey);
+      var innerMap = structureMap[outerKey];
+      var entries = innerMap.entries.toList();
+      entries.sort((first, second) => second.value.compareTo(first.value));
+      var total = entries.fold(
+          0, (previousValue, entry) => previousValue + entry.value);
+      for (var entry in entries) {
+        var percent = _formatPercent(entry.value, total);
+        sink.writeln('  $percent%: ${entry.key} (${entry.value})');
+      }
+    }
+  }
+
+  /// Write the widget count data to the [sink].
+  void _writeWidgetCounts(StringSink sink) {
+    sink.writeln('');
+    sink.writeln('Widget classes by frequency of instantiation');
+
+    var total = data.totalWidgetCount;
+    var entries = data.widgetCounts.entries.toList();
+    entries.sort((first, second) => second.value.compareTo(first.value));
+    for (var entry in entries) {
+      var percent = _formatPercent(entry.value, total);
+      sink.writeln('  $percent%: ${entry.key} (${entry.value})');
+    }
+  }
+
+  /// Return `true` if the [result] contains an error.
+  static bool hasError(ResolvedUnitResult result) {
+    for (var error in result.errors) {
+      if (error.severity == Severity.error) {
+        return true;
+      }
+    }
+    return false;
+  }
+}
diff --git a/pkg/analyzer/CHANGELOG.md b/pkg/analyzer/CHANGELOG.md
index 6b9c72e..50ac6e8 100644
--- a/pkg/analyzer/CHANGELOG.md
+++ b/pkg/analyzer/CHANGELOG.md
@@ -1,4 +1,4 @@
-## 0.39.16-dev
+## 0.39.16
 * Added `TypeVisitorWithArgument` and `DartType.acceptWithArgument`.
 * Bumped the analyzer's SDK requirement to `>=2.7.0`, so that extension methods
   can be used within the analyzer implementation. Previously it was `2.6.0`,
diff --git a/pkg/analyzer/lib/dart/sdk/build_sdk_summary.dart b/pkg/analyzer/lib/dart/sdk/build_sdk_summary.dart
index 30e01ff..6b85a28 100644
--- a/pkg/analyzer/lib/dart/sdk/build_sdk_summary.dart
+++ b/pkg/analyzer/lib/dart/sdk/build_sdk_summary.dart
@@ -22,6 +22,7 @@
 import 'package:analyzer/src/summary2/linked_element_factory.dart';
 import 'package:analyzer/src/summary2/reference.dart';
 import 'package:meta/meta.dart';
+import 'package:pub_semver/pub_semver.dart';
 import 'package:yaml/yaml.dart';
 
 /// Build summary for SDK at the given [sdkPath].
@@ -44,7 +45,11 @@
     var file = resourceProvider.getFile(embedderYamlPath);
     var content = file.readAsStringSync();
     var map = loadYaml(content) as YamlMap;
-    var embedderSdk = EmbedderSdk(resourceProvider, {file.parent: map});
+    var embedderSdk = EmbedderSdk(
+      resourceProvider,
+      {file.parent: map},
+      languageVersion: sdk.languageVersion,
+    );
     for (var library in embedderSdk.sdkLibraries) {
       var uriStr = library.shortName;
       if (sdk.libraryMap.getLibrary(uriStr) == null) {
@@ -60,6 +65,7 @@
   return _Builder(
     sdk.context,
     sdk.allowedExperimentsJson,
+    sdk.languageVersion,
     librarySources,
   ).build();
 }
@@ -73,11 +79,13 @@
   final List<LinkInputLibrary> inputLibraries = [];
 
   AllowedExperiments allowedExperiments;
+  Version languageVersion;
   final PackageBundleAssembler bundleAssembler = PackageBundleAssembler();
 
   _Builder(
     this.context,
     this.allowedExperimentsJson,
+    this.languageVersion,
     this.librarySources,
   ) {
     allowedExperiments = _parseAllowedExperiments(allowedExperimentsJson);
@@ -100,6 +108,10 @@
       bundle2: linkResult.bundle,
       sdk: PackageBundleSdkBuilder(
         allowedExperimentsJson: allowedExperimentsJson,
+        languageVersion: LinkedLanguageVersionBuilder(
+          major: languageVersion.major,
+          minor: languageVersion.minor,
+        ),
       ),
     ).toBuffer();
 
diff --git a/pkg/analyzer/lib/source/embedder.dart b/pkg/analyzer/lib/source/embedder.dart
index f55cc5d..f2cb675 100644
--- a/pkg/analyzer/lib/source/embedder.dart
+++ b/pkg/analyzer/lib/source/embedder.dart
@@ -18,6 +18,7 @@
 import 'package:analyzer/src/generated/source.dart';
 import 'package:analyzer/src/generated/source_io.dart' show FileBasedSource;
 import 'package:analyzer/src/summary/idl.dart' show PackageBundle;
+import 'package:pub_semver/src/version.dart';
 import 'package:yaml/yaml.dart';
 
 export 'package:analyzer/src/context/builder.dart' show EmbedderYamlLocator;
@@ -38,13 +39,15 @@
     embedderYamls?.forEach(_processEmbedderYaml);
   }
 
-  // TODO(danrubel) Determine SDK version
   @override
   String get allowedExperimentsJson {
     return null;
   }
 
   @override
+  Version get languageVersion => throw UnimplementedError();
+
+  @override
   String get sdkVersion => '0';
 
   /// The url mappings for this SDK.
diff --git a/pkg/analyzer/lib/src/context/builder.dart b/pkg/analyzer/lib/src/context/builder.dart
index daf2deb..de3f46f 100644
--- a/pkg/analyzer/lib/src/context/builder.dart
+++ b/pkg/analyzer/lib/src/context/builder.dart
@@ -225,6 +225,20 @@
           resourceProvider: resourceProvider);
     }
 
+    DartSdk folderSdk;
+    {
+      String sdkPath = sdkManager.defaultSdkDirectory;
+      SdkDescription description = SdkDescription(sdkPath);
+      folderSdk = sdkManager.getSdk(description, () {
+        var sdk = FolderBasedDartSdk(
+          resourceProvider,
+          resourceProvider.getFolder(sdkPath),
+        );
+        sdk.analysisOptions = analysisOptions;
+        return sdk;
+      });
+    }
+
     if (workspace != null) {
       var partialSourceFactory = workspace.createSourceFactory(null, null);
       var embedderYamlSource = partialSourceFactory.forUri(
@@ -237,22 +251,17 @@
             EmbedderYamlLocator.forLibFolder(libFolder);
         Map<Folder, YamlMap> embedderMap = locator.embedderYamls;
         if (embedderMap.isNotEmpty) {
-          EmbedderSdk embedderSdk = EmbedderSdk(resourceProvider, embedderMap);
+          EmbedderSdk embedderSdk = EmbedderSdk(
+            resourceProvider,
+            embedderMap,
+            languageVersion: folderSdk.languageVersion,
+          );
           return embedderSdk;
         }
       }
     }
 
-    String sdkPath = sdkManager.defaultSdkDirectory;
-    SdkDescription description = SdkDescription(sdkPath);
-    return sdkManager.getSdk(description, () {
-      var sdk = FolderBasedDartSdk(
-        resourceProvider,
-        resourceProvider.getFolder(sdkPath),
-      );
-      sdk.analysisOptions = analysisOptions;
-      return sdk;
-    });
+    return folderSdk;
   }
 
   /// Return the analysis options that should be used to analyze code in the
diff --git a/pkg/analyzer/lib/src/dart/error/hint_codes.dart b/pkg/analyzer/lib/src/dart/error/hint_codes.dart
index e187c17..9645945 100644
--- a/pkg/analyzer/lib/src/dart/error/hint_codes.dart
+++ b/pkg/analyzer/lib/src/dart/error/hint_codes.dart
@@ -1584,11 +1584,10 @@
   // #### Description
   //
   // The analyzer produces this diagnostic when an `as` expression inside a
-  // [constant context](#constant-context) is found in code that has an SDK
-  // constraint whose lower bound is less than 2.3.2. Using an `as` expression
-  // in a [constant context](#constant-context) wasn't supported in earlier
-  // versions, so this code won't be able to run against earlier versions of the
-  // SDK.
+  // [constant context][] is found in code that has an SDK constraint whose
+  // lower bound is less than 2.3.2. Using an `as` expression in a
+  // [constant context][] wasn't supported in earlier versions, so this code
+  // won't be able to run against earlier versions of the SDK.
   //
   // #### Examples
   //
@@ -1621,7 +1620,7 @@
   //
   // If you need to support older versions of the SDK, then either rewrite the
   // code to not use an `as` expression, or change the code so that the `as`
-  // expression isn't in a [constant context](#constant-context):
+  // expression isn't in a [constant context][]:
   //
   // ```dart
   // num x = 3;
@@ -1696,11 +1695,11 @@
   // #### Description
   //
   // The analyzer produces this diagnostic when any use of the `&`, `|`, or `^`
-  // operators on the class `bool` inside a
-  // [constant context](#constant-context) is found in code that has an SDK
-  // constraint whose lower bound is less than 2.3.2. Using these operators in a
-  // [constant context](#constant-context) wasn't supported in earlier versions,
-  // so this code won't be able to run against earlier versions of the SDK.
+  // operators on the class `bool` inside a [constant context][] is found in
+  // code that has an SDK constraint whose lower bound is less than 2.3.2. Using
+  // these operators in a [constant context][] wasn't supported in earlier
+  // versions, so this code won't be able to run against earlier versions of the
+  // SDK.
   //
   // #### Examples
   //
@@ -1734,7 +1733,7 @@
   //
   // If you need to support older versions of the SDK, then either rewrite the
   // code to not use these operators, or change the code so that the expression
-  // isn't in a [constant context](#constant-context):
+  // isn't in a [constant context][]:
   //
   // ```dart
   // const bool a = true;
@@ -1755,11 +1754,10 @@
   // #### Description
   //
   // The analyzer produces this diagnostic when the operator `==` is used on a
-  // non-primitive type inside a [constant context](#constant-context) is found
-  // in code that has an SDK constraint whose lower bound is less than 2.3.2.
-  // Using this operator in a [constant context](#constant-context) wasn't
-  // supported in earlier versions, so this code won't be able to run against
-  // earlier versions of the SDK.
+  // non-primitive type inside a [constant context][] is found in code that has
+  // an SDK constraint whose lower bound is less than 2.3.2. Using this operator
+  // in a [constant context][] wasn't supported in earlier versions, so this
+  // code won't be able to run against earlier versions of the SDK.
   //
   // #### Examples
   //
@@ -1794,7 +1792,7 @@
   //
   // If you need to support older versions of the SDK, then either rewrite the
   // code to not use the `==` operator, or change the code so that the
-  // expression isn't in a [constant context](#constant-context):
+  // expression isn't in a [constant context][]:
   //
   // ```dart
   // class C {}
@@ -1934,11 +1932,10 @@
   // #### Description
   //
   // The analyzer produces this diagnostic when an `is` expression inside a
-  // [constant context](#constant-context) is found in code that has an SDK
-  // constraint whose lower bound is less than 2.3.2. Using an `is` expression
-  // in a [constant context](#constant-context) wasn't supported in earlier
-  // versions, so this code won't be able to run against earlier versions of the
-  // SDK.
+  // [constant context][] is found in code that has an SDK constraint whose
+  // lower bound is less than 2.3.2. Using an `is` expression in a
+  // [constant context][] wasn't supported in earlier versions, so this code
+  // won't be able to run against earlier versions of the SDK.
   //
   // #### Examples
   //
@@ -1972,7 +1969,7 @@
   // If you need to support older versions of the SDK, then either rewrite the
   // code to not use the `is` operator, or, if that isn't possible, change the
   // code so that the `is` expression isn't in a
-  // [constant context](#constant-context):
+  // [constant context][]:
   //
   // ```dart
   // const x = 4;
@@ -2155,11 +2152,10 @@
   // #### Description
   //
   // The analyzer produces this diagnostic when an if or spread element inside
-  // a [constant context](#constant-context) is found in code that has an
-  // SDK constraint whose lower bound is less than 2.5.0. Using an if or
-  // spread element inside a [constant context](#constant-context) wasn't
-  // supported in earlier versions, so this code won't be able to run against
-  // earlier versions of the SDK.
+  // a [constant context][] is found in code that has an SDK constraint whose
+  // lower bound is less than 2.5.0. Using an if or spread element inside a
+  // [constant context][] wasn't supported in earlier versions, so this code
+  // won't be able to run against earlier versions of the SDK.
   //
   // #### Examples
   //
@@ -2199,7 +2195,7 @@
   // ```
   //
   // If that isn't possible, change the code so that the element isn't in a
-  // [constant context](#constant-context):
+  // [constant context][]:
   //
   // ```dart
   // const a = [1, 2];
diff --git a/pkg/analyzer/lib/src/dart/micro/library_analyzer.dart b/pkg/analyzer/lib/src/dart/micro/library_analyzer.dart
index ac55764..bd7cb0b 100644
--- a/pkg/analyzer/lib/src/dart/micro/library_analyzer.dart
+++ b/pkg/analyzer/lib/src/dart/micro/library_analyzer.dart
@@ -84,7 +84,7 @@
 
   final Set<ConstantEvaluationTarget> _constants = {};
 
-  final String Function(String path) getFileContent;
+  final String Function(FileState file) getFileContent;
 
   LibraryAnalyzer(
     this._analysisOptions,
@@ -237,7 +237,7 @@
     if (_analysisOptions.lint) {
       performance.run('computeLints', (performance) {
         var allUnits = _library.libraryFiles.map((file) {
-          var content = _getFileContent(file.path);
+          var content = getFileContent(file);
           return LinterContextUnit(content, units[file]);
         }).toList();
         for (int i = 0; i < allUnits.length; i++) {
@@ -271,7 +271,7 @@
       unit.accept(Dart2JSVerifier(errorReporter));
     }
 
-    var content = _getFileContent(file.path);
+    var content = getFileContent(file);
     unit.accept(
       BestPracticesVerifier(
         errorReporter,
@@ -453,15 +453,6 @@
     });
   }
 
-  /// Catch all exceptions from the `getFileContent` function.
-  String _getFileContent(String path) {
-    try {
-      return getFileContent(path);
-    } catch (_) {
-      return '';
-    }
-  }
-
   WorkspacePackage _getPackage(CompilationUnit unit) {
     final libraryPath = _library.source.fullName;
     Workspace workspace =
@@ -521,7 +512,7 @@
     @required FileState file,
     @required OperationPerformanceImpl performance,
   }) {
-    String content = _getFileContent(file.path);
+    String content = getFileContent(file);
 
     performance.getDataInt('count').increment();
     performance.getDataInt('length').add(content.length);
diff --git a/pkg/analyzer/lib/src/dart/micro/library_graph.dart b/pkg/analyzer/lib/src/dart/micro/library_graph.dart
index eb0a42f..4b532b3 100644
--- a/pkg/analyzer/lib/src/dart/micro/library_graph.dart
+++ b/pkg/analyzer/lib/src/dart/micro/library_graph.dart
@@ -30,6 +30,7 @@
     show DependencyWalker, Node;
 import 'package:analyzer/src/summary2/informative_data.dart';
 import 'package:analyzer/src/util/performance/operation_performance.dart';
+import 'package:collection/collection.dart';
 import 'package:convert/convert.dart';
 import 'package:meta/meta.dart';
 
@@ -95,7 +96,7 @@
     signatureBuilder.addString(path);
     signatureBuilder.addBytes(libraryCycle.signature);
 
-    var content = getContent();
+    var content = getContentWithSameDigest();
     signatureBuilder.addString(content);
 
     return signatureBuilder.toHex();
@@ -114,6 +115,20 @@
     }
   }
 
+  /// Return the content of the file, the empty string if cannot be read.
+  ///
+  /// Additionally, we read the file digest, end verify that it is the same
+  /// as the [_digest] that we recorded in [refresh]. If it is not, then the
+  /// file was changed, and we failed to call [FileSystemState.changeFile]
+  String getContentWithSameDigest() {
+    var digest = utf8.encode(_fsState.getFileDigest(path));
+    if (!const ListEquality<int>().equals(digest, _digest)) {
+      throw StateError('File was changed, but not invalidated: $path');
+    }
+
+    return getContent();
+  }
+
   void internal_setLibraryCycle(LibraryCycle cycle, String signature) {
     _libraryCycle = cycle;
   }
diff --git a/pkg/analyzer/lib/src/dart/micro/resolve_file.dart b/pkg/analyzer/lib/src/dart/micro/resolve_file.dart
index eeb514b..2ccbf70 100644
--- a/pkg/analyzer/lib/src/dart/micro/resolve_file.dart
+++ b/pkg/analyzer/lib/src/dart/micro/resolve_file.dart
@@ -306,7 +306,7 @@
             contextObjects.inheritanceManager,
             libraryFile,
             resourceProvider,
-            (String path) => resourceProvider.getFile(path).readAsStringSync(),
+            (file) => file.getContentWithSameDigest(),
           );
 
           results = performance.run('analyze', (performance) {
@@ -589,12 +589,7 @@
           for (var file in libraryFile.libraryFiles) {
             var isSynthetic = !file.exists;
 
-            var content = '';
-            try {
-              var resource = resourceProvider.getFile(file.path);
-              content = resource.readAsStringSync();
-            } catch (_) {}
-
+            var content = file.getContentWithSameDigest();
             performance.getDataInt('parseCount').increment();
             performance.getDataInt('parseLength').add(content.length);
 
diff --git a/pkg/analyzer/lib/src/dart/sdk/sdk.dart b/pkg/analyzer/lib/src/dart/sdk/sdk.dart
index d50e6e6..29956ee 100644
--- a/pkg/analyzer/lib/src/dart/sdk/sdk.dart
+++ b/pkg/analyzer/lib/src/dart/sdk/sdk.dart
@@ -3,6 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:collection';
+import 'dart:io' as io;
 
 import 'package:analyzer/dart/analysis/features.dart';
 import 'package:analyzer/dart/analysis/utilities.dart';
@@ -14,8 +15,16 @@
 import 'package:analyzer/src/generated/java_engine_io.dart';
 import 'package:analyzer/src/generated/sdk.dart';
 import 'package:analyzer/src/generated/source_io.dart';
+import 'package:pub_semver/pub_semver.dart';
 import 'package:yaml/yaml.dart';
 
+Version languageVersionFromSdkVersion(String sdkVersionStr) {
+  var sdkVersionParts = sdkVersionStr.split('.');
+  var sdkVersionMajor = int.parse(sdkVersionParts[0]);
+  var sdkVersionMinor = int.parse(sdkVersionParts[1]);
+  return Version(sdkVersionMajor, sdkVersionMinor, 0);
+}
+
 /// An abstract implementation of a Dart SDK in which the available libraries
 /// are stored in a library map. Subclasses are responsible for populating the
 /// library map.
@@ -197,11 +206,21 @@
   static const String _DART_COLON_PREFIX = 'dart:';
 
   static const String _EMBEDDED_LIB_MAP_KEY = 'embedded_libs';
+
+  Version _languageVersion;
+
   final Map<String, String> _urlMappings = HashMap<String, String>();
 
+  /// TODO(scheglov) Make [languageVersion] required.
+  /// https://github.com/dart-lang/sdk/issues/42890
   EmbedderSdk(
-      ResourceProvider resourceProvider, Map<Folder, YamlMap> embedderYamls) {
+    ResourceProvider resourceProvider,
+    Map<Folder, YamlMap> embedderYamls, {
+    Version languageVersion,
+  }) {
     this.resourceProvider = resourceProvider;
+    this._languageVersion =
+        languageVersion ?? languageVersionFromSdkVersion(io.Platform.version);
     embedderYamls?.forEach(_processEmbedderYaml);
   }
 
@@ -222,6 +241,9 @@
   }
 
   @override
+  Version get languageVersion => _languageVersion;
+
+  @override
   // TODO(danrubel) Determine SDK version
   String get sdkVersion => '0';
 
@@ -364,6 +386,9 @@
   /// discovered.
   String _sdkVersion;
 
+  /// The cached language version of this SDK.
+  Version _languageVersion;
+
   /// The file containing the pub executable.
   File _pubExecutable;
 
@@ -395,6 +420,18 @@
   Folder get docDirectory =>
       _sdkDirectory.getChildAssumingFolder(_DOCS_DIRECTORY_NAME);
 
+  @override
+  Version get languageVersion {
+    if (_languageVersion == null) {
+      var sdkVersionStr = _sdkDirectory
+          .getChildAssumingFile(_VERSION_FILE_NAME)
+          .readAsStringSync();
+      _languageVersion = languageVersionFromSdkVersion(sdkVersionStr);
+    }
+
+    return _languageVersion;
+  }
+
   /// Return the directory within the SDK directory that contains the libraries.
   Folder get libraryDirectory {
     return _libraryDirectory ??=
diff --git a/pkg/analyzer/lib/src/error/codes.dart b/pkg/analyzer/lib/src/error/codes.dart
index c929868..d612589 100644
--- a/pkg/analyzer/lib/src/error/codes.dart
+++ b/pkg/analyzer/lib/src/error/codes.dart
@@ -713,9 +713,8 @@
   // #### Description
   //
   // The analyzer produces this diagnostic when a method or function has a
-  // return type that's <a href=”#potentially-non-nullable”>potentially
-  // non-nullable</a> but would implicitly return `null` if control reached the
-  // end of the function.
+  // return type that's [potentially non-nullable][] but would implicitly return
+  // `null` if control reached the end of the function.
   //
   // #### Example
   //
@@ -5307,11 +5306,11 @@
   // #### Description
   //
   // The analyzer produces this diagnostic when an optional parameter, whether
-  // positional or named, has a <a href=”#potentially-non-nullable”>potentially
-  // non-nullable</a> type and doesn't specify a default value. Optional
-  // parameters that have no explicit default value have an implicit default
-  // value of `null`. If the type of the parameter doesn't allow the parameter
-  // to have a value of `null`, then the implicit default value isn't valid.
+  // positional or named, has a [potentially non-nullable][] type and doesn't
+  // specify a default value. Optional parameters that have no explicit default
+  // value have an implicit default value of `null`. If the type of the
+  // parameter doesn't allow the parameter to have a value of `null`, then the
+  // implicit default value isn't valid.
   //
   // #### Example
   //
@@ -6319,7 +6318,7 @@
   // The analyzer produces this diagnostic when an element in a constant list
   // literal isn't a constant value. The list literal can be constant either
   // explicitly (because it's prefixed by the `const` keyword) or implicitly
-  // (because it appears in a [constant context](#constant-context)).
+  // (because it appears in a [constant context][]).
   //
   // #### Examples
   //
@@ -6745,8 +6744,7 @@
   //
   // The analyzer produces this diagnostic when a local variable is referenced
   // and has all these characteristics:
-  // - Has a type that's <a href=”#potentially-non-nullable”>potentially
-  //   non-nullable</a>.
+  // - Has a type that's [potentially non-nullable][].
   // - Doesn't have an initializer.
   // - Isn't marked as `late`.
   // - The analyzer can't prove that the local variable will be assigned before
@@ -6916,8 +6914,7 @@
   //
   // The analyzer produces this diagnostic when a field is declared and has all
   // these characteristics:
-  // - Has a type that's <a href=”#potentially-non-nullable”>potentially
-  //   non-nullable</a>
+  // - Has a type that's [potentially non-nullable][]
   // - Doesn't have an initializer
   // - Isn't marked as `late`
   //
@@ -8629,8 +8626,8 @@
   // #### Description
   //
   // The analyzer produces this diagnostic when an expression whose type is
-  // <a href=”#potentially-non-nullable”>potentially non-nullable</a> is
-  // dereferenced without first verifying that the value isn't `null`.
+  // [potentially non-nullable][] is dereferenced without first verifying that
+  // the value isn't `null`.
   //
   // #### Example
   //
diff --git a/pkg/analyzer/lib/src/generated/sdk.dart b/pkg/analyzer/lib/src/generated/sdk.dart
index efa21c7..1f141f7 100644
--- a/pkg/analyzer/lib/src/generated/sdk.dart
+++ b/pkg/analyzer/lib/src/generated/sdk.dart
@@ -8,6 +8,7 @@
 import 'package:analyzer/dart/ast/visitor.dart';
 import 'package:analyzer/src/generated/engine.dart' show AnalysisContext;
 import 'package:analyzer/src/generated/source.dart' show Source;
+import 'package:pub_semver/pub_semver.dart';
 
 /// A Dart SDK installed in a specified location.
 abstract class DartSdk {
@@ -34,6 +35,12 @@
   /// Return the analysis context used for all of the sources in this [DartSdk].
   AnalysisContext get context;
 
+  /// Return the language version of this SDK, or throws an exception.
+  ///
+  /// The language version has only major/minor components, the patch number
+  /// is always zero, because the patch number does not change the language.
+  Version get languageVersion;
+
   /// Return a list containing all of the libraries defined in this SDK.
   List<SdkLibrary> get sdkLibraries;
 
diff --git a/pkg/analyzer/lib/src/lint/linter_visitor.dart b/pkg/analyzer/lib/src/lint/linter_visitor.dart
index 0392e60..bc3f868 100644
--- a/pkg/analyzer/lib/src/lint/linter_visitor.dart
+++ b/pkg/analyzer/lib/src/lint/linter_visitor.dart
@@ -19,12 +19,24 @@
   LinterVisitor(this.registry, this.exceptionHandler);
 
   @override
+  void visitAdjacentStrings(AdjacentStrings node) {
+    _runSubscriptions(node, registry._forAdjacentStrings);
+    super.visitAdjacentStrings(node);
+  }
+
+  @override
   void visitAnnotation(Annotation node) {
     _runSubscriptions(node, registry._forAnnotation);
     super.visitAnnotation(node);
   }
 
   @override
+  void visitArgumentList(ArgumentList node) {
+    _runSubscriptions(node, registry._forArgumentList);
+    super.visitArgumentList(node);
+  }
+
+  @override
   void visitAsExpression(AsExpression node) {
     _runSubscriptions(node, registry._forAsExpression);
     super.visitAsExpression(node);
@@ -481,6 +493,18 @@
   }
 
   @override
+  void visitNativeClause(NativeClause node) {
+    _runSubscriptions(node, registry._forNativeClause);
+    super.visitNativeClause(node);
+  }
+
+  @override
+  void visitNativeFunctionBody(NativeFunctionBody node) {
+    _runSubscriptions(node, registry._forNativeFunctionBody);
+    super.visitNativeFunctionBody(node);
+  }
+
+  @override
   void visitNullLiteral(NullLiteral node) {
     _runSubscriptions(node, registry._forNullLiteral);
     super.visitNullLiteral(node);
@@ -554,6 +578,12 @@
   }
 
   @override
+  void visitScriptTag(ScriptTag node) {
+    _runSubscriptions(node, registry._forScriptTag);
+    super.visitScriptTag(node);
+  }
+
+  @override
   void visitSetOrMapLiteral(SetOrMapLiteral node) {
     _runSubscriptions(node, registry._forSetOrMapLiteral);
     super.visitSetOrMapLiteral(node);
@@ -734,7 +764,9 @@
 /// The container to register visitors for separate AST node types.
 class NodeLintRegistry {
   final bool enableTiming;
+  final List<_Subscription<AdjacentStrings>> _forAdjacentStrings = [];
   final List<_Subscription<Annotation>> _forAnnotation = [];
+  final List<_Subscription<ArgumentList>> _forArgumentList = [];
   final List<_Subscription<AsExpression>> _forAsExpression = [];
   final List<_Subscription<AssertInitializer>> _forAssertInitializer = [];
   final List<_Subscription<AssertStatement>> _forAssertStatement = [];
@@ -777,8 +809,8 @@
       [];
   final List<_Subscription<ExpressionStatement>> _forExpressionStatement = [];
   final List<_Subscription<ExtendsClause>> _forExtendsClause = [];
-  final List<_Subscription<ExtendsClause>> _forExtensionDeclaration = [];
-  final List<_Subscription<ExtendsClause>> _forExtensionOverride = [];
+  final List<_Subscription<ExtensionDeclaration>> _forExtensionDeclaration = [];
+  final List<_Subscription<ExtensionOverride>> _forExtensionOverride = [];
   final List<_Subscription<FieldDeclaration>> _forFieldDeclaration = [];
   final List<_Subscription<FieldFormalParameter>> _forFieldFormalParameter = [];
   final List<_Subscription<ForEachPartsWithDeclaration>>
@@ -826,6 +858,8 @@
   final List<_Subscription<MethodInvocation>> _forMethodInvocation = [];
   final List<_Subscription<MixinDeclaration>> _forMixinDeclaration = [];
   final List<_Subscription<NamedExpression>> _forNamedExpression = [];
+  final List<_Subscription<NativeClause>> _forNativeClause = [];
+  final List<_Subscription<NativeFunctionBody>> _forNativeFunctionBody = [];
   final List<_Subscription<NullLiteral>> _forNullLiteral = [];
   final List<_Subscription<OnClause>> _forOnClause = [];
   final List<_Subscription<ParenthesizedExpression>>
@@ -840,6 +874,7 @@
       _forRedirectingConstructorInvocation = [];
   final List<_Subscription<RethrowExpression>> _forRethrowExpression = [];
   final List<_Subscription<ReturnStatement>> _forReturnStatement = [];
+  final List<_Subscription<ScriptTag>> _forScriptTag = [];
   final List<_Subscription<SetOrMapLiteral>> _forSetOrMapLiteral = [];
   final List<_Subscription<ShowCombinator>> _forShowCombinator = [];
   final List<_Subscription<SimpleFormalParameter>> _forSimpleFormalParameter =
@@ -875,10 +910,18 @@
 
   NodeLintRegistry(this.enableTiming);
 
+  void addAdjacentStrings(LintRule linter, AstVisitor visitor) {
+    _forAdjacentStrings.add(_Subscription(linter, visitor, _getTimer(linter)));
+  }
+
   void addAnnotation(LintRule linter, AstVisitor visitor) {
     _forAnnotation.add(_Subscription(linter, visitor, _getTimer(linter)));
   }
 
+  void addArgumentList(LintRule linter, AstVisitor visitor) {
+    _forArgumentList.add(_Subscription(linter, visitor, _getTimer(linter)));
+  }
+
   void addAsExpression(LintRule linter, AstVisitor visitor) {
     _forAsExpression.add(_Subscription(linter, visitor, _getTimer(linter)));
   }
@@ -1217,6 +1260,15 @@
     _forNamedExpression.add(_Subscription(linter, visitor, _getTimer(linter)));
   }
 
+  void addNativeClause(LintRule linter, AstVisitor visitor) {
+    _forNativeClause.add(_Subscription(linter, visitor, _getTimer(linter)));
+  }
+
+  void addNativeFunctionBody(LintRule linter, AstVisitor visitor) {
+    _forNativeFunctionBody
+        .add(_Subscription(linter, visitor, _getTimer(linter)));
+  }
+
   void addNullLiteral(LintRule linter, AstVisitor visitor) {
     _forNullLiteral.add(_Subscription(linter, visitor, _getTimer(linter)));
   }
@@ -1271,6 +1323,10 @@
     _forReturnStatement.add(_Subscription(linter, visitor, _getTimer(linter)));
   }
 
+  void addScriptTag(LintRule linter, AstVisitor visitor) {
+    _forScriptTag.add(_Subscription(linter, visitor, _getTimer(linter)));
+  }
+
   void addSetOrMapLiteral(LintRule linter, AstVisitor visitor) {
     _forSetOrMapLiteral.add(_Subscription(linter, visitor, _getTimer(linter)));
   }
diff --git a/pkg/analyzer/lib/src/summary/format.dart b/pkg/analyzer/lib/src/summary/format.dart
index 18d2996..f7c6b21 100644
--- a/pkg/analyzer/lib/src/summary/format.dart
+++ b/pkg/analyzer/lib/src/summary/format.dart
@@ -17792,6 +17792,7 @@
     with _PackageBundleSdkMixin
     implements idl.PackageBundleSdk {
   String _allowedExperimentsJson;
+  LinkedLanguageVersionBuilder _languageVersion;
 
   @override
   String get allowedExperimentsJson => _allowedExperimentsJson ??= '';
@@ -17801,27 +17802,49 @@
     this._allowedExperimentsJson = value;
   }
 
-  PackageBundleSdkBuilder({String allowedExperimentsJson})
-      : _allowedExperimentsJson = allowedExperimentsJson;
+  @override
+  LinkedLanguageVersionBuilder get languageVersion => _languageVersion;
+
+  /// The language version of the SDK.
+  set languageVersion(LinkedLanguageVersionBuilder value) {
+    this._languageVersion = value;
+  }
+
+  PackageBundleSdkBuilder(
+      {String allowedExperimentsJson,
+      LinkedLanguageVersionBuilder languageVersion})
+      : _allowedExperimentsJson = allowedExperimentsJson,
+        _languageVersion = languageVersion;
 
   /// Flush [informative] data recursively.
-  void flushInformative() {}
+  void flushInformative() {
+    _languageVersion?.flushInformative();
+  }
 
   /// Accumulate non-[informative] data into [signature].
   void collectApiSignature(api_sig.ApiSignature signature) {
     signature.addString(this._allowedExperimentsJson ?? '');
+    signature.addBool(this._languageVersion != null);
+    this._languageVersion?.collectApiSignature(signature);
   }
 
   fb.Offset finish(fb.Builder fbBuilder) {
     fb.Offset offset_allowedExperimentsJson;
+    fb.Offset offset_languageVersion;
     if (_allowedExperimentsJson != null) {
       offset_allowedExperimentsJson =
           fbBuilder.writeString(_allowedExperimentsJson);
     }
+    if (_languageVersion != null) {
+      offset_languageVersion = _languageVersion.finish(fbBuilder);
+    }
     fbBuilder.startTable();
     if (offset_allowedExperimentsJson != null) {
       fbBuilder.addOffset(0, offset_allowedExperimentsJson);
     }
+    if (offset_languageVersion != null) {
+      fbBuilder.addOffset(1, offset_languageVersion);
+    }
     return fbBuilder.endTable();
   }
 }
@@ -17843,6 +17866,7 @@
   _PackageBundleSdkImpl(this._bc, this._bcOffset);
 
   String _allowedExperimentsJson;
+  idl.LinkedLanguageVersion _languageVersion;
 
   @override
   String get allowedExperimentsJson {
@@ -17850,6 +17874,13 @@
         const fb.StringReader().vTableGet(_bc, _bcOffset, 0, '');
     return _allowedExperimentsJson;
   }
+
+  @override
+  idl.LinkedLanguageVersion get languageVersion {
+    _languageVersion ??=
+        const _LinkedLanguageVersionReader().vTableGet(_bc, _bcOffset, 1, null);
+    return _languageVersion;
+  }
 }
 
 abstract class _PackageBundleSdkMixin implements idl.PackageBundleSdk {
@@ -17859,12 +17890,16 @@
     if (allowedExperimentsJson != '') {
       _result["allowedExperimentsJson"] = allowedExperimentsJson;
     }
+    if (languageVersion != null) {
+      _result["languageVersion"] = languageVersion.toJson();
+    }
     return _result;
   }
 
   @override
   Map<String, Object> toMap() => {
         "allowedExperimentsJson": allowedExperimentsJson,
+        "languageVersion": languageVersion,
       };
 
   @override
diff --git a/pkg/analyzer/lib/src/summary/format.fbs b/pkg/analyzer/lib/src/summary/format.fbs
index e948b37..211f5fb 100644
--- a/pkg/analyzer/lib/src/summary/format.fbs
+++ b/pkg/analyzer/lib/src/summary/format.fbs
@@ -1274,6 +1274,9 @@
 table PackageBundleSdk {
   /// The content of the `allowed_experiments.json` from SDK.
   allowedExperimentsJson:string (id: 0);
+
+  /// The language version of the SDK.
+  languageVersion:LinkedLanguageVersion (id: 1);
 }
 
 /// Summary information about a top-level type inference error.
diff --git a/pkg/analyzer/lib/src/summary/idl.dart b/pkg/analyzer/lib/src/summary/idl.dart
index 1eea7da..8f6deea 100644
--- a/pkg/analyzer/lib/src/summary/idl.dart
+++ b/pkg/analyzer/lib/src/summary/idl.dart
@@ -1912,6 +1912,10 @@
   /// The content of the `allowed_experiments.json` from SDK.
   @Id(0)
   String get allowedExperimentsJson;
+
+  /// The language version of the SDK.
+  @Id(1)
+  LinkedLanguageVersion get languageVersion;
 }
 
 /// Summary information about a top-level type inference error.
diff --git a/pkg/analyzer/lib/src/summary/summary_sdk.dart b/pkg/analyzer/lib/src/summary/summary_sdk.dart
index 3315a88..80cd239 100644
--- a/pkg/analyzer/lib/src/summary/summary_sdk.dart
+++ b/pkg/analyzer/lib/src/summary/summary_sdk.dart
@@ -10,11 +10,12 @@
     show DartUriResolver, Source, SourceFactory;
 import 'package:analyzer/src/summary/idl.dart';
 import 'package:analyzer/src/summary/package_bundle_reader.dart';
+import 'package:pub_semver/pub_semver.dart';
 
 /// An implementation of [DartSdk] which provides analysis results for `dart:`
 /// libraries from the given summary file.  This implementation is limited and
 /// suitable only for command-line tools, but not for IDEs - it does not
-/// implement [sdkLibraries], [sdkVersion], [uris] and [fromFileUri].
+/// implement [sdkLibraries], [uris] and [fromFileUri].
 class SummaryBasedDartSdk implements DartSdk {
   SummaryDataStore _dataStore;
   InSummaryUriResolver _uriResolver;
@@ -41,7 +42,7 @@
 
   @override
   String get allowedExperimentsJson {
-    return _bundle.sdk?.allowedExperimentsJson;
+    return _bundle.sdk.allowedExperimentsJson;
   }
 
   /// Return the [PackageBundle] for this SDK, not `null`.
@@ -58,6 +59,12 @@
   }
 
   @override
+  Version get languageVersion {
+    var version = _bundle.sdk.languageVersion;
+    return Version(version.major, version.minor, 0);
+  }
+
+  @override
   List<SdkLibrary> get sdkLibraries {
     throw UnimplementedError();
   }
diff --git a/pkg/analyzer/lib/src/test_utilities/mock_sdk.dart b/pkg/analyzer/lib/src/test_utilities/mock_sdk.dart
index d44f818..1807d8d 100644
--- a/pkg/analyzer/lib/src/test_utilities/mock_sdk.dart
+++ b/pkg/analyzer/lib/src/test_utilities/mock_sdk.dart
@@ -5,10 +5,12 @@
 import 'package:analyzer/file_system/file_system.dart';
 import 'package:analyzer/file_system/memory_file_system.dart';
 import 'package:analyzer/src/context/context.dart';
+import 'package:analyzer/src/dart/sdk/sdk.dart';
 import 'package:analyzer/src/generated/engine.dart';
 import 'package:analyzer/src/generated/sdk.dart';
 import 'package:analyzer/src/generated/source.dart';
 import 'package:meta/meta.dart';
+import 'package:pub_semver/src/version.dart';
 
 const String sdkRoot = '/sdk';
 
@@ -1069,6 +1071,7 @@
   'io': 'const LibraryInfo("io/io.dart")',
   'isolate': 'const LibraryInfo("isolate/isolate.dart")',
   'math': 'const LibraryInfo("math/math.dart")',
+  '_internal': 'const LibraryInfo("_internal/internal.dart", categories: "")',
 };
 
 class MockSdk implements DartSdk {
@@ -1084,6 +1087,8 @@
   @override
   final List<SdkLibrary> sdkLibraries = [];
 
+  File _versionFile;
+
   /// Optional [additionalLibraries] should have unique URIs, and paths in
   /// their units are relative (will be put into `sdkRoot/lib`).
   MockSdk({
@@ -1091,6 +1096,11 @@
     AnalysisOptionsImpl analysisOptions,
     List<MockSdkLibrary> additionalLibraries = const [],
   }) : _analysisOptions = analysisOptions ?? AnalysisOptionsImpl() {
+    _versionFile = resourceProvider
+        .getFolder(resourceProvider.convertPath(sdkRoot))
+        .getChildAssumingFile('version');
+    _versionFile.writeAsStringSync('2.10.0');
+
     for (MockSdkLibrary library in _LIBRARIES) {
       var convertedLibrary = library._toProvider(resourceProvider);
       sdkLibraries.add(convertedLibrary);
@@ -1101,7 +1111,7 @@
           library.units.map(
             (unit) {
               var pathContext = resourceProvider.pathContext;
-              var absoluteUri = pathContext.join(sdkRoot, unit.path);
+              var absoluteUri = pathContext.join(sdkRoot, 'lib', unit.path);
               return MockSdkLibraryUnit(
                 unit.uriStr,
                 resourceProvider.convertPath(absoluteUri),
@@ -1126,6 +1136,13 @@
       for (var e in _librariesDartEntries.entries) {
         buffer.writeln('"${e.key}": ${e.value},');
       }
+      for (var library in additionalLibraries) {
+        for (var unit in library.units) {
+          var name = unit.uriStr.substring(5);
+          var libraryInfo = 'const LibraryInfo("${unit.path}")';
+          buffer.writeln('"$name": $libraryInfo,');
+        }
+      }
       buffer.writeln('};');
       resourceProvider.newFile(
         resourceProvider.convertPath(
@@ -1180,6 +1197,12 @@
   }
 
   @override
+  Version get languageVersion {
+    var sdkVersionStr = _versionFile.readAsStringSync();
+    return languageVersionFromSdkVersion(sdkVersionStr);
+  }
+
+  @override
   String get sdkVersion => throw UnimplementedError();
 
   @override
diff --git a/pkg/analyzer/lib/src/test_utilities/package_mixin.dart b/pkg/analyzer/lib/src/test_utilities/package_mixin.dart
index ffcf84c..7889ece 100644
--- a/pkg/analyzer/lib/src/test_utilities/package_mixin.dart
+++ b/pkg/analyzer/lib/src/test_utilities/package_mixin.dart
@@ -13,9 +13,40 @@
 
   /// Create a fake 'js' package that can be used by tests.
   void addJsPackage() {
-    Folder lib = addPubPackage('js');
-    newFile(join(lib.path, 'js.dart'), content: r'''
+    var rootFolder = getFolder('/.pub-cache/js');
+    PackagesContent.addJsPackageFiles(rootFolder);
+    addPubPackage('js');
+  }
+
+  /// Create a fake 'meta' package that can be used by tests.
+  void addMetaPackage() {
+    var rootFolder = getFolder('/.pub-cache/meta');
+    PackagesContent.addMetaPackageFiles(rootFolder);
+    addPubPackage('meta');
+  }
+
+  /// Return a newly created directory in which the contents of a pub package
+  /// with the given [packageName] can be written. The package will be added to
+  /// the package map so that the package can be referenced from the code being
+  /// analyzed.
+  Folder addPubPackage(String packageName) {
+    // TODO(brianwilkerson) Consider renaming this to `addPackage` and passing
+    //  in a `PackageStyle` (pub, bazel, gn, build, plain) in order to support
+    //  creating other styles of packages.
+    Folder lib = getFolder('/.pub-cache/$packageName/lib');
+    packageMap[packageName] = [lib];
+    return lib;
+  }
+}
+
+/// Helper for creating mock packages.
+class PackagesContent {
+  /// Create a fake 'js' package that can be used by tests.
+  static void addJsPackageFiles(Folder rootFolder) {
+    var libFolder = rootFolder.getChildAssumingFolder('lib');
+    libFolder.getChildAssumingFile('js.dart').writeAsStringSync(r'''
 library js;
+
 class JS {
   const JS([String js]);
 }
@@ -23,9 +54,9 @@
   }
 
   /// Create a fake 'meta' package that can be used by tests.
-  void addMetaPackage() {
-    Folder lib = addPubPackage('meta');
-    newFile(join(lib.path, 'meta.dart'), content: r'''
+  static void addMetaPackageFiles(Folder rootFolder) {
+    var libFolder = rootFolder.getChildAssumingFolder('lib');
+    libFolder.getChildAssumingFile('meta.dart').writeAsStringSync(r'''
 library meta;
 
 const _AlwaysThrows alwaysThrows = const _AlwaysThrows();
@@ -77,17 +108,4 @@
 }
 ''');
   }
-
-  /// Return a newly created directory in which the contents of a pub package
-  /// with the given [packageName] can be written. The package will be added to
-  /// the package map so that the package can be referenced from the code being
-  /// analyzed.
-  Folder addPubPackage(String packageName) {
-    // TODO(brianwilkerson) Consider renaming this to `addPackage` and passing
-    //  in a `PackageStyle` (pub, bazel, gn, build, plain) in order to support
-    //  creating other styles of packages.
-    Folder lib = getFolder('/.pub-cache/$packageName/lib');
-    packageMap[packageName] = [lib];
-    return lib;
-  }
 }
diff --git a/pkg/analyzer/pubspec.yaml b/pkg/analyzer/pubspec.yaml
index 4ac4a2b..44445f6 100644
--- a/pkg/analyzer/pubspec.yaml
+++ b/pkg/analyzer/pubspec.yaml
@@ -1,5 +1,5 @@
 name: analyzer
-version: 0.39.16-dev
+version: 0.39.16
 description: This package provides a library that performs static analysis of Dart code.
 homepage: https://github.com/dart-lang/sdk/tree/master/pkg/analyzer
 
diff --git a/pkg/analyzer/test/id_tests/constant_test.dart b/pkg/analyzer/test/id_tests/constant_test.dart
index 9a78106..ff39009 100644
--- a/pkg/analyzer/test/id_tests/constant_test.dart
+++ b/pkg/analyzer/test/id_tests/constant_test.dart
@@ -93,28 +93,31 @@
         return 'Symbol(${value.toSymbolValue()})';
       } else if (type.isDartCoreSet) {
         var elements = value.toSetValue().map(_stringify).join(',');
-        return 'Set<${type.typeArguments[0]}>($elements)';
+        return '${_stringifyType(type)}($elements)';
       } else if (type.isDartCoreList) {
         var elements = value.toListValue().map(_stringify).join(',');
-        return 'List<${type.typeArguments[0]}>($elements)';
+        return '${_stringifyType(type)}($elements)';
       } else if (type.isDartCoreMap) {
-        var typeArguments = type.typeArguments.join(',');
         var elements = value.toMapValue().entries.map((entry) {
           var key = _stringify(entry.key);
           var value = _stringify(entry.value);
           return '$key:$value';
         }).join(',');
-        return 'Map<$typeArguments>($elements)';
+        return '${_stringifyType(type)}($elements)';
       } else {
         // TODO(paulberry): Add `isDartCoreType` to properly recognize type
         // literal constants.
-        return 'TypeLiteral(${value.toTypeValue()})';
+        return 'TypeLiteral(${_stringifyType(value.toTypeValue())})';
       }
       // TODO(paulberry): Support object constants.
     } else if (type is FunctionType) {
       var element = value.toFunctionValue();
-      return 'Function(${element.name},type=${value.type})';
+      return 'Function(${element.name},type=${_stringifyType(value.type)})';
     }
     throw UnimplementedError('_stringify for type $type');
   }
+
+  String _stringifyType(DartType type) {
+    return type.getDisplayString(withNullability: true);
+  }
 }
diff --git a/pkg/analyzer/test/src/context/builder_test.dart b/pkg/analyzer/test/src/context/builder_test.dart
index 3016530..14729ad 100644
--- a/pkg/analyzer/test/src/context/builder_test.dart
+++ b/pkg/analyzer/test/src/context/builder_test.dart
@@ -67,19 +67,9 @@
         windows: resourceProvider.pathContext.style == path.windows.style);
   }
 
-  void createDefaultSdk(Folder sdkDir) {
-    defaultSdkPath = join(sdkDir.path, 'default', 'sdk');
-    String librariesFilePath = join(defaultSdkPath, 'lib', '_internal',
-        'sdk_library_metadata', 'lib', 'libraries.dart');
-    newFile(librariesFilePath, content: r'''
-const Map<String, LibraryInfo> libraries = const {
-  "async": const LibraryInfo("async/async.dart"),
-  "core": const LibraryInfo("core/core.dart"),
-};
-''');
-    sdkManager = DartSdkManager(defaultSdkPath);
-    builder = ContextBuilder(resourceProvider, sdkManager, contentCache,
-        options: builderOptions);
+  void createDefaultSdk() {
+    defaultSdkPath = convertPath(sdkRoot);
+    MockSdk(resourceProvider: resourceProvider);
   }
 
   void setUp() {
@@ -347,8 +337,7 @@
 
   void test_createSourceFactory_noProvider_packages_embedder_noExtensions() {
     String rootPath = convertPath('/root');
-    Folder rootFolder = getFolder(rootPath);
-    createDefaultSdk(rootFolder);
+    createDefaultSdk();
     String projectPath = join(rootPath, 'project');
     String packageFilePath = join(projectPath, '.packages');
 
@@ -387,8 +376,7 @@
 
   void test_createSourceFactory_noProvider_packages_noEmbedder_noExtensions() {
     String rootPath = convertPath('/root');
-    Folder rootFolder = getFolder(rootPath);
-    createDefaultSdk(rootFolder);
+    createDefaultSdk();
     String projectPath = join(rootPath, 'project');
     String packageFilePath = join(projectPath, '.packages');
     String packageA = join(rootPath, 'pkgs', 'a');
diff --git a/pkg/analyzer/test/src/dart/micro/simple_file_resolver_test.dart b/pkg/analyzer/test/src/dart/micro/simple_file_resolver_test.dart
index e16cbbf..ae592bc 100644
--- a/pkg/analyzer/test/src/dart/micro/simple_file_resolver_test.dart
+++ b/pkg/analyzer/test/src/dart/micro/simple_file_resolver_test.dart
@@ -120,6 +120,48 @@
     assertErrorsInResolvedUnit(result, []);
   }
 
+  test_changeFile_resolution_missingChangeFileForPart() async {
+    newFile(aPath, content: r'''
+part 'b.dart';
+
+var b = B(0);
+''');
+
+    result = await resolveFile(aPath);
+    assertErrorsInResolvedUnit(result, [
+      error(CompileTimeErrorCode.URI_DOES_NOT_EXIST, 5, 8),
+      error(CompileTimeErrorCode.UNDEFINED_FUNCTION, 24, 1),
+    ]);
+
+    // Update a.dart, and notify the resolver. We need this to have at least
+    // one change, so that we decided to rebuild the library summary.
+    newFile(aPath, content: r'''
+part 'b.dart';
+
+var b = B(1);
+''');
+    fileResolver.changeFile(aPath);
+
+    // Update b.dart, but do not notify the resolver.
+    // If we try to read it now, it will throw.
+    newFile(bPath, content: r'''
+part of 'a.dart';
+
+class B {
+  B(int _);
+}
+''');
+
+    expect(() async {
+      await resolveFile(aPath);
+    }, throwsStateError);
+
+    // Notify the resolver about b.dart, it is OK now.
+    fileResolver.changeFile(bPath);
+    result = await resolveFile(aPath);
+    assertErrorsInResolvedUnit(result, []);
+  }
+
   test_changePartFile_refreshedFiles() async {
     newFile(aPath, content: r'''
 part 'b.dart';
diff --git a/pkg/analyzer/test/src/dart/resolution/assignment_test.dart b/pkg/analyzer/test/src/dart/resolution/assignment_test.dart
index 4b8a397..629a69a 100644
--- a/pkg/analyzer/test/src/dart/resolution/assignment_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/assignment_test.dart
@@ -8,7 +8,7 @@
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import 'driver_resolution.dart';
+import 'context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -17,7 +17,7 @@
 }
 
 @reflectiveTest
-class AssignmentDriverResolutionTest extends DriverResolutionTest {
+class AssignmentDriverResolutionTest extends PubPackageResolutionTest {
   test_compound_indexExpression() async {
     await resolveTestCode(r'''
 main() {
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 495c89a..a51644b 100644
--- a/pkg/analyzer/test/src/dart/resolution/ast_rewrite_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/ast_rewrite_test.dart
@@ -10,7 +10,7 @@
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import 'driver_resolution.dart';
+import 'context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -19,7 +19,7 @@
 }
 
 @reflectiveTest
-class AstRewriteMethodInvocationTest extends DriverResolutionTest {
+class AstRewriteMethodInvocationTest extends PubPackageResolutionTest {
   test_targetNull_cascade() async {
     await assertNoErrorsInCode(r'''
 class A {
@@ -95,7 +95,7 @@
   }
 
   test_targetPrefixedIdentifier_prefix_class_constructor() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A<T> {
   A.named(T a);
 }
@@ -125,7 +125,7 @@
   }
 
   test_targetPrefixedIdentifier_prefix_class_constructor_typeArguments() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A<T> {
   A.named(int a);
 }
@@ -163,7 +163,7 @@
   }
 
   test_targetPrefixedIdentifier_prefix_getter_method() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 A get foo => A();
 
 class A {
@@ -263,7 +263,7 @@
   }
 
   test_targetSimpleIdentifier_prefix_class() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A<T, U> {
   A(int a);
 }
@@ -292,7 +292,7 @@
   }
 
   test_targetSimpleIdentifier_prefix_extension() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {}
 
 extension E<T> on A {
@@ -321,7 +321,7 @@
   }
 
   test_targetSimpleIdentifier_prefix_function() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 void A<T, U>(int a) {}
 ''');
 
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 456b8a8..fe0faac 100644
--- a/pkg/analyzer/test/src/dart/resolution/await_expression_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/await_expression_test.dart
@@ -4,8 +4,7 @@
 
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import 'driver_resolution.dart';
-import 'with_null_safety_mixin.dart';
+import 'context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +14,7 @@
 }
 
 @reflectiveTest
-class AwaitExpressionResolutionTest extends DriverResolutionTest {
+class AwaitExpressionResolutionTest extends PubPackageResolutionTest {
   test_future() async {
     await assertNoErrorsInCode(r'''
 import 'dart:async';
@@ -42,8 +41,8 @@
 }
 
 @reflectiveTest
-class AwaitExpressionResolutionWithNullSafetyTest extends DriverResolutionTest
-    with WithNullSafetyMixin {
+class AwaitExpressionResolutionWithNullSafetyTest
+    extends PubPackageResolutionTest with WithNullSafetyMixin {
   test_futureOrQ() async {
     await assertNoErrorsInCode(r'''
 import 'dart: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 e9cb047..f974f35 100644
--- a/pkg/analyzer/test/src/dart/resolution/binary_expression_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/binary_expression_test.dart
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/dart/error/syntactic_errors.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import 'driver_resolution.dart';
-import 'with_null_safety_mixin.dart';
+import 'context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,7 +15,7 @@
 }
 
 @reflectiveTest
-class BinaryExpressionResolutionTest extends DriverResolutionTest {
+class BinaryExpressionResolutionTest extends PubPackageResolutionTest {
   test_bangEq() async {
     await assertNoErrorsInCode(r'''
 f(int a, int b) {
@@ -230,8 +229,8 @@
 }
 
 @reflectiveTest
-class BinaryExpressionResolutionWithNullSafetyTest extends DriverResolutionTest
-    with WithNullSafetyMixin {
+class BinaryExpressionResolutionWithNullSafetyTest
+    extends PubPackageResolutionTest with WithNullSafetyMixin {
   test_ifNull_left_nullableContext() async {
     await assertNoErrorsInCode(r'''
 T f<T>(T t) => t;
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 07570ba..d2ae9a5 100644
--- a/pkg/analyzer/test/src/dart/resolution/class_alias_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/class_alias_test.dart
@@ -6,7 +6,7 @@
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import '../../../generated/elements_types_mixin.dart';
-import 'driver_resolution.dart';
+import 'context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +15,7 @@
 }
 
 @reflectiveTest
-class ClassAliasDriverResolutionTest extends DriverResolutionTest
+class ClassAliasDriverResolutionTest extends PubPackageResolutionTest
     with ElementsTypesMixin {
   test_defaultConstructor() async {
     await assertNoErrorsInCode(r'''
diff --git a/pkg/analyzer/test/src/dart/resolution/class_test.dart b/pkg/analyzer/test/src/dart/resolution/class_test.dart
index 3b4f1a2..5f9af9f 100644
--- a/pkg/analyzer/test/src/dart/resolution/class_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/class_test.dart
@@ -8,7 +8,7 @@
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import '../../../generated/elements_types_mixin.dart';
-import 'driver_resolution.dart';
+import 'context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -17,7 +17,7 @@
 }
 
 @reflectiveTest
-class ClassDriverResolutionTest extends DriverResolutionTest
+class ClassDriverResolutionTest extends PubPackageResolutionTest
     with ElementsTypesMixin {
   test_element_allSupertypes() async {
     await assertNoErrorsInCode(r'''
diff --git a/pkg/analyzer/test/src/dart/resolution/comment_test.dart b/pkg/analyzer/test/src/dart/resolution/comment_test.dart
index 1d275e6..0f894bf 100644
--- a/pkg/analyzer/test/src/dart/resolution/comment_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/comment_test.dart
@@ -4,7 +4,7 @@
 
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import 'driver_resolution.dart';
+import 'context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -13,7 +13,7 @@
 }
 
 @reflectiveTest
-class CommentDriverResolutionTest extends DriverResolutionTest {
+class CommentDriverResolutionTest extends PubPackageResolutionTest {
   test_error_unqualifiedReferenceToNonLocalStaticMember() 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 1c07958..11c9ec8 100644
--- a/pkg/analyzer/test/src/dart/resolution/constant_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/constant_test.dart
@@ -11,8 +11,7 @@
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import 'driver_resolution.dart';
-import 'with_null_safety_mixin.dart';
+import 'context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -22,9 +21,9 @@
 }
 
 @reflectiveTest
-class ConstantResolutionTest extends DriverResolutionTest {
+class ConstantResolutionTest extends PubPackageResolutionTest {
   test_constantValue_defaultParameter_noDefaultValue() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   const A({int p});
 }
@@ -106,7 +105,7 @@
   }
 
   test_functionType_element_typeArguments() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 typedef F<T> = T Function(int);
 const a = C<F<double>>();
 
@@ -139,7 +138,7 @@
   }
 
   test_imported_prefixedIdentifier_staticField_class() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 const a = C.f;
 
 class C {
@@ -156,7 +155,7 @@
   }
 
   test_imported_prefixedIdentifier_staticField_extension() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 const a = E.f;
 
 extension E on int {
@@ -173,7 +172,7 @@
   }
 
   test_imported_prefixedIdentifier_staticField_mixin() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 const a = M.f;
 
 class C {}
@@ -192,7 +191,7 @@
   }
 
   test_imported_super_defaultFieldFormalParameter() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 import 'test.dart';
 
 class A {
@@ -213,7 +212,7 @@
 }
 ''');
 
-    result = await resolveFile(convertPath('/test/lib/a.dart'));
+    result = await resolveFile(convertPath('$testPackageLibPath/a.dart'));
     assertErrorsInResolvedUnit(result, []);
 
     var bElement = FindElement(result.unit).field('b') as ConstVariableElement;
@@ -236,7 +235,7 @@
 }
 
 @reflectiveTest
-class ConstantResolutionWithNullSafetyTest extends DriverResolutionTest
+class ConstantResolutionWithNullSafetyTest extends PubPackageResolutionTest
     with WithNullSafetyMixin {
   test_context_eliminateTypeVariables() async {
     await assertNoErrorsInCode(r'''
@@ -260,7 +259,7 @@
   }
 
   test_field_optIn_fromOptOut() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   static const foo = 42;
 }
@@ -278,7 +277,7 @@
   }
 
   test_fromEnvironment_optOut_fromOptIn() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 // @dart = 2.5
 
 const cBool = const bool.fromEnvironment('foo', defaultValue: false);
@@ -304,7 +303,7 @@
   }
 
   test_topLevelVariable_optIn_fromOptOut() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 const foo = 42;
 ''');
 
@@ -321,11 +320,11 @@
   }
 
   test_topLevelVariable_optOut2() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 const a = 42;
 ''');
 
-    newFile('/test/lib/b.dart', content: r'''
+    newFile('$testPackageLibPath/b.dart', content: r'''
 import 'a.dart';
 
 const b = a;
@@ -344,7 +343,7 @@
   }
 
   test_topLevelVariable_optOut3() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 // @dart = 2.7
 const a = int.fromEnvironment('a', defaultValue: 42);
 ''');
diff --git a/pkg/analyzer/test/src/dart/resolution/constructor_test.dart b/pkg/analyzer/test/src/dart/resolution/constructor_test.dart
index efb4867..fac300f 100644
--- a/pkg/analyzer/test/src/dart/resolution/constructor_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/constructor_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/dart/element/type.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import 'driver_resolution.dart';
+import 'context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class ConstructorResolutionTest extends DriverResolutionTest {
+class ConstructorResolutionTest extends PubPackageResolutionTest {
   test_factory_redirect_generic_instantiated() async {
     await assertNoErrorsInCode(r'''
 class A<T> implements B<T> {
diff --git a/pkg/analyzer/test/src/dart/resolution/context_collection_resolution.dart b/pkg/analyzer/test/src/dart/resolution/context_collection_resolution.dart
new file mode 100644
index 0000000..6774589
--- /dev/null
+++ b/pkg/analyzer/test/src/dart/resolution/context_collection_resolution.dart
@@ -0,0 +1,211 @@
+// Copyright (c) 2020, 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 'dart:async';
+
+import 'package:analyzer/dart/analysis/analysis_context.dart';
+import 'package:analyzer/dart/analysis/analysis_context_collection.dart';
+import 'package:analyzer/dart/analysis/results.dart';
+import 'package:analyzer/file_system/file_system.dart';
+import 'package:analyzer/src/dart/analysis/analysis_context_collection.dart';
+import 'package:analyzer/src/dart/analysis/experiments.dart';
+import 'package:analyzer/src/generated/engine.dart' show AnalysisOptionsImpl;
+import 'package:analyzer/src/test_utilities/mock_sdk.dart';
+import 'package:analyzer/src/test_utilities/package_mixin.dart';
+import 'package:analyzer/src/test_utilities/resource_provider_mixin.dart';
+import 'package:linter/src/rules.dart';
+import 'package:meta/meta.dart';
+
+import 'resolution.dart';
+
+class AnalysisOptionsFileConfig {
+  final List<String> experiments;
+  final bool implicitCasts;
+  final List<String> lints;
+  final bool strictInference;
+  final bool strictRawTypes;
+
+  AnalysisOptionsFileConfig({
+    this.experiments,
+    this.implicitCasts,
+    this.lints,
+    this.strictInference,
+    this.strictRawTypes,
+  });
+
+  String toContent() {
+    var buffer = StringBuffer();
+
+    if (experiments != null ||
+        strictRawTypes != null ||
+        strictInference != null ||
+        implicitCasts != null) {
+      buffer.writeln('analyzer:');
+
+      if (experiments != null) {
+        buffer.writeln('  enable-experiment:');
+        for (var experiment in experiments) {
+          buffer.writeln('    - $experiment');
+        }
+      }
+
+      buffer.writeln('  language:');
+      if (strictRawTypes != null) {
+        buffer.writeln('    strict-raw-types: $strictRawTypes');
+      }
+      if (strictInference != null) {
+        buffer.writeln('    strict-inference: $strictInference');
+      }
+
+      if (implicitCasts != null) {
+        buffer.writeln('  strong-mode:');
+        buffer.writeln('    implicit-casts: $implicitCasts');
+      }
+    }
+
+    if (lints != null) {
+      buffer.writeln('linter:');
+      buffer.writeln('  rules:');
+      for (var lint in lints) {
+        buffer.writeln('    - $lint');
+      }
+    }
+
+    return buffer.toString();
+  }
+}
+
+/// [AnalysisContextCollection] based implementation of [ResolutionTest].
+abstract class ContextResolutionTest
+    with ResourceProviderMixin, ResolutionTest {
+  static bool _lintRulesAreRegistered = false;
+
+  AnalysisContextCollection _analysisContextCollection;
+
+  List<MockSdkLibrary> get additionalMockSdkLibraries => [];
+
+  List<String> get collectionIncludedPaths;
+
+  AnalysisContext contextFor(String path) {
+    if (_analysisContextCollection == null) {
+      _createAnalysisContexts();
+    }
+
+    return _analysisContextCollection.contextFor(path);
+  }
+
+  @override
+  File newFile(String path, {String content = ''}) {
+    if (_analysisContextCollection != null && !path.endsWith('.dart')) {
+      throw StateError('Only dart files can be changed after analysis.');
+    }
+
+    return super.newFile(path, content: content);
+  }
+
+  @override
+  Future<ResolvedUnitResult> resolveFile(String path) {
+    var analysisContext = contextFor(path);
+    var session = analysisContext.currentSession;
+    return session.getResolvedUnit(path);
+  }
+
+  @mustCallSuper
+  void setUp() {
+    if (!_lintRulesAreRegistered) {
+      registerLintRules();
+      _lintRulesAreRegistered = true;
+    }
+
+    MockSdk(
+      resourceProvider: resourceProvider,
+      additionalLibraries: additionalMockSdkLibraries,
+    );
+  }
+
+  /// Create all analysis contexts in [collectionIncludedPaths].
+  void _createAnalysisContexts() {
+    _analysisContextCollection = AnalysisContextCollectionImpl(
+      includedPaths: collectionIncludedPaths.map(convertPath).toList(),
+      enableIndex: true,
+      resourceProvider: resourceProvider,
+      sdkPath: convertPath('/sdk'),
+    );
+  }
+}
+
+class PubPackageResolutionTest extends ContextResolutionTest {
+  AnalysisOptionsImpl get analysisOptions {
+    var path = convertPath(testPackageRootPath);
+    return contextFor(path).analysisOptions;
+  }
+
+  @override
+  List<String> get collectionIncludedPaths => [workspaceRootPath];
+
+  @override
+  String get testFilePath => '$testPackageLibPath/test.dart';
+
+  String get testPackageLibPath => '$testPackageRootPath/lib';
+
+  String get testPackageRootPath => '$workspaceRootPath/test';
+
+  String get workspaceRootPath => '/home';
+
+  @override
+  void setUp() {
+    super.setUp();
+    writeTestPackageConfig({});
+  }
+
+  void writeTestPackageAnalysisOptionsFile(
+    AnalysisOptionsFileConfig builder,
+  ) {
+    newFile(
+      '$testPackageRootPath/analysis_options.yaml',
+      content: builder.toContent(),
+    );
+  }
+
+  void writeTestPackageConfig(Map<String, String> nameToRootPath) {
+    nameToRootPath = {'test': testPackageRootPath, ...nameToRootPath};
+
+    var packagesFileBuffer = StringBuffer();
+    for (var entry in nameToRootPath.entries) {
+      var name = entry.key;
+      var rootPath = entry.value;
+      packagesFileBuffer.writeln(name + ':' + toUriStr('$rootPath/lib'));
+    }
+    // TODO(scheglov) Use package_config.json
+    newFile(
+      '$testPackageRootPath/.packages',
+      content: '$packagesFileBuffer',
+    );
+  }
+
+  void writeTestPackageConfigWithMeta() {
+    var path = '/packages/meta';
+    PackagesContent.addMetaPackageFiles(
+      getFolder(path),
+    );
+    writeTestPackageConfig({'meta': path});
+  }
+}
+
+mixin WithNullSafetyMixin on PubPackageResolutionTest {
+  @override
+  bool get typeToStringWithNullability => true;
+
+  @nonVirtual
+  @override
+  void setUp() {
+    super.setUp();
+
+    writeTestPackageAnalysisOptionsFile(
+      AnalysisOptionsFileConfig(
+        experiments: [EnableString.non_nullable],
+      ),
+    );
+  }
+}
diff --git a/pkg/analyzer/test/src/dart/resolution/enum_test.dart b/pkg/analyzer/test/src/dart/resolution/enum_test.dart
index cf358a3..c4dc7ed 100644
--- a/pkg/analyzer/test/src/dart/resolution/enum_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/enum_test.dart
@@ -5,7 +5,7 @@
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import 'driver_resolution.dart';
+import 'context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class EnumDriverResolutionTest extends DriverResolutionTest {
+class EnumDriverResolutionTest extends PubPackageResolutionTest {
   test_inference_listLiteral() async {
     await assertNoErrorsInCode(r'''
 enum E1 {a, b}
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 b4414b36..0dc26d5 100644
--- a/pkg/analyzer/test/src/dart/resolution/extension_method_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/extension_method_test.dart
@@ -9,8 +9,7 @@
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import 'driver_resolution.dart';
-import 'with_null_safety_mixin.dart';
+import 'context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -28,7 +27,7 @@
 /// Tests that show that extension declarations and the members inside them are
 /// resolved correctly.
 @reflectiveTest
-class ExtensionMethodsDeclarationTest extends DriverResolutionTest {
+class ExtensionMethodsDeclarationTest extends PubPackageResolutionTest {
   @override
   List<MockSdkLibrary> get additionalMockSdkLibraries => [
         MockSdkLibrary([
@@ -39,12 +38,14 @@
 
 class A {}
 '''),
+        ]),
+        MockSdkLibrary([
           MockSdkLibraryUnit('dart:test2', 'test2/test2.dart', r'''
 extension E on Object {
   int get a => 1;
 }
 '''),
-        ])
+        ]),
       ];
 
   test_constructor() async {
@@ -136,7 +137,7 @@
   }
 
   test_visibility_hidden() async {
-    newFile('/test/lib/lib.dart', content: '''
+    newFile('$testPackageLibPath/lib.dart', content: '''
 class C {}
 extension E on C {
   int a = 1;
@@ -154,7 +155,7 @@
   }
 
   test_visibility_notShown() async {
-    newFile('/test/lib/lib.dart', content: '''
+    newFile('$testPackageLibPath/lib.dart', content: '''
 class C {}
 extension E on C {
   int a = 1;
@@ -172,7 +173,7 @@
   }
 
   test_visibility_shadowed_byClass() async {
-    newFile('/test/lib/lib.dart', content: '''
+    newFile('$testPackageLibPath/lib.dart', content: '''
 class C {}
 extension E on C {
   int get a => 1;
@@ -193,12 +194,12 @@
   }
 
   test_visibility_shadowed_byImport() async {
-    newFile('/test/lib/lib1.dart', content: '''
+    newFile('$testPackageLibPath/lib1.dart', content: '''
 extension E on Object {
   int get a => 1;
 }
 ''');
-    newFile('/test/lib/lib2.dart', content: '''
+    newFile('$testPackageLibPath/lib2.dart', content: '''
 class E {}
 class A {}
 ''');
@@ -217,7 +218,7 @@
   }
 
   test_visibility_shadowed_byLocal_imported() async {
-    newFile('/test/lib/lib.dart', content: '''
+    newFile('$testPackageLibPath/lib.dart', content: '''
 class C {}
 extension E on C {
   int get a => 1;
@@ -258,7 +259,7 @@
   }
 
   test_visibility_shadowed_byTopLevelVariable() async {
-    newFile('/test/lib/lib.dart', content: '''
+    newFile('$testPackageLibPath/lib.dart', content: '''
 class C {}
 extension E on C {
   int get a => 1;
@@ -279,7 +280,7 @@
   }
 
   test_visibility_shadowed_platformByNonPlatform() async {
-    newFile('/test/lib/lib.dart', content: '''
+    newFile('$testPackageLibPath/lib.dart', content: '''
 extension E on Object {
   int get a => 1;
 }
@@ -296,7 +297,7 @@
   }
 
   test_visibility_withPrefix() async {
-    newFile('/test/lib/lib.dart', content: '''
+    newFile('$testPackageLibPath/lib.dart', content: '''
 class C {}
 extension E on C {
   int get a => 1;
@@ -315,8 +316,8 @@
 /// Tests that show that extension declarations and the members inside them are
 /// resolved correctly.
 @reflectiveTest
-class ExtensionMethodsDeclarationWithNullSafetyTest extends DriverResolutionTest
-    with WithNullSafetyMixin {
+class ExtensionMethodsDeclarationWithNullSafetyTest
+    extends PubPackageResolutionTest with WithNullSafetyMixin {
   test_this_type_interface() async {
     await assertNoErrorsInCode('''
 extension E on int {
@@ -354,7 +355,7 @@
 /// Tests that show that extension declarations support all of the possible
 /// types in the `on` clause.
 @reflectiveTest
-class ExtensionMethodsExtendedTypeTest extends DriverResolutionTest {
+class ExtensionMethodsExtendedTypeTest extends PubPackageResolutionTest {
   test_named_generic() async {
     await assertNoErrorsInCode('''
 class C<T> {}
@@ -481,7 +482,7 @@
 /// Tests that extension members can be correctly resolved when referenced
 /// by code external to the extension declaration.
 @reflectiveTest
-class ExtensionMethodsExternalReferenceTest extends DriverResolutionTest {
+class ExtensionMethodsExternalReferenceTest extends PubPackageResolutionTest {
   /// Corresponds to: extension_member_resolution_t07
   test_dynamicInvocation() async {
     await assertNoErrorsInCode(r'''
@@ -1225,7 +1226,7 @@
   }
 
   test_static_field_importedWithPrefix() async {
-    newFile('/test/lib/lib.dart', content: '''
+    newFile('$testPackageLibPath/lib.dart', content: '''
 class C {}
 
 extension E on C {
@@ -1263,7 +1264,7 @@
   }
 
   test_static_getter_importedWithPrefix() async {
-    newFile('/test/lib/lib.dart', content: '''
+    newFile('$testPackageLibPath/lib.dart', content: '''
 class C {}
 
 extension E on C {
@@ -1301,7 +1302,7 @@
   }
 
   test_static_method_importedWithPrefix() async {
-    newFile('/test/lib/lib.dart', content: '''
+    newFile('$testPackageLibPath/lib.dart', content: '''
 class C {}
 
 extension E on C {
@@ -1339,7 +1340,7 @@
   }
 
   test_static_setter_importedWithPrefix() async {
-    newFile('/test/lib/lib.dart', content: '''
+    newFile('$testPackageLibPath/lib.dart', content: '''
 class C {}
 
 extension E on C {
@@ -1681,7 +1682,7 @@
 /// Tests that extension members can be correctly resolved when referenced
 /// by code internal to (within) the extension declaration.
 @reflectiveTest
-class ExtensionMethodsInternalReferenceTest extends DriverResolutionTest {
+class ExtensionMethodsInternalReferenceTest extends PubPackageResolutionTest {
   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 32287ad..9bf497b 100644
--- a/pkg/analyzer/test/src/dart/resolution/extension_override_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/extension_override_test.dart
@@ -10,8 +10,7 @@
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import 'driver_resolution.dart';
-import 'with_null_safety_mixin.dart';
+import 'context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -21,7 +20,7 @@
 }
 
 @reflectiveTest
-class ExtensionOverrideTest extends DriverResolutionTest {
+class ExtensionOverrideTest extends PubPackageResolutionTest {
   ExtensionElement extension;
   ExtensionOverride extensionOverride;
 
@@ -72,7 +71,7 @@
   }
 
   test_call_prefix_noTypeArguments() async {
-    newFile('/test/lib/lib.dart', content: '''
+    newFile('$testPackageLibPath/lib.dart', content: '''
 class A {}
 extension E on A {
   int call(String s) => 0;
@@ -94,7 +93,7 @@
 
   test_call_prefix_typeArguments() async {
     // The test is failing because we're not yet doing type inference.
-    newFile('/test/lib/lib.dart', content: '''
+    newFile('$testPackageLibPath/lib.dart', content: '''
 class A {}
 extension E<T> on A {
   int call(T s) => 0;
@@ -170,7 +169,7 @@
   }
 
   test_getter_prefix_noTypeArguments() async {
-    newFile('/test/lib/lib.dart', content: '''
+    newFile('$testPackageLibPath/lib.dart', content: '''
 class A {}
 extension E on A {
   int get g => 0;
@@ -191,7 +190,7 @@
   }
 
   test_getter_prefix_typeArguments() async {
-    newFile('/test/lib/lib.dart', content: '''
+    newFile('$testPackageLibPath/lib.dart', content: '''
 class A {}
 extension E<T> on A {
   int get g => 0;
@@ -242,7 +241,7 @@
   }
 
   test_method_prefix_noTypeArguments() async {
-    newFile('/test/lib/lib.dart', content: '''
+    newFile('$testPackageLibPath/lib.dart', content: '''
 class A {}
 extension E on A {
   void m() {}
@@ -263,7 +262,7 @@
   }
 
   test_method_prefix_typeArguments() async {
-    newFile('/test/lib/lib.dart', content: '''
+    newFile('$testPackageLibPath/lib.dart', content: '''
 class A {}
 extension E<T> on A {
   void m() {}
@@ -331,7 +330,7 @@
   }
 
   test_operator_prefix_noTypeArguments() async {
-    newFile('/test/lib/lib.dart', content: '''
+    newFile('$testPackageLibPath/lib.dart', content: '''
 class A {}
 extension E on A {
   void operator +(int offset) {}
@@ -352,7 +351,7 @@
   }
 
   test_operator_prefix_typeArguments() async {
-    newFile('/test/lib/lib.dart', content: '''
+    newFile('$testPackageLibPath/lib.dart', content: '''
 class A {}
 extension E<T> on A {
   void operator +(int offset) {}
@@ -403,7 +402,7 @@
   }
 
   test_setter_prefix_noTypeArguments() async {
-    newFile('/test/lib/lib.dart', content: '''
+    newFile('$testPackageLibPath/lib.dart', content: '''
 class A {}
 extension E on A {
   set s(int x) {}
@@ -424,7 +423,7 @@
   }
 
   test_setter_prefix_typeArguments() async {
-    newFile('/test/lib/lib.dart', content: '''
+    newFile('$testPackageLibPath/lib.dart', content: '''
 class A {}
 extension E<T> on A {
   set s(int x) {}
@@ -477,7 +476,7 @@
   }
 
   test_setterAndGetter_prefix_noTypeArguments() async {
-    newFile('/test/lib/lib.dart', content: '''
+    newFile('$testPackageLibPath/lib.dart', content: '''
 class A {}
 extension E on A {
   int get s => 0;
@@ -499,7 +498,7 @@
   }
 
   test_setterAndGetter_prefix_typeArguments() async {
-    newFile('/test/lib/lib.dart', content: '''
+    newFile('$testPackageLibPath/lib.dart', content: '''
 class A {}
 extension E<T> on A {
   int get s => 0;
diff --git a/pkg/analyzer/test/src/dart/resolution/field_test.dart b/pkg/analyzer/test/src/dart/resolution/field_test.dart
index 715c86b..90d814b 100644
--- a/pkg/analyzer/test/src/dart/resolution/field_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/field_test.dart
@@ -4,8 +4,7 @@
 
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import 'driver_resolution.dart';
-import 'with_null_safety_mixin.dart';
+import 'context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +14,7 @@
 }
 
 @reflectiveTest
-class FieldTest extends DriverResolutionTest {
+class FieldTest extends PubPackageResolutionTest {
   test_type_inferred_int() async {
     await resolveTestCode('''
 class A {
@@ -60,9 +59,10 @@
 }
 
 @reflectiveTest
-class FieldWithNullSafetyTest extends FieldTest with WithNullSafetyMixin {
+class FieldWithNullSafetyTest extends PubPackageResolutionTest
+    with WithNullSafetyMixin {
   test_type_inferred_nonNullify() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 // @dart = 2.7
 var a = 0;
 ''');
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 bccb3ad..1483cdc 100644
--- a/pkg/analyzer/test/src/dart/resolution/for_element_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/for_element_test.dart
@@ -4,8 +4,7 @@
 
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import 'driver_resolution.dart';
-import 'with_null_safety_mixin.dart';
+import 'context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,7 +15,7 @@
 }
 
 @reflectiveTest
-class ForEachElementTest extends DriverResolutionTest {
+class ForEachElementTest extends PubPackageResolutionTest {
   test_withDeclaration_scope() async {
     await assertNoErrorsInCode(r'''
 main() {
@@ -53,7 +52,7 @@
 class ForEachElementWithNullSafetyTest extends ForEachElementTest
     with WithNullSafetyMixin {
   test_optIn_fromOptOut() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A implements Iterable<int> {
   Iterator<int> iterator => throw 0;
 }
@@ -73,7 +72,7 @@
 }
 
 @reflectiveTest
-class ForLoopElementTest extends DriverResolutionTest {
+class ForLoopElementTest extends PubPackageResolutionTest {
   test_condition_rewrite() async {
     await assertNoErrorsInCode(r'''
 main(bool Function() b) {
diff --git a/pkg/analyzer/test/src/dart/resolution/for_statement_test.dart b/pkg/analyzer/test/src/dart/resolution/for_statement_test.dart
index 74e9323..bce6cd2 100644
--- a/pkg/analyzer/test/src/dart/resolution/for_statement_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/for_statement_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/dart/error/syntactic_errors.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import 'driver_resolution.dart';
+import 'context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,7 +16,7 @@
 
 /// TODO(scheglov) Move other for-in tests here.
 @reflectiveTest
-class ForEachStatementResolutionTest extends DriverResolutionTest {
+class ForEachStatementResolutionTest extends PubPackageResolutionTest {
   test_iterable_missing() async {
     await assertErrorsInCode(r'''
 void f() {
@@ -79,7 +79,7 @@
 }
 
 @reflectiveTest
-class ForLoopStatementResolutionTest extends DriverResolutionTest {
+class ForLoopStatementResolutionTest extends PubPackageResolutionTest {
   test_condition_rewrite() async {
     await assertNoErrorsInCode(r'''
 main(bool Function() b) {
diff --git a/pkg/analyzer/test/src/dart/resolution/function_declaration_test.dart b/pkg/analyzer/test/src/dart/resolution/function_declaration_test.dart
index 29e10c6..549f57a 100644
--- a/pkg/analyzer/test/src/dart/resolution/function_declaration_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/function_declaration_test.dart
@@ -4,7 +4,7 @@
 
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import 'driver_resolution.dart';
+import 'context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -13,7 +13,7 @@
 }
 
 @reflectiveTest
-class FunctionDeclarationResolutionTest extends DriverResolutionTest {
+class FunctionDeclarationResolutionTest extends PubPackageResolutionTest {
   test_formalParameterScope_defaultValue() async {
     await assertNoErrorsInCode('''
 const foo = 0;
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 114f145..6d80f3d 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
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import 'driver_resolution.dart';
-import 'with_null_safety_mixin.dart';
+import 'context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,7 +15,7 @@
 }
 
 @reflectiveTest
-class FunctionExpressionInvocationTest extends DriverResolutionTest {
+class FunctionExpressionInvocationTest extends PubPackageResolutionTest {
   test_dynamic_withoutTypeArguments() async {
     await assertNoErrorsInCode(r'''
 main() {
@@ -52,7 +51,7 @@
 
 @reflectiveTest
 class FunctionExpressionInvocationWithNullSafetyTest
-    extends DriverResolutionTest with WithNullSafetyMixin {
+    extends PubPackageResolutionTest with WithNullSafetyMixin {
   test_call_infer_fromArguments() async {
     await assertNoErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/dart/resolution/function_type_alias_test.dart b/pkg/analyzer/test/src/dart/resolution/function_type_alias_test.dart
index 7aef66f..b612327 100644
--- a/pkg/analyzer/test/src/dart/resolution/function_type_alias_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/function_type_alias_test.dart
@@ -6,7 +6,7 @@
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import 'driver_resolution.dart';
+import 'context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +15,7 @@
 }
 
 @reflectiveTest
-class FunctionTypeAliasResolutionTest extends DriverResolutionTest {
+class FunctionTypeAliasResolutionTest extends PubPackageResolutionTest {
   test_type_element() async {
     await resolveTestCode(r'''
 G<int> g;
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 e1ff7a0..3332d08 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
@@ -6,7 +6,7 @@
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import 'driver_resolution.dart';
+import 'context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +15,7 @@
 }
 
 @reflectiveTest
-class GenericFunctionTypeResolutionTest extends DriverResolutionTest {
+class GenericFunctionTypeResolutionTest extends PubPackageResolutionTest {
   /// Test that when [GenericFunctionType] is used in a constant variable
   /// initializer, analysis does not throw an exception; and that the next
   /// [GenericFunctionType] is also handled correctly.
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 35e383a..8c2193c 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
@@ -8,7 +8,7 @@
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import 'driver_resolution.dart';
+import 'context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -17,7 +17,7 @@
 }
 
 @reflectiveTest
-class GenericTypeAliasDriverResolutionTest extends DriverResolutionTest {
+class GenericTypeAliasDriverResolutionTest extends PubPackageResolutionTest {
   test_genericFunctionTypeCannotBeTypeArgument_def_class() async {
     await assertErrorsInCode(r'''
 class C<T> {}
@@ -127,7 +127,7 @@
   }
 
   test_missingGenericFunction_imported_withPrefix() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 typedef F<T> = ;
 ''');
     await assertErrorsInCode(r'''
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 027eb34..785f95a 100644
--- a/pkg/analyzer/test/src/dart/resolution/if_element_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/if_element_test.dart
@@ -4,8 +4,7 @@
 
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import 'driver_resolution.dart';
-import 'with_null_safety_mixin.dart';
+import 'context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +14,7 @@
 }
 
 @reflectiveTest
-class IfElementTest extends DriverResolutionTest {
+class IfElementTest extends PubPackageResolutionTest {
   test_condition_rewrite() async {
     await assertNoErrorsInCode(r'''
 main(bool Function() b) {
diff --git a/pkg/analyzer/test/src/dart/resolution/if_statement_test.dart b/pkg/analyzer/test/src/dart/resolution/if_statement_test.dart
index d80e0e2..7b647cb 100644
--- a/pkg/analyzer/test/src/dart/resolution/if_statement_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/if_statement_test.dart
@@ -4,7 +4,7 @@
 
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import 'driver_resolution.dart';
+import 'context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -13,7 +13,7 @@
 }
 
 @reflectiveTest
-class IfStatementResolutionTest extends DriverResolutionTest {
+class IfStatementResolutionTest extends PubPackageResolutionTest {
   test_condition_rewrite() async {
     await assertNoErrorsInCode(r'''
 main(bool Function() b) {
diff --git a/pkg/analyzer/test/src/dart/resolution/import_prefix_test.dart b/pkg/analyzer/test/src/dart/resolution/import_prefix_test.dart
index f71c1ba..66c665f 100644
--- a/pkg/analyzer/test/src/dart/resolution/import_prefix_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/import_prefix_test.dart
@@ -6,7 +6,7 @@
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import 'driver_resolution.dart';
+import 'context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +15,7 @@
 }
 
 @reflectiveTest
-class ImportPrefixDriverResolutionTest extends DriverResolutionTest {
+class ImportPrefixDriverResolutionTest extends PubPackageResolutionTest {
   test_asExpression_expressionStatement() async {
     await assertErrorsInCode(r'''
 import 'dart:async' as p;
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 7f0da6c..4cf9ec2 100644
--- a/pkg/analyzer/test/src/dart/resolution/index_expression_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/index_expression_test.dart
@@ -5,8 +5,7 @@
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import 'driver_resolution.dart';
-import 'with_null_safety_mixin.dart';
+import 'context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,7 +15,7 @@
 }
 
 @reflectiveTest
-class IndexExpressionTest extends DriverResolutionTest {
+class IndexExpressionTest extends PubPackageResolutionTest {
   test_read() 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 d7de1d4..d9eda13 100644
--- a/pkg/analyzer/test/src/dart/resolution/instance_creation_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/instance_creation_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import 'driver_resolution.dart';
+import 'context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class InstanceCreationDriverResolutionTest extends DriverResolutionTest {
+class InstanceCreationDriverResolutionTest extends PubPackageResolutionTest {
   test_error_newWithInvalidTypeParameters_implicitNew_inference_top() async {
     await assertErrorsInCode(r'''
 final foo = Map<int>();
@@ -58,7 +58,7 @@
   }
 
   test_error_wrongNumberOfTypeArgumentsConstructor_explicitNew_prefix() async {
-    newFile('/test/lib/a.dart', content: '''
+    newFile('$testPackageLibPath/a.dart', content: '''
 class Foo<X> {
   Foo.bar();
 }
@@ -117,7 +117,7 @@
   }
 
   test_error_wrongNumberOfTypeArgumentsConstructor_implicitNew_prefix() async {
-    newFile('/test/lib/a.dart', content: '''
+    newFile('$testPackageLibPath/a.dart', content: '''
 class Foo<X> {
   Foo.bar();
 }
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 f25e552..a4d9df5 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
@@ -6,8 +6,7 @@
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import 'driver_resolution.dart';
-import 'with_null_safety_mixin.dart';
+import 'context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -17,7 +16,7 @@
 }
 
 @reflectiveTest
-class InstanceMemberInferenceClassTest extends DriverResolutionTest {
+class InstanceMemberInferenceClassTest extends PubPackageResolutionTest {
   test_field_covariant_fromField() async {
     await resolveTestCode('''
 class A {
@@ -917,7 +916,7 @@
 class InstanceMemberInferenceClassWithNullSafetyTest
     extends InstanceMemberInferenceClassTest with WithNullSafetyMixin {
   test_field_multiple_gettersSetters_final_nonNullify() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 // @dart = 2.7
 abstract class A {
   int get foo;
@@ -939,7 +938,7 @@
   }
 
   test_field_multiple_gettersSetters_notFinal_nonNullify() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 // @dart = 2.7
 abstract class A {
   int get foo;
@@ -961,7 +960,7 @@
   }
 
   test_field_single_getter_nonNullify() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 // @dart = 2.7
 abstract class A {
   int get foo;
@@ -979,7 +978,7 @@
   }
 
   test_field_single_setter_nonNullify() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 // @dart = 2.7
 abstract class A {
   set foo(int _);
@@ -997,7 +996,7 @@
   }
 
   test_getter_single_getter_nonNullify() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 // @dart = 2.7
 abstract class A {
   int get foo;
@@ -1015,7 +1014,7 @@
   }
 
   test_getter_single_setter_nonNullify() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 // @dart = 2.7
 abstract class A {
   set foo(int _);
@@ -1051,7 +1050,7 @@
   }
 
   test_method_parameter_required_single_nonNullify() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 // @dart = 2.7
 class A {
   void foo(int p) {}
@@ -1087,7 +1086,7 @@
   }
 
   test_method_return_nonNullify() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 // @dart = 2.7
 abstract class A {
   int foo();
@@ -1105,7 +1104,7 @@
   }
 
   test_setter_single_getter_nonNullify() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 // @dart = 2.7
 abstract class A {
   int get foo;
@@ -1123,7 +1122,7 @@
   }
 
   test_setter_single_setter_nonNullify() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 // @dart = 2.7
 abstract class A {
   set 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 15d4bf4..53579d1 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
@@ -4,8 +4,7 @@
 
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import 'driver_resolution.dart';
-import 'with_null_safety_mixin.dart';
+import 'context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +14,7 @@
 }
 
 @reflectiveTest
-class InstanceMemberInferenceClassTest extends DriverResolutionTest {
+class InstanceMemberInferenceClassTest extends PubPackageResolutionTest {
   test_invalid_inheritanceCycle() async {
     await resolveTestCode('''
 class A extends C {}
diff --git a/pkg/analyzer/test/src/dart/resolution/interpolation_string_test.dart b/pkg/analyzer/test/src/dart/resolution/interpolation_string_test.dart
index 9cd883a..4d02f28 100644
--- a/pkg/analyzer/test/src/dart/resolution/interpolation_string_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/interpolation_string_test.dart
@@ -7,7 +7,7 @@
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import 'driver_resolution.dart';
+import 'context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,7 +16,7 @@
 }
 
 @reflectiveTest
-class InterpolationStringTest extends DriverResolutionTest {
+class InterpolationStringTest extends PubPackageResolutionTest {
   void test_contents() async {
     var code = r'''
 var bar;
diff --git a/pkg/analyzer/test/src/dart/resolution/local_function_test.dart b/pkg/analyzer/test/src/dart/resolution/local_function_test.dart
index 9d660a8..d1de9b1 100644
--- a/pkg/analyzer/test/src/dart/resolution/local_function_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/local_function_test.dart
@@ -6,7 +6,7 @@
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import 'driver_resolution.dart';
+import 'context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +15,7 @@
 }
 
 @reflectiveTest
-class LocalFunctionResolutionTest extends DriverResolutionTest {
+class LocalFunctionResolutionTest extends PubPackageResolutionTest {
   test_element_block() async {
     await assertNoErrorsInCode(r'''
 f() {
diff --git a/pkg/analyzer/test/src/dart/resolution/local_variable_test.dart b/pkg/analyzer/test/src/dart/resolution/local_variable_test.dart
index 143af81..3545088 100644
--- a/pkg/analyzer/test/src/dart/resolution/local_variable_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/local_variable_test.dart
@@ -8,8 +8,7 @@
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import 'driver_resolution.dart';
-import 'with_null_safety_mixin.dart';
+import 'context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -19,7 +18,7 @@
 }
 
 @reflectiveTest
-class LocalVariableResolutionTest extends DriverResolutionTest {
+class LocalVariableResolutionTest extends PubPackageResolutionTest {
   test_demoteTypeParameterType() async {
     await assertNoErrorsInCode('''
 void f<T>(T a, T b) {
@@ -128,7 +127,7 @@
   }
 
   test_nonNullifyType() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 // @dart = 2.7
 var a = 0;
 ''');
diff --git a/pkg/analyzer/test/src/dart/resolution/metadata_test.dart b/pkg/analyzer/test/src/dart/resolution/metadata_test.dart
index 578f9b3..ab2e0b4 100644
--- a/pkg/analyzer/test/src/dart/resolution/metadata_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/metadata_test.dart
@@ -11,8 +11,7 @@
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import '../../summary/resolved_ast_printer.dart';
-import 'driver_resolution.dart';
-import 'with_null_safety_mixin.dart';
+import 'context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -22,7 +21,7 @@
 }
 
 @reflectiveTest
-class MetadataResolutionTest extends DriverResolutionTest {
+class MetadataResolutionTest extends PubPackageResolutionTest {
   test_onFieldFormal() async {
     await assertNoErrorsInCode(r'''
 class A {
@@ -62,14 +61,14 @@
   }
 
   test_otherLibrary_constructor_named() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   final int f;
   const A.named(this.f);
 }
 ''');
 
-    newFile('/test/lib/b.dart', content: r'''
+    newFile('$testPackageLibPath/b.dart', content: r'''
 import 'a.dart';
 
 @A.named(42)
@@ -90,14 +89,14 @@
   }
 
   test_otherLibrary_constructor_unnamed() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   final int f;
   const A(this.f);
 }
 ''');
 
-    newFile('/test/lib/b.dart', content: r'''
+    newFile('$testPackageLibPath/b.dart', content: r'''
 import 'a.dart';
 
 @A(42)
@@ -118,7 +117,7 @@
   }
 
   test_otherLibrary_implicitConst() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   final int f;
   const A(this.f);
@@ -182,14 +181,14 @@
 }
 
 @reflectiveTest
-class MetadataResolutionWithNullSafetyTest extends DriverResolutionTest
+class MetadataResolutionWithNullSafetyTest extends PubPackageResolutionTest
     with WithNullSafetyMixin {
   ImportFindElement get import_a {
     return findElement.importFind('package:test/a.dart');
   }
 
   test_optIn_fromOptOut_class() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   const A(int a);
 }
@@ -216,7 +215,7 @@
   }
 
   test_optIn_fromOptOut_class_constructor() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   final int a;
   const A.named(this.a);
@@ -250,7 +249,7 @@
   }
 
   test_optIn_fromOptOut_class_constructor_withDefault() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   final int a;
   const A.named({this.a = 42});
@@ -284,7 +283,7 @@
   }
 
   test_optIn_fromOptOut_class_getter() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   static const foo = 42;
 }
@@ -313,7 +312,7 @@
   }
 
   test_optIn_fromOptOut_getter() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 const foo = 42;
 ''');
 
@@ -335,7 +334,7 @@
   }
 
   test_optIn_fromOptOut_prefix_class() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   const A(int a);
 }
@@ -362,7 +361,7 @@
   }
 
   test_optIn_fromOptOut_prefix_class_constructor() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   const A.named(int a);
 }
@@ -389,7 +388,7 @@
   }
 
   test_optIn_fromOptOut_prefix_class_getter() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   static const foo = 0;
 }
@@ -416,7 +415,7 @@
   }
 
   test_optIn_fromOptOut_prefix_getter() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 const foo = 0;
 ''');
 
diff --git a/pkg/analyzer/test/src/dart/resolution/method_declaration_test.dart b/pkg/analyzer/test/src/dart/resolution/method_declaration_test.dart
index 96e12be..9f18387 100644
--- a/pkg/analyzer/test/src/dart/resolution/method_declaration_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/method_declaration_test.dart
@@ -4,7 +4,7 @@
 
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import 'driver_resolution.dart';
+import 'context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -13,7 +13,7 @@
 }
 
 @reflectiveTest
-class MethodDeclarationResolutionTest extends DriverResolutionTest {
+class MethodDeclarationResolutionTest extends PubPackageResolutionTest {
   test_formalParameterScope_defaultValue() async {
     await assertNoErrorsInCode('''
 class A {
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 b5d5f19..8925735 100644
--- a/pkg/analyzer/test/src/dart/resolution/method_invocation_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/method_invocation_test.dart
@@ -8,8 +8,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import 'driver_resolution.dart';
-import 'with_null_safety_mixin.dart';
+import 'context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -19,12 +18,12 @@
 }
 
 @reflectiveTest
-class MethodInvocationResolutionTest extends DriverResolutionTest {
+class MethodInvocationResolutionTest extends PubPackageResolutionTest {
   test_error_ambiguousImport_topFunction() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 void foo(int _) {}
 ''');
-    newFile('/test/lib/b.dart', content: r'''
+    newFile('$testPackageLibPath/b.dart', content: r'''
 void foo(int _) {}
 ''');
 
@@ -45,10 +44,10 @@
   }
 
   test_error_ambiguousImport_topFunction_prefixed() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 void foo(int _) {}
 ''');
-    newFile('/test/lib/b.dart', content: r'''
+    newFile('$testPackageLibPath/b.dart', content: r'''
 void foo(int _) {}
 ''');
 
@@ -331,7 +330,7 @@
   }
 
   test_error_prefixIdentifierNotFollowedByDot() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 void foo() {}
 ''');
 
@@ -562,7 +561,7 @@
   }
 
   test_error_undefinedMethod_private() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   void _foo(int _) {}
 }
@@ -987,7 +986,7 @@
   }
 
   test_hasReceiver_importPrefix_topFunction() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 T foo<T extends num>(T a, T b) => a;
 ''');
 
@@ -1012,7 +1011,7 @@
   }
 
   test_hasReceiver_importPrefix_topGetter() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 T Function<T>(T a, T b) get foo => null;
 ''');
 
@@ -1181,7 +1180,7 @@
   }
 
   test_hasReceiver_prefixed_class_staticGetter() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class C {
   static double Function(int) get foo => null;
 }
@@ -1213,7 +1212,7 @@
   }
 
   test_hasReceiver_prefixed_class_staticMethod() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class C {
   static void foo(int _) => null;
 }
@@ -1717,10 +1716,10 @@
 }
 
 @reflectiveTest
-class MethodInvocationResolutionWithNullSafetyTest extends DriverResolutionTest
-    with WithNullSafetyMixin {
+class MethodInvocationResolutionWithNullSafetyTest
+    extends PubPackageResolutionTest with WithNullSafetyMixin {
   test_hasReceiver_deferredImportPrefix_loadLibrary_optIn_fromOptOut() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {}
 ''');
 
diff --git a/pkg/analyzer/test/src/dart/resolution/mixin_test.dart b/pkg/analyzer/test/src/dart/resolution/mixin_test.dart
index 5fcc5b5..75bd0f7 100644
--- a/pkg/analyzer/test/src/dart/resolution/mixin_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/mixin_test.dart
@@ -9,7 +9,7 @@
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import '../../../generated/elements_types_mixin.dart';
-import 'driver_resolution.dart';
+import 'context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -18,7 +18,7 @@
 }
 
 @reflectiveTest
-class MixinDriverResolutionTest extends DriverResolutionTest
+class MixinDriverResolutionTest extends PubPackageResolutionTest
     with ElementsTypesMixin {
   test_accessor_getter() async {
     await assertNoErrorsInCode(r'''
diff --git a/pkg/analyzer/test/src/dart/resolution/namespace_test.dart b/pkg/analyzer/test/src/dart/resolution/namespace_test.dart
index 96694a8..30c9944 100644
--- a/pkg/analyzer/test/src/dart/resolution/namespace_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/namespace_test.dart
@@ -4,8 +4,7 @@
 
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import 'driver_resolution.dart';
-import 'with_null_safety_mixin.dart';
+import 'context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,9 +14,9 @@
 }
 
 @reflectiveTest
-class ImportResolutionTest extends DriverResolutionTest {
+class ImportResolutionTest extends PubPackageResolutionTest {
   test_overrideCoreType_Never() async {
-    newFile('/test/lib/declares_never.dart', content: '''
+    newFile('$testPackageLibPath/declares_never.dart', content: '''
 class Never {}
 ''');
     await assertNoErrorsInCode(r'''
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 b8f394f..08048f9 100644
--- a/pkg/analyzer/test/src/dart/resolution/non_nullable_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/non_nullable_test.dart
@@ -8,8 +8,7 @@
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import 'driver_resolution.dart';
-import 'with_null_safety_mixin.dart';
+import 'context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -19,7 +18,8 @@
 }
 
 @reflectiveTest
-class NonNullableTest extends DriverResolutionTest with WithNullSafetyMixin {
+class NonNullableTest extends PubPackageResolutionTest
+    with WithNullSafetyMixin {
   test_class_hierarchy() async {
     await assertNoErrorsInCode('''
 class A {}
@@ -60,7 +60,7 @@
   }
 
   test_library_typeProvider_typeSystem() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {}
 ''');
     await resolveTestCode(r'''
@@ -435,7 +435,7 @@
 }
 
 @reflectiveTest
-class NullableTest extends DriverResolutionTest {
+class NullableTest extends PubPackageResolutionTest {
   @override
   bool get typeToStringWithNullability => true;
 
diff --git a/pkg/analyzer/test/src/dart/resolution/optional_const_test.dart b/pkg/analyzer/test/src/dart/resolution/optional_const_test.dart
index cdb8590..cb554a1b 100644
--- a/pkg/analyzer/test/src/dart/resolution/optional_const_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/optional_const_test.dart
@@ -7,7 +7,7 @@
 import 'package:analyzer/src/dart/element/element.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import 'driver_resolution.dart';
+import 'context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,7 +16,7 @@
 }
 
 @reflectiveTest
-class OptionalConstDriverResolutionTest extends DriverResolutionTest {
+class OptionalConstDriverResolutionTest extends PubPackageResolutionTest {
   Map<String, LibraryElement> libraries = {};
 
   LibraryElement get libraryA => libraries['package:test/a.dart'];
@@ -112,7 +112,7 @@
   }
 
   test_prefixed_unnamed_generic() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class C<T> {
   const C();
 }
@@ -167,7 +167,7 @@
 
   Future<InstanceCreationExpression> _resolveImplicitConst(String expr,
       {String prefix}) async {
-    newFile('/test/lib/a.dart', content: '''
+    newFile('$testPackageLibPath/a.dart', content: '''
 class A {
   const A();
   const A.named();
@@ -179,12 +179,12 @@
 ''');
 
     if (prefix != null) {
-      newFile('/test/lib/b.dart', content: '''
+      newFile('$testPackageLibPath/b.dart', content: '''
 import 'a.dart' as $prefix;
 const a = $expr;
 ''');
     } else {
-      newFile('/test/lib/b.dart', content: '''
+      newFile('$testPackageLibPath/b.dart', content: '''
 import 'a.dart';
 const a = $expr;
 ''');
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 0dd01f6..74fe485 100644
--- a/pkg/analyzer/test/src/dart/resolution/postfix_expression_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/postfix_expression_test.dart
@@ -6,8 +6,7 @@
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import 'driver_resolution.dart';
-import 'with_null_safety_mixin.dart';
+import 'context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -17,7 +16,7 @@
 }
 
 @reflectiveTest
-class PostfixExpressionResolutionTest extends DriverResolutionTest {
+class PostfixExpressionResolutionTest extends PubPackageResolutionTest {
   test_dec_localVariable() async {
     await assertNoErrorsInCode(r'''
 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 73b9d2b..fbf0c0c 100644
--- a/pkg/analyzer/test/src/dart/resolution/prefix_element_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/prefix_element_test.dart
@@ -7,7 +7,7 @@
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import 'driver_resolution.dart';
+import 'context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,9 +16,9 @@
 }
 
 @reflectiveTest
-class PrefixElementTest extends DriverResolutionTest {
+class PrefixElementTest extends PubPackageResolutionTest {
   test_scope_lookup() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 var foo = 0;
 ''');
 
@@ -44,7 +44,7 @@
   }
 
   test_scope_lookup2() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 var foo = 0;
 ''');
 
@@ -68,11 +68,11 @@
   }
 
   test_scope_lookup2_ambiguous_notSdk_both() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 var foo = 0;
 ''');
 
-    newFile('/test/lib/b.dart', content: r'''
+    newFile('$testPackageLibPath/b.dart', content: r'''
 var foo = 1.2;
 ''');
 
@@ -107,7 +107,7 @@
   }
 
   test_scope_lookup2_ambiguous_notSdk_first() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 var pi = 4;
 ''');
 
@@ -129,7 +129,7 @@
   }
 
   test_scope_lookup2_ambiguous_notSdk_second() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 var pi = 4;
 ''');
 
@@ -151,11 +151,11 @@
   }
 
   test_scope_lookup2_ambiguous_same() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 var foo = 0;
 ''');
 
-    newFile('/test/lib/b.dart', content: r'''
+    newFile('$testPackageLibPath/b.dart', content: r'''
 export 'a.dart';
 ''');
 
@@ -182,11 +182,11 @@
   }
 
   test_scope_lookup2_differentPrefix() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 var foo = 0;
 ''');
 
-    newFile('/test/lib/b.dart', content: r'''
+    newFile('$testPackageLibPath/b.dart', content: r'''
 var bar = 0;
 ''');
 
@@ -278,11 +278,11 @@
   }
 
   test_scope_lookup_ambiguous_notSdk_both() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 var foo = 0;
 ''');
 
-    newFile('/test/lib/b.dart', content: r'''
+    newFile('$testPackageLibPath/b.dart', content: r'''
 var foo = 1.2;
 ''');
 
@@ -319,7 +319,7 @@
   }
 
   test_scope_lookup_ambiguous_notSdk_first() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 var pi = 4;
 ''');
 
@@ -342,7 +342,7 @@
   }
 
   test_scope_lookup_ambiguous_notSdk_second() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 var pi = 4;
 ''');
 
@@ -365,11 +365,11 @@
   }
 
   test_scope_lookup_ambiguous_same() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 var foo = 0;
 ''');
 
-    newFile('/test/lib/b.dart', content: r'''
+    newFile('$testPackageLibPath/b.dart', content: r'''
 export 'a.dart';
 ''');
 
@@ -398,11 +398,11 @@
   }
 
   test_scope_lookup_differentPrefix() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 var foo = 0;
 ''');
 
-    newFile('/test/lib/b.dart', content: r'''
+    newFile('$testPackageLibPath/b.dart', content: r'''
 var bar = 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 d32b3cb..2cb17f3 100644
--- a/pkg/analyzer/test/src/dart/resolution/prefix_expression_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/prefix_expression_test.dart
@@ -6,8 +6,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import 'driver_resolution.dart';
-import 'with_null_safety_mixin.dart';
+import 'context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -17,7 +16,7 @@
 }
 
 @reflectiveTest
-class PrefixExpressionResolutionTest extends DriverResolutionTest {
+class PrefixExpressionResolutionTest extends PubPackageResolutionTest {
   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 9222211..382928b 100644
--- a/pkg/analyzer/test/src/dart/resolution/prefixed_identifier_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/prefixed_identifier_test.dart
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import 'driver_resolution.dart';
-import 'with_null_safety_mixin.dart';
+import 'context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,7 +15,7 @@
 }
 
 @reflectiveTest
-class PrefixedIdentifierResolutionTest extends DriverResolutionTest {
+class PrefixedIdentifierResolutionTest extends PubPackageResolutionTest {
   test_dynamic_explicitCore_withPrefix() async {
     await assertNoErrorsInCode(r'''
 import 'dart:core' as mycore;
@@ -34,7 +33,7 @@
   }
 
   test_implicitCall_tearOff() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   int call() => 0;
 }
@@ -62,7 +61,7 @@
 class PrefixedIdentifierResolutionWithNullSafetyTest
     extends PrefixedIdentifierResolutionTest with WithNullSafetyMixin {
   test_deferredImportPrefix_loadLibrary_optIn_fromOptOut() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {}
 ''');
 
@@ -88,7 +87,7 @@
   }
 
   test_implicitCall_tearOff_nullable() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   int call() => 0;
 }
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 b57b14e..1bf149e 100644
--- a/pkg/analyzer/test/src/dart/resolution/property_access_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/property_access_test.dart
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import 'driver_resolution.dart';
-import 'with_null_safety_mixin.dart';
+import 'context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,7 +15,7 @@
 }
 
 @reflectiveTest
-class PropertyAccessResolutionTest extends DriverResolutionTest {
+class PropertyAccessResolutionTest extends PubPackageResolutionTest {
   test_tearOff_method() async {
     await assertNoErrorsInCode('''
 class A {
diff --git a/pkg/analyzer/test/src/dart/resolution/resolution.dart b/pkg/analyzer/test/src/dart/resolution/resolution.dart
index f67b736..a592c91 100644
--- a/pkg/analyzer/test/src/dart/resolution/resolution.dart
+++ b/pkg/analyzer/test/src/dart/resolution/resolution.dart
@@ -79,6 +79,8 @@
 
   InterfaceType get stringType => typeProvider.stringType;
 
+  String get testFilePath => '/test/lib/test.dart';
+
   TypeProvider get typeProvider => result.typeProvider;
 
   TypeSystemImpl get typeSystem => result.typeSystem;
@@ -89,7 +91,7 @@
   VoidType get voidType => VoidTypeImpl.instance;
 
   void addTestFile(String content) {
-    newFile('/test/lib/test.dart', content: content);
+    newFile(testFilePath, content: content);
   }
 
   void assertAssignment(
@@ -772,7 +774,7 @@
   }
 
   Future<void> resolveTestFile() async {
-    var path = convertPath('/test/lib/test.dart');
+    var path = convertPath(testFilePath);
     result = await resolveFile(path);
     findNode = FindNode(result.content, result.unit);
     findElement = FindElement(result.unit);
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 732f7b1..76881d5 100644
--- a/pkg/analyzer/test/src/dart/resolution/simple_identifier_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/simple_identifier_test.dart
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import 'driver_resolution.dart';
-import 'with_null_safety_mixin.dart';
+import 'context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,7 +15,7 @@
 }
 
 @reflectiveTest
-class SimpleIdentifierResolutionTest extends DriverResolutionTest {
+class SimpleIdentifierResolutionTest extends PubPackageResolutionTest {
   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 009a713..896aa45 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
@@ -4,8 +4,7 @@
 
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import 'driver_resolution.dart';
-import 'with_null_safety_mixin.dart';
+import 'context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +14,7 @@
 }
 
 @reflectiveTest
-class TopLevelVariableTest extends DriverResolutionTest {
+class TopLevelVariableTest extends PubPackageResolutionTest {
   test_type_inferred_int() async {
     await resolveTestCode('''
 var v = 0;
@@ -55,7 +54,7 @@
 class TopLevelVariableWithNullSafetyTest extends TopLevelVariableTest
     with WithNullSafetyMixin {
   test_type_inferred_nonNullify() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 // @dart = 2.7
 var a = 0;
 ''');
diff --git a/pkg/analyzer/test/src/dart/resolution/top_type_inference_test.dart b/pkg/analyzer/test/src/dart/resolution/top_type_inference_test.dart
index cc28da8..77fa53c 100644
--- a/pkg/analyzer/test/src/dart/resolution/top_type_inference_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/top_type_inference_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import 'driver_resolution.dart';
+import 'context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class TopTypeInferenceDriverResolutionTest extends DriverResolutionTest {
+class TopTypeInferenceDriverResolutionTest extends PubPackageResolutionTest {
   test_referenceInstanceVariable_withDeclaredType() async {
     await assertNoErrorsInCode(r'''
 class A {
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 781cbf9..d3f8c6b 100644
--- a/pkg/analyzer/test/src/dart/resolution/try_statement_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/try_statement_test.dart
@@ -5,22 +5,17 @@
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import 'driver_resolution.dart';
-import 'with_null_safety_mixin.dart';
+import 'context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(TryStatementTest);
-    defineReflectiveTests(TryStatementNullSafetyTest);
+    defineReflectiveTests(TryStatementWithNullSafetyTest);
   });
 }
 
 @reflectiveTest
-class TryStatementNullSafetyTest extends TryStatementTest
-    with WithNullSafetyMixin {}
-
-@reflectiveTest
-class TryStatementTest extends DriverResolutionTest {
+class TryStatementTest extends PubPackageResolutionTest {
   test_catch_withoutType() async {
     await assertNoErrorsInCode(r'''
 main() {
@@ -68,3 +63,7 @@
     expect(node.stackTraceParameter.staticElement, st);
   }
 }
+
+@reflectiveTest
+class TryStatementWithNullSafetyTest extends TryStatementTest
+    with WithNullSafetyMixin {}
diff --git a/pkg/analyzer/test/src/dart/resolution/type_inference/collection_elements_test.dart b/pkg/analyzer/test/src/dart/resolution/type_inference/collection_elements_test.dart
index 09430fa..e3dc7da 100644
--- a/pkg/analyzer/test/src/dart/resolution/type_inference/collection_elements_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/type_inference/collection_elements_test.dart
@@ -4,8 +4,7 @@
 
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../driver_resolution.dart';
-import '../with_null_safety_mixin.dart';
+import '../context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,7 +15,7 @@
 }
 
 @reflectiveTest
-class ForElementWithNullSafetyTest extends DriverResolutionTest
+class ForElementWithNullSafetyTest extends PubPackageResolutionTest
     with WithNullSafetyMixin {
   test_list_awaitForIn_dynamic_downward() async {
     await resolveTestCode('''
@@ -194,7 +193,7 @@
 }
 
 @reflectiveTest
-class IfElementWithNullSafetyTest extends DriverResolutionTest
+class IfElementWithNullSafetyTest extends PubPackageResolutionTest
     with WithNullSafetyMixin {
   test_list_downward() async {
     await resolveTestCode('''
@@ -231,7 +230,7 @@
 }
 
 @reflectiveTest
-class SpreadElementWithNullSafetyTest extends DriverResolutionTest
+class SpreadElementWithNullSafetyTest extends PubPackageResolutionTest
     with WithNullSafetyMixin {
   test_list_downward() async {
     await resolveTestCode('''
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 e0b45c8..ac8f412 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
@@ -4,8 +4,7 @@
 
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../driver_resolution.dart';
-import '../with_null_safety_mixin.dart';
+import '../context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +14,7 @@
 }
 
 @reflectiveTest
-class ConditionalExpressionTest extends DriverResolutionTest {
+class ConditionalExpressionTest extends PubPackageResolutionTest {
   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 9ce664c..9bca502 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
@@ -4,8 +4,7 @@
 
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../driver_resolution.dart';
-import '../with_null_safety_mixin.dart';
+import '../context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -17,7 +16,7 @@
 }
 
 @reflectiveTest
-class EqualTest extends DriverResolutionTest {
+class EqualTest extends PubPackageResolutionTest {
   test_simple() async {
     await resolveTestCode('''
 void f(Object a, Object b) {
@@ -33,7 +32,7 @@
 class EqualWithNullSafetyTest extends EqualTest with WithNullSafetyMixin {}
 
 @reflectiveTest
-class NotEqualTest extends DriverResolutionTest {
+class NotEqualTest extends PubPackageResolutionTest {
   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 c3444e6..75a5b52 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
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../driver_resolution.dart';
+import '../context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class ExtensionMethodsTest extends DriverResolutionTest {
+class ExtensionMethodsTest extends PubPackageResolutionTest {
   test_implicit_getter() async {
     await assertNoErrorsInCode('''
 class A<T> {}
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 84ca28f..4ac90c4 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
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../driver_resolution.dart';
-import '../with_null_safety_mixin.dart';
+import '../context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,7 +15,7 @@
 }
 
 @reflectiveTest
-class FunctionExpressionTest extends DriverResolutionTest {
+class FunctionExpressionTest extends PubPackageResolutionTest {
   test_contextFunctionType_returnType_async_blockBody_futureOrVoid() async {
     var expectedErrors = expectedErrorsByNullability(
       nullable: [
@@ -344,7 +343,7 @@
   }
 
   test_noContext_returnType_sync_blockBody_notNullable_switch_onEnum_imported() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 enum E { a, b }
 ''');
 
@@ -463,7 +462,7 @@
 class FunctionExpressionWithNullSafetyTest extends FunctionExpressionTest
     with WithNullSafetyMixin {
   test_contextFunctionType_nonNullify() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 // @dart = 2.7
 
 int Function(int a) v;
@@ -485,7 +484,7 @@
   }
 
   test_contextFunctionType_nonNullify_returnType_takeActual() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 // @dart = 2.7
 
 void foo(int Function() x) {}
@@ -501,7 +500,7 @@
   }
 
   test_contextFunctionType_nonNullify_returnType_takeContext() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 // @dart = 2.7
 
 void foo(int Function() x) {}
@@ -556,7 +555,7 @@
   }
 
   test_optOut_downward_returnType_expressionBody_Null() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 void foo(Map<String, String> Function() f) {}
 ''');
     await resolveTestCode('''
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 53970af..53cb664 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
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../driver_resolution.dart';
-import '../with_null_safety_mixin.dart';
+import '../context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,7 +15,7 @@
 }
 
 @reflectiveTest
-class ListLiteralTest extends DriverResolutionTest {
+class ListLiteralTest extends PubPackageResolutionTest {
   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 a68d785..90aabcf 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
@@ -4,8 +4,7 @@
 
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../driver_resolution.dart';
-import '../with_null_safety_mixin.dart';
+import '../context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +14,7 @@
 }
 
 @reflectiveTest
-class LocalVariableTest extends DriverResolutionTest {
+class LocalVariableTest extends PubPackageResolutionTest {
   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 712ae83..edb58ce 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
@@ -4,8 +4,7 @@
 
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../driver_resolution.dart';
-import '../with_null_safety_mixin.dart';
+import '../context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -17,7 +16,7 @@
 }
 
 @reflectiveTest
-class LogicalAndTest extends DriverResolutionTest {
+class LogicalAndTest extends PubPackageResolutionTest {
   test_upward() async {
     await resolveTestCode('''
 void f(bool a, bool b) {
@@ -48,7 +47,7 @@
 }
 
 @reflectiveTest
-class LogicalOrTest extends DriverResolutionTest {
+class LogicalOrTest extends PubPackageResolutionTest {
   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 54c5c98..594ad86 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
@@ -6,8 +6,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../driver_resolution.dart';
-import '../with_null_safety_mixin.dart';
+import '../context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -17,7 +16,7 @@
 }
 
 @reflectiveTest
-class MapLiteralTest extends DriverResolutionTest {
+class MapLiteralTest extends PubPackageResolutionTest {
   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 267717e..0b119df 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
@@ -6,8 +6,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../driver_resolution.dart';
-import '../with_null_safety_mixin.dart';
+import '../context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -17,7 +16,7 @@
 }
 
 @reflectiveTest
-class SetLiteralTest extends DriverResolutionTest {
+class SetLiteralTest extends PubPackageResolutionTest {
   AstNode setLiteral(String search) => findNode.setOrMapLiteral(search);
 
   test_context_noTypeArgs_expression_conflict() async {
diff --git a/pkg/analyzer/test/src/dart/resolution/type_inference/statements_test.dart b/pkg/analyzer/test/src/dart/resolution/type_inference/statements_test.dart
index aa8934f..ad542d5 100644
--- a/pkg/analyzer/test/src/dart/resolution/type_inference/statements_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/type_inference/statements_test.dart
@@ -4,8 +4,7 @@
 
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../driver_resolution.dart';
-import '../with_null_safety_mixin.dart';
+import '../context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -18,7 +17,7 @@
 }
 
 @reflectiveTest
-class AssertWithNullSafetyTest extends DriverResolutionTest
+class AssertWithNullSafetyTest extends PubPackageResolutionTest
     with WithNullSafetyMixin {
   test_downward() async {
     await resolveTestCode('''
@@ -32,7 +31,7 @@
 }
 
 @reflectiveTest
-class DoWithNullSafetyTest extends DriverResolutionTest
+class DoWithNullSafetyTest extends PubPackageResolutionTest
     with WithNullSafetyMixin {
   test_downward() async {
     await resolveTestCode('''
@@ -46,7 +45,7 @@
 }
 
 @reflectiveTest
-class ForWithNullSafetyTest extends DriverResolutionTest
+class ForWithNullSafetyTest extends PubPackageResolutionTest
     with WithNullSafetyMixin {
   test_awaitForIn_dynamic_downward() async {
     await resolveTestCode('''
@@ -103,7 +102,7 @@
 }
 
 @reflectiveTest
-class IfWithNullSafetyTest extends DriverResolutionTest
+class IfWithNullSafetyTest extends PubPackageResolutionTest
     with WithNullSafetyMixin {
   test_downward() async {
     await resolveTestCode('''
@@ -117,7 +116,7 @@
 }
 
 @reflectiveTest
-class WhileWithNullSafetyTest extends DriverResolutionTest
+class WhileWithNullSafetyTest extends PubPackageResolutionTest
     with WithNullSafetyMixin {
   test_downward() async {
     await resolveTestCode('''
diff --git a/pkg/analyzer/test/src/dart/resolution/type_inference/tear_off_test.dart b/pkg/analyzer/test/src/dart/resolution/type_inference/tear_off_test.dart
index 607202d..5f939e3 100644
--- a/pkg/analyzer/test/src/dart/resolution/type_inference/tear_off_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/type_inference/tear_off_test.dart
@@ -7,7 +7,7 @@
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../driver_resolution.dart';
+import '../context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,7 +16,7 @@
 }
 
 @reflectiveTest
-class TearOffTest extends DriverResolutionTest {
+class TearOffTest extends PubPackageResolutionTest {
   test_empty_contextNotInstantiated() async {
     await assertErrorsInCode('''
 T f<T>(T x) => x;
diff --git a/pkg/analyzer/test/src/dart/resolution/type_inference/throw_test.dart b/pkg/analyzer/test/src/dart/resolution/type_inference/throw_test.dart
index ad8c22fa..05d8a77 100644
--- a/pkg/analyzer/test/src/dart/resolution/type_inference/throw_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/type_inference/throw_test.dart
@@ -4,8 +4,7 @@
 
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../driver_resolution.dart';
-import '../with_null_safety_mixin.dart';
+import '../context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +13,7 @@
 }
 
 @reflectiveTest
-class ThrowWithNullSafetyTest extends DriverResolutionTest
+class ThrowWithNullSafetyTest extends PubPackageResolutionTest
     with WithNullSafetyMixin {
   test_downward() async {
     await resolveTestCode('''
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 649f577..63618fd 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
@@ -4,8 +4,7 @@
 
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../driver_resolution.dart';
-import '../with_null_safety_mixin.dart';
+import '../context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -17,7 +16,7 @@
 }
 
 @reflectiveTest
-class IsNotTest extends DriverResolutionTest {
+class IsNotTest extends PubPackageResolutionTest {
   test_simple() async {
     await resolveTestCode('''
 void f(Object a) {
@@ -33,7 +32,7 @@
 class IsNotWithNullSafetyTest extends IsNotTest with WithNullSafetyMixin {}
 
 @reflectiveTest
-class IsTest extends DriverResolutionTest {
+class IsTest extends PubPackageResolutionTest {
   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 7300c58..f50eea9 100644
--- a/pkg/analyzer/test/src/dart/resolution/type_name_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/type_name_test.dart
@@ -6,8 +6,7 @@
 import 'package:analyzer/src/test_utilities/find_element.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import 'driver_resolution.dart';
-import 'with_null_safety_mixin.dart';
+import 'context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -17,7 +16,7 @@
 }
 
 @reflectiveTest
-class TypeNameResolutionTest extends DriverResolutionTest {
+class TypeNameResolutionTest extends PubPackageResolutionTest {
   @override
   bool get typeToStringWithNullability => true;
 
@@ -296,7 +295,7 @@
   }
 
   test_optIn_fromOptOut_class() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {}
 ''');
 
@@ -315,7 +314,7 @@
   }
 
   test_optIn_fromOptOut_class_generic_toBounds() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A<T extends num> {}
 ''');
 
@@ -334,7 +333,7 @@
   }
 
   test_optIn_fromOptOut_class_generic_toBounds_dynamic() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A<T> {}
 ''');
 
@@ -353,7 +352,7 @@
   }
 
   test_optIn_fromOptOut_class_generic_typeArguments() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A<T> {}
 ''');
 
@@ -372,7 +371,7 @@
   }
 
   test_optIn_fromOptOut_functionTypeAlias() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 typedef F = int Function(bool);
 ''');
 
@@ -391,7 +390,7 @@
   }
 
   test_optIn_fromOptOut_functionTypeAlias_generic_dynamic() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 typedef F<T> = T Function(bool);
 ''');
 
@@ -410,7 +409,7 @@
   }
 
   test_optIn_fromOptOut_functionTypeAlias_generic_toBounds() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 typedef F<T extends num> = T Function(bool);
 ''');
 
@@ -429,7 +428,7 @@
   }
 
   test_optIn_fromOptOut_functionTypeAlias_generic_typeArguments() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 typedef F<T> = T Function(bool);
 ''');
 
@@ -448,7 +447,7 @@
   }
 
   test_optOut_fromOptIn_class() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 // @dart = 2.7
 class A {}
 ''');
@@ -467,7 +466,7 @@
   }
 
   test_optOut_fromOptIn_class_generic_toBounds() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 // @dart = 2.7
 class A<T extends num> {}
 ''');
@@ -486,7 +485,7 @@
   }
 
   test_optOut_fromOptIn_class_generic_toBounds_dynamic() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 // @dart = 2.7
 class A<T> {}
 ''');
@@ -505,7 +504,7 @@
   }
 
   test_optOut_fromOptIn_class_generic_typeArguments() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 // @dart = 2.7
 class A<T> {}
 ''');
@@ -524,7 +523,7 @@
   }
 
   test_optOut_fromOptIn_functionTypeAlias() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 // @dart = 2.7
 typedef F = int Function();
 ''');
@@ -543,7 +542,7 @@
   }
 
   test_optOut_fromOptIn_functionTypeAlias_generic_toBounds() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 // @dart = 2.7
 typedef F<T extends num> = T Function();
 ''');
@@ -562,7 +561,7 @@
   }
 
   test_optOut_fromOptIn_functionTypeAlias_generic_toBounds_dynamic() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 // @dart = 2.7
 typedef F<T> = T Function();
 ''');
@@ -581,7 +580,7 @@
   }
 
   test_optOut_fromOptIn_functionTypeAlias_generic_typeArguments() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 // @dart = 2.7
 typedef F<T> = T Function();
 ''');
diff --git a/pkg/analyzer/test/src/dart/resolution/yield_statement_test.dart b/pkg/analyzer/test/src/dart/resolution/yield_statement_test.dart
index b0c5179..2546cac 100644
--- a/pkg/analyzer/test/src/dart/resolution/yield_statement_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/yield_statement_test.dart
@@ -4,7 +4,7 @@
 
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import 'driver_resolution.dart';
+import 'context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -13,12 +13,12 @@
 }
 
 @reflectiveTest
-class YieldStatementResolutionTest extends DriverResolutionTest {
+class YieldStatementResolutionTest extends PubPackageResolutionTest {
   @override
   setUp() {
     super.setUp();
 
-    newFile('/test/lib/my_stream.dart', content: r'''
+    newFile('$testPackageLibPath/my_stream.dart', content: r'''
 import 'dart:async';
 
 export 'dart:async';
diff --git a/pkg/analyzer/test/src/dart/sdk/sdk_test.dart b/pkg/analyzer/test/src/dart/sdk/sdk_test.dart
index 06d671d..01403ad 100644
--- a/pkg/analyzer/test/src/dart/sdk/sdk_test.dart
+++ b/pkg/analyzer/test/src/dart/sdk/sdk_test.dart
@@ -10,6 +10,7 @@
 import 'package:analyzer/src/generated/sdk.dart';
 import 'package:analyzer/src/generated/source.dart';
 import 'package:analyzer/src/test_utilities/resource_provider_mixin.dart';
+import 'package:pub_semver/pub_semver.dart';
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
@@ -30,7 +31,11 @@
     EmbedderYamlLocator locator = EmbedderYamlLocator({
       'fox': <Folder>[pathTranslator.getResource(foxLib)]
     });
-    EmbedderSdk sdk = EmbedderSdk(resourceProvider, locator.embedderYamls);
+    EmbedderSdk sdk = EmbedderSdk(
+      resourceProvider,
+      locator.embedderYamls,
+      languageVersion: Version.parse('2.10.0'),
+    );
 
     expect(sdk.allowedExperimentsJson, isNull);
 
@@ -45,7 +50,11 @@
     EmbedderYamlLocator locator = EmbedderYamlLocator({
       'fox': <Folder>[pathTranslator.getResource(foxLib)]
     });
-    EmbedderSdk sdk = EmbedderSdk(resourceProvider, locator.embedderYamls);
+    EmbedderSdk sdk = EmbedderSdk(
+      resourceProvider,
+      locator.embedderYamls,
+      languageVersion: Version.parse('2.10.0'),
+    );
 
     expect(sdk.urlMappings, hasLength(5));
   }
@@ -54,7 +63,11 @@
     EmbedderYamlLocator locator = EmbedderYamlLocator({
       'fox': <Folder>[pathTranslator.getResource(foxLib)]
     });
-    EmbedderSdk sdk = EmbedderSdk(resourceProvider, locator.embedderYamls);
+    EmbedderSdk sdk = EmbedderSdk(
+      resourceProvider,
+      locator.embedderYamls,
+      languageVersion: Version.parse('2.10.0'),
+    );
 
     expectSource(String posixPath, String dartUri) {
       Uri uri = Uri.parse(posixToOSFileUri(posixPath));
@@ -73,7 +86,11 @@
     EmbedderYamlLocator locator = EmbedderYamlLocator({
       'fox': <Folder>[pathTranslator.getResource(foxLib)]
     });
-    EmbedderSdk sdk = EmbedderSdk(resourceProvider, locator.embedderYamls);
+    EmbedderSdk sdk = EmbedderSdk(
+      resourceProvider,
+      locator.embedderYamls,
+      languageVersion: Version.parse('2.10.0'),
+    );
 
     SdkLibrary lib = sdk.getSdkLibrary('dart:fox');
     expect(lib, isNotNull);
@@ -85,7 +102,11 @@
     EmbedderYamlLocator locator = EmbedderYamlLocator({
       'fox': <Folder>[pathTranslator.getResource(foxLib)]
     });
-    EmbedderSdk sdk = EmbedderSdk(resourceProvider, locator.embedderYamls);
+    EmbedderSdk sdk = EmbedderSdk(
+      resourceProvider,
+      locator.embedderYamls,
+      languageVersion: Version.parse('2.10.0'),
+    );
 
     void expectSource(String dartUri, String posixPath) {
       Source source = sdk.mapDartUri(dartUri);
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 dd78820..e51f4cb 100644
--- a/pkg/analyzer/test/src/diagnostics/abstract_class_member_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/abstract_class_member_test.dart
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/dart/error/syntactic_errors.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,7 +15,7 @@
 }
 
 @reflectiveTest
-class AbstractClassMemberTest extends DriverResolutionTest {
+class AbstractClassMemberTest extends PubPackageResolutionTest {
   test_abstract_field_dynamic() async {
     await assertErrorsInCode(
         '''
diff --git a/pkg/analyzer/test/src/diagnostics/abstract_super_member_reference_test.dart b/pkg/analyzer/test/src/diagnostics/abstract_super_member_reference_test.dart
index ce1e5b1..63131c6 100644
--- a/pkg/analyzer/test/src/diagnostics/abstract_super_member_reference_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/abstract_super_member_reference_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class AbstractSuperMemberReferenceTest extends DriverResolutionTest {
+class AbstractSuperMemberReferenceTest extends PubPackageResolutionTest {
   test_methodInvocation_mixin_implements() async {
     await assertErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/access_private_enum_field_test.dart b/pkg/analyzer/test/src/diagnostics/access_private_enum_field_test.dart
index 51f67e5..3ea6c65 100644
--- a/pkg/analyzer/test/src/diagnostics/access_private_enum_field_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/access_private_enum_field_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class AccessPrivateEnumFieldTest extends DriverResolutionTest {
+class AccessPrivateEnumFieldTest extends PubPackageResolutionTest {
   @failingTest
   test_name() async {
     await assertErrorsInCode(r'''
diff --git a/pkg/analyzer/test/src/diagnostics/ambiguous_export_test.dart b/pkg/analyzer/test/src/diagnostics/ambiguous_export_test.dart
index 681a0b5..17142d7 100644
--- a/pkg/analyzer/test/src/diagnostics/ambiguous_export_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/ambiguous_export_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,12 +14,12 @@
 }
 
 @reflectiveTest
-class AmbiguousExportTest extends DriverResolutionTest {
+class AmbiguousExportTest extends PubPackageResolutionTest {
   test_class() async {
-    newFile('/test/lib/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 class N {}
 ''');
-    newFile('/test/lib/lib2.dart', content: r'''
+    newFile('$testPackageLibPath/lib2.dart', content: r'''
 class N {}
 ''');
     await assertErrorsInCode(r'''
@@ -31,10 +31,10 @@
   }
 
   test_extensions_bothExported() async {
-    newFile('/test/lib/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 extension E on String {}
 ''');
-    newFile('/test/lib/lib2.dart', content: r'''
+    newFile('$testPackageLibPath/lib2.dart', content: r'''
 extension E on String {}
 ''');
     await assertErrorsInCode(r'''
@@ -46,7 +46,7 @@
   }
 
   test_extensions_localAndExported() async {
-    newFile('/test/lib/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 extension E on String {}
 ''');
     await assertNoErrorsInCode(r'''
diff --git a/pkg/analyzer/test/src/diagnostics/ambiguous_extension_member_access_test.dart b/pkg/analyzer/test/src/diagnostics/ambiguous_extension_member_access_test.dart
index f4d6e53..8fc046c 100644
--- a/pkg/analyzer/test/src/diagnostics/ambiguous_extension_member_access_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/ambiguous_extension_member_access_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class AmbiguousExtensionMemberAccessTest extends DriverResolutionTest {
+class AmbiguousExtensionMemberAccessTest extends PubPackageResolutionTest {
   test_call() async {
     await assertErrorsInCode('''
 class A {}
diff --git a/pkg/analyzer/test/src/diagnostics/ambiguous_import_test.dart b/pkg/analyzer/test/src/diagnostics/ambiguous_import_test.dart
index 888dabe..61d593a 100644
--- a/pkg/analyzer/test/src/diagnostics/ambiguous_import_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/ambiguous_import_test.dart
@@ -10,7 +10,7 @@
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import '../../generated/test_support.dart';
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -19,12 +19,12 @@
 }
 
 @reflectiveTest
-class AmbiguousImportTest extends DriverResolutionTest {
+class AmbiguousImportTest extends PubPackageResolutionTest {
   test_as() async {
-    newFile("/test/lib/lib1.dart", content: '''
+    newFile("$testPackageLibPath/lib1.dart", content: '''
 library lib1;
 class N {}''');
-    newFile("/test/lib/lib2.dart", content: '''
+    newFile("$testPackageLibPath/lib2.dart", content: '''
 library lib2;
 class N {}''');
     await assertErrorsInCode('''
@@ -35,6 +35,7 @@
     ]);
   }
 
+  @FailingTest(reason: 'Different approach to MockSdk')
   test_dart() async {
     await assertErrorsInCode('''
 import 'dart:async';
@@ -47,10 +48,10 @@
   }
 
   test_extends() async {
-    newFile("/test/lib/lib1.dart", content: '''
+    newFile("$testPackageLibPath/lib1.dart", content: '''
 library lib1;
 class N {}''');
-    newFile("/test/lib/lib2.dart", content: '''
+    newFile("$testPackageLibPath/lib2.dart", content: '''
 library lib2;
 class N {}''');
     await assertErrorsInCode('''
@@ -63,10 +64,10 @@
   }
 
   test_implements() async {
-    newFile("/test/lib/lib1.dart", content: '''
+    newFile("$testPackageLibPath/lib1.dart", content: '''
 library lib1;
 class N {}''');
-    newFile("/test/lib/lib2.dart", content: '''
+    newFile("$testPackageLibPath/lib2.dart", content: '''
 library lib2;
 class N {}''');
     await assertErrorsInCode('''
@@ -79,28 +80,28 @@
   }
 
   test_inPart() async {
-    newFile("/test/lib/lib1.dart", content: '''
+    newFile("$testPackageLibPath/lib1.dart", content: '''
 library lib1;
 class N {}
 ''');
-    newFile("/test/lib/lib2.dart", content: '''
+    newFile("$testPackageLibPath/lib2.dart", content: '''
 library lib2;
 class N {}
 ''');
-    newFile('/test/lib/part.dart', content: '''
+    newFile('$testPackageLibPath/part.dart', content: '''
 part of lib;
 class A extends N {}
 ''');
-    newFile('/test/lib/lib.dart', content: '''
+    newFile('$testPackageLibPath/lib.dart', content: '''
 library lib;
 import 'lib1.dart';
 import 'lib2.dart';
 part 'part.dart';
 ''');
     ResolvedUnitResult libResult =
-        await resolveFile(convertPath('/test/lib/lib.dart'));
+        await resolveFile(convertPath('$testPackageLibPath/lib.dart'));
     ResolvedUnitResult partResult =
-        await resolveFile(convertPath('/test/lib/part.dart'));
+        await resolveFile(convertPath('$testPackageLibPath/part.dart'));
     expect(libResult.errors, hasLength(0));
     GatheringErrorListener()
       ..addAll(partResult.errors)
@@ -111,10 +112,10 @@
   }
 
   test_instanceCreation() async {
-    newFile("/test/lib/lib1.dart", content: '''
+    newFile("$testPackageLibPath/lib1.dart", content: '''
 library lib1;
 class N {}''');
-    newFile("/test/lib/lib2.dart", content: '''
+    newFile("$testPackageLibPath/lib2.dart", content: '''
 library lib2;
 class N {}''');
     await assertErrorsInCode('''
@@ -127,10 +128,10 @@
   }
 
   test_is() async {
-    newFile("/test/lib/lib1.dart", content: '''
+    newFile("$testPackageLibPath/lib1.dart", content: '''
 library lib1;
 class N {}''');
-    newFile("/test/lib/lib2.dart", content: '''
+    newFile("$testPackageLibPath/lib2.dart", content: '''
 library lib2;
 class N {}''');
     await assertErrorsInCode('''
@@ -142,10 +143,10 @@
   }
 
   test_qualifier() async {
-    newFile("/test/lib/lib1.dart", content: '''
+    newFile("$testPackageLibPath/lib1.dart", content: '''
 library lib1;
 class N {}''');
-    newFile("/test/lib/lib2.dart", content: '''
+    newFile("$testPackageLibPath/lib2.dart", content: '''
 library lib2;
 class N {}''');
     await assertErrorsInCode('''
@@ -157,10 +158,10 @@
   }
 
   test_typeAnnotation() async {
-    newFile("/test/lib/lib1.dart", content: '''
+    newFile("$testPackageLibPath/lib1.dart", content: '''
 library lib1;
 class N {}''');
-    newFile("/test/lib/lib2.dart", content: '''
+    newFile("$testPackageLibPath/lib2.dart", content: '''
 library lib2;
 class N {}''');
     await assertErrorsInCode('''
@@ -187,10 +188,10 @@
   }
 
   test_typeArgument_annotation() async {
-    newFile("/test/lib/lib1.dart", content: '''
+    newFile("$testPackageLibPath/lib1.dart", content: '''
 library lib1;
 class N {}''');
-    newFile("/test/lib/lib2.dart", content: '''
+    newFile("$testPackageLibPath/lib2.dart", content: '''
 library lib2;
 class N {}''');
     await assertErrorsInCode('''
@@ -203,10 +204,10 @@
   }
 
   test_typeArgument_instanceCreation() async {
-    newFile("/test/lib/lib1.dart", content: '''
+    newFile("$testPackageLibPath/lib1.dart", content: '''
 library lib1;
 class N {}''');
-    newFile("/test/lib/lib2.dart", content: '''
+    newFile("$testPackageLibPath/lib2.dart", content: '''
 library lib2;
 class N {}''');
     await assertErrorsInCode('''
@@ -219,10 +220,10 @@
   }
 
   test_varRead() async {
-    newFile("/test/lib/lib1.dart", content: '''
+    newFile("$testPackageLibPath/lib1.dart", content: '''
 library lib1;
 var v;''');
-    newFile("/test/lib/lib2.dart", content: '''
+    newFile("$testPackageLibPath/lib2.dart", content: '''
 library lib2;
 var v;''');
     await assertErrorsInCode('''
@@ -235,10 +236,10 @@
   }
 
   test_varWrite() async {
-    newFile("/test/lib/lib1.dart", content: '''
+    newFile("$testPackageLibPath/lib1.dart", content: '''
 library lib1;
 var v;''');
-    newFile("/test/lib/lib2.dart", content: '''
+    newFile("$testPackageLibPath/lib2.dart", content: '''
 library lib2;
 var v;''');
     await assertErrorsInCode('''
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 faf2c9e..1430312 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
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -18,7 +17,7 @@
 }
 
 @reflectiveTest
-class AmbiguousSetOrMapLiteralBothTest extends DriverResolutionTest {
+class AmbiguousSetOrMapLiteralBothTest extends PubPackageResolutionTest {
   test_map() async {
     await assertNoErrorsInCode('''
 f(Map<int, int> map) {
@@ -109,7 +108,7 @@
 }
 
 @reflectiveTest
-class AmbiguousSetOrMapLiteralEitherTest extends DriverResolutionTest {
+class AmbiguousSetOrMapLiteralEitherTest extends PubPackageResolutionTest {
   test_invalidPrefixOperator() async {
     // Guard against an exception being thrown.
     await assertErrorsInCode('''
diff --git a/pkg/analyzer/test/src/diagnostics/annotation_on_pointer_field_test.dart b/pkg/analyzer/test/src/diagnostics/annotation_on_pointer_field_test.dart
index f67ffd0..979d17e 100644
--- a/pkg/analyzer/test/src/diagnostics/annotation_on_pointer_field_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/annotation_on_pointer_field_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/dart/error/ffi_code.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class AnnotationOnPointerFieldTest extends DriverResolutionTest {
+class AnnotationOnPointerFieldTest extends PubPackageResolutionTest {
   test_double() async {
     await assertErrorsInCode(r'''
 import 'dart:ffi';
diff --git a/pkg/analyzer/test/src/diagnostics/annotation_with_non_class_test.dart b/pkg/analyzer/test/src/diagnostics/annotation_with_non_class_test.dart
index c7efb9f..c98e73c 100644
--- a/pkg/analyzer/test/src/diagnostics/annotation_with_non_class_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/annotation_with_non_class_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class AnnotationWithNonClassTest extends DriverResolutionTest {
+class AnnotationWithNonClassTest extends PubPackageResolutionTest {
   test_instance() async {
     await assertErrorsInCode('''
 class Property {
@@ -33,7 +33,7 @@
   }
 
   test_prefixed() async {
-    newFile("/test/lib/annotations.dart", content: r'''
+    newFile('$testPackageLibPath/annotations.dart', content: r'''
 class Property {
   final int value;
   const Property(this.value);
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 a0f5a93..5ece142 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
@@ -6,8 +6,7 @@
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -17,10 +16,10 @@
 }
 
 @reflectiveTest
-class ArgumentTypeNotAssignableTest extends DriverResolutionTest {
+class ArgumentTypeNotAssignableTest extends PubPackageResolutionTest {
   test_ambiguousClassName() async {
     // See dartbug.com/19624
-    newFile("/test/lib/lib2.dart", content: '''
+    newFile('$testPackageLibPath/lib2.dart', content: '''
 class _A {}
 g(h(_A a)) {}''');
     await assertErrorsInCode('''
diff --git a/pkg/analyzer/test/src/diagnostics/assert_in_redirecting_constructor_test.dart b/pkg/analyzer/test/src/diagnostics/assert_in_redirecting_constructor_test.dart
index 240ede4..9b3c6ea 100644
--- a/pkg/analyzer/test/src/diagnostics/assert_in_redirecting_constructor_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/assert_in_redirecting_constructor_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class AssertInRedirectingConstructorTest extends DriverResolutionTest {
+class AssertInRedirectingConstructorTest extends PubPackageResolutionTest {
   test_assertBeforeRedirection() async {
     await assertErrorsInCode(r'''
 class A {}
diff --git a/pkg/analyzer/test/src/diagnostics/assignment_to_const_test.dart b/pkg/analyzer/test/src/diagnostics/assignment_to_const_test.dart
index 99c27ce34..c4da4a8 100644
--- a/pkg/analyzer/test/src/diagnostics/assignment_to_const_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/assignment_to_const_test.dart
@@ -6,7 +6,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +15,7 @@
 }
 
 @reflectiveTest
-class AssignmentToConstTest extends DriverResolutionTest {
+class AssignmentToConstTest extends PubPackageResolutionTest {
   test_instanceVariable() async {
     await assertErrorsInCode('''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/assignment_to_final_local_test.dart b/pkg/analyzer/test/src/diagnostics/assignment_to_final_local_test.dart
index fb8178d..502b7bb 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
@@ -6,8 +6,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -17,7 +16,7 @@
 }
 
 @reflectiveTest
-class AssignmentToFinalLocalTest extends DriverResolutionTest {
+class AssignmentToFinalLocalTest extends PubPackageResolutionTest {
   test_localVariable() async {
     await assertErrorsInCode('''
 f() {
@@ -137,7 +136,7 @@
 }
 
 @reflectiveTest
-class AssignmentToFinalLocalWithNullSafetyTest extends DriverResolutionTest
+class AssignmentToFinalLocalWithNullSafetyTest extends PubPackageResolutionTest
     with WithNullSafetyMixin {
   test_localVariable_late() async {
     await assertNoErrorsInCode('''
diff --git a/pkg/analyzer/test/src/diagnostics/assignment_to_final_no_setter_test.dart b/pkg/analyzer/test/src/diagnostics/assignment_to_final_no_setter_test.dart
index 4067b17..fe06f6f 100644
--- a/pkg/analyzer/test/src/diagnostics/assignment_to_final_no_setter_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/assignment_to_final_no_setter_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class AssignmentToFinalNoSetterTest extends DriverResolutionTest {
+class AssignmentToFinalNoSetterTest extends PubPackageResolutionTest {
   test_instance_undefined_hasGetter() async {
     await assertErrorsInCode('''
 extension E on int {
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 194e750..bbe22a6 100644
--- a/pkg/analyzer/test/src/diagnostics/assignment_to_final_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/assignment_to_final_test.dart
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,7 +15,7 @@
 }
 
 @reflectiveTest
-class AssignmentToFinalTest extends DriverResolutionTest {
+class AssignmentToFinalTest extends PubPackageResolutionTest {
   test_instanceVariable() async {
     await assertErrorsInCode('''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/assignment_to_function_test.dart b/pkg/analyzer/test/src/diagnostics/assignment_to_function_test.dart
index 850cc71..c355e7b 100644
--- a/pkg/analyzer/test/src/diagnostics/assignment_to_function_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/assignment_to_function_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class AssignmentToFunctionTest extends DriverResolutionTest {
+class AssignmentToFunctionTest extends PubPackageResolutionTest {
   test_function() async {
     await assertErrorsInCode('''
 f() {}
diff --git a/pkg/analyzer/test/src/diagnostics/assignment_to_method_test.dart b/pkg/analyzer/test/src/diagnostics/assignment_to_method_test.dart
index ad89ea1..db44bcf 100644
--- a/pkg/analyzer/test/src/diagnostics/assignment_to_method_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/assignment_to_method_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class AssignmentToMethodTest extends DriverResolutionTest {
+class AssignmentToMethodTest extends PubPackageResolutionTest {
   test_instance_extendedHasMethod_extensionHasSetter() async {
     await assertErrorsInCode('''
 class C {
diff --git a/pkg/analyzer/test/src/diagnostics/assignment_to_type_test.dart b/pkg/analyzer/test/src/diagnostics/assignment_to_type_test.dart
index a8bd819..2526101 100644
--- a/pkg/analyzer/test/src/diagnostics/assignment_to_type_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/assignment_to_type_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class AssignmentToTypeTest extends DriverResolutionTest {
+class AssignmentToTypeTest extends PubPackageResolutionTest {
   test_class() async {
     await assertErrorsInCode('''
 class C {}
diff --git a/pkg/analyzer/test/src/diagnostics/async_for_in_wrong_context_test.dart b/pkg/analyzer/test/src/diagnostics/async_for_in_wrong_context_test.dart
index bc68e84..1dfe5bf 100644
--- a/pkg/analyzer/test/src/diagnostics/async_for_in_wrong_context_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/async_for_in_wrong_context_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class AsyncForInWrongContextTest extends DriverResolutionTest {
+class AsyncForInWrongContextTest extends PubPackageResolutionTest {
   test_syncFunction() async {
     await assertErrorsInCode(r'''
 f(list) {
diff --git a/pkg/analyzer/test/src/diagnostics/async_keyword_used_as_identifier_test.dart b/pkg/analyzer/test/src/diagnostics/async_keyword_used_as_identifier_test.dart
index cc747dd..e88dec6 100644
--- a/pkg/analyzer/test/src/diagnostics/async_keyword_used_as_identifier_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/async_keyword_used_as_identifier_test.dart
@@ -6,7 +6,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +15,7 @@
 }
 
 @reflectiveTest
-class AsyncKeywordUsedAsIdentifierTest extends DriverResolutionTest {
+class AsyncKeywordUsedAsIdentifierTest extends PubPackageResolutionTest {
   test_async_async() async {
     await assertErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/await_in_late_local_variable_initializer_test.dart b/pkg/analyzer/test/src/diagnostics/await_in_late_local_variable_initializer_test.dart
index 15e3574..c321778 100644
--- a/pkg/analyzer/test/src/diagnostics/await_in_late_local_variable_initializer_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/await_in_late_local_variable_initializer_test.dart
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +14,7 @@
 }
 
 @reflectiveTest
-class AwaitInLateLocalVariableInitializerTest extends DriverResolutionTest
+class AwaitInLateLocalVariableInitializerTest extends PubPackageResolutionTest
     with WithNullSafetyMixin {
   static const _errorCode =
       CompileTimeErrorCode.AWAIT_IN_LATE_LOCAL_VARIABLE_INITIALIZER;
diff --git a/pkg/analyzer/test/src/diagnostics/await_in_wrong_context_test.dart b/pkg/analyzer/test/src/diagnostics/await_in_wrong_context_test.dart
index d3184df..e99bf8e 100644
--- a/pkg/analyzer/test/src/diagnostics/await_in_wrong_context_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/await_in_wrong_context_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class AwaitInWrongContextTest extends DriverResolutionTest {
+class AwaitInWrongContextTest extends PubPackageResolutionTest {
   @failingTest
   test_sync() async {
     // This test requires better error recovery than we currently have. In
diff --git a/pkg/analyzer/test/src/diagnostics/body_might_complete_normally_test.dart b/pkg/analyzer/test/src/diagnostics/body_might_complete_normally_test.dart
index 4581677..b366a0d 100644
--- a/pkg/analyzer/test/src/diagnostics/body_might_complete_normally_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/body_might_complete_normally_test.dart
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +14,7 @@
 }
 
 @reflectiveTest
-class BodyMayCompleteNormallyTest extends DriverResolutionTest
+class BodyMayCompleteNormallyTest extends PubPackageResolutionTest
     with WithNullSafetyMixin {
   test_factoryConstructor_named_blockBody() async {
     await assertErrorsInCode(r'''
diff --git a/pkg/analyzer/test/src/diagnostics/built_in_identifier_as_extension_name_test.dart b/pkg/analyzer/test/src/diagnostics/built_in_identifier_as_extension_name_test.dart
index 05791e0..34ff03b 100644
--- a/pkg/analyzer/test/src/diagnostics/built_in_identifier_as_extension_name_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/built_in_identifier_as_extension_name_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class BuiltInIdentifierAsExtensionNameTest extends DriverResolutionTest {
+class BuiltInIdentifierAsExtensionNameTest extends PubPackageResolutionTest {
   test_error_builtInIdentifierAsExtensionName() async {
     await assertErrorsInCode(
       r'''
diff --git a/pkg/analyzer/test/src/diagnostics/built_in_identifier_as_prefix_name_test.dart b/pkg/analyzer/test/src/diagnostics/built_in_identifier_as_prefix_name_test.dart
index 2a79451..a4f9e2e 100644
--- a/pkg/analyzer/test/src/diagnostics/built_in_identifier_as_prefix_name_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/built_in_identifier_as_prefix_name_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class BuiltInIdentifierAsPrefixNameTest extends DriverResolutionTest {
+class BuiltInIdentifierAsPrefixNameTest extends PubPackageResolutionTest {
   test_builtInIdentifierAsPrefixName() async {
     await assertErrorsInCode('''
 import 'dart:async' as abstract;
diff --git a/pkg/analyzer/test/src/diagnostics/built_in_identifier_as_type_name_test.dart b/pkg/analyzer/test/src/diagnostics/built_in_identifier_as_type_name_test.dart
index 741a257..2923bf7 100644
--- a/pkg/analyzer/test/src/diagnostics/built_in_identifier_as_type_name_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/built_in_identifier_as_type_name_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class BuiltInIdentifierAsTypeNameTest extends DriverResolutionTest {
+class BuiltInIdentifierAsTypeNameTest extends PubPackageResolutionTest {
   test_class() async {
     await assertErrorsInCode('''
 class as {}
diff --git a/pkg/analyzer/test/src/diagnostics/built_in_identifier_as_type_parameter_name_test.dart b/pkg/analyzer/test/src/diagnostics/built_in_identifier_as_type_parameter_name_test.dart
index b28236f..fc7fdd3 100644
--- a/pkg/analyzer/test/src/diagnostics/built_in_identifier_as_type_parameter_name_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/built_in_identifier_as_type_parameter_name_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,8 @@
 }
 
 @reflectiveTest
-class BuiltInIdentifierAsTypeParameterNameTest extends DriverResolutionTest {
+class BuiltInIdentifierAsTypeParameterNameTest
+    extends PubPackageResolutionTest {
   test_class() async {
     await assertErrorsInCode('''
 class A<as> {}
diff --git a/pkg/analyzer/test/src/diagnostics/built_in_identifier_as_typedef_name_test.dart b/pkg/analyzer/test/src/diagnostics/built_in_identifier_as_typedef_name_test.dart
index 2163187..7ba99f5 100644
--- a/pkg/analyzer/test/src/diagnostics/built_in_identifier_as_typedef_name_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/built_in_identifier_as_typedef_name_test.dart
@@ -6,7 +6,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +15,7 @@
 }
 
 @reflectiveTest
-class BuiltInIdentifierAsTypedefNameTest extends DriverResolutionTest {
+class BuiltInIdentifierAsTypedefNameTest extends PubPackageResolutionTest {
   test_classTypeAlias() async {
     await assertErrorsInCode(r'''
 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 ee5b015..9fa19a3 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
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class CanBeNullAfterNullAwareTest extends DriverResolutionTest {
+class CanBeNullAfterNullAwareTest extends PubPackageResolutionTest {
   test_afterCascade() 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 e8268d5..67e0536 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
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class CaseBlockNotTerminatedTest extends DriverResolutionTest {
+class CaseBlockNotTerminatedTest extends PubPackageResolutionTest {
   test_lastCase() async {
     await assertNoErrorsInCode(r'''
 f(int a) {
diff --git a/pkg/analyzer/test/src/diagnostics/case_expression_type_implements_equals_test.dart b/pkg/analyzer/test/src/diagnostics/case_expression_type_implements_equals_test.dart
index 78e713c..bfec408 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
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,7 +15,7 @@
 }
 
 @reflectiveTest
-class CaseExpressionTypeImplementsEqualsTest extends DriverResolutionTest {
+class CaseExpressionTypeImplementsEqualsTest extends PubPackageResolutionTest {
   test_declares() async {
     await assertNoErrorsInCode(r'''
 abstract class A {
@@ -107,7 +106,7 @@
 
 @reflectiveTest
 class CaseExpressionTypeImplementsEqualsWithNullSafetyTest
-    extends DriverResolutionTest with WithNullSafetyMixin {
+    extends PubPackageResolutionTest with WithNullSafetyMixin {
   test_declares() async {
     await assertNoErrorsInCode(r'''
 abstract class A {
diff --git a/pkg/analyzer/test/src/diagnostics/case_expression_type_is_not_switch_expression_subtype_test.dart b/pkg/analyzer/test/src/diagnostics/case_expression_type_is_not_switch_expression_subtype_test.dart
index 741cb7e..dbe659f 100644
--- a/pkg/analyzer/test/src/diagnostics/case_expression_type_is_not_switch_expression_subtype_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/case_expression_type_is_not_switch_expression_subtype_test.dart
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,7 +15,7 @@
 
 @reflectiveTest
 class CaseExpressionTypeIsNotSswitchExpressionSubtype
-    extends DriverResolutionTest with WithNullSafetyMixin {
+    extends PubPackageResolutionTest with WithNullSafetyMixin {
   CompileTimeErrorCode get _errorCode {
     return CompileTimeErrorCode
         .CASE_EXPRESSION_TYPE_IS_NOT_SWITCH_EXPRESSION_SUBTYPE;
diff --git a/pkg/analyzer/test/src/diagnostics/cast_to_non_type_test.dart b/pkg/analyzer/test/src/diagnostics/cast_to_non_type_test.dart
index e7496be..78747bc 100644
--- a/pkg/analyzer/test/src/diagnostics/cast_to_non_type_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/cast_to_non_type_test.dart
@@ -6,7 +6,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +15,7 @@
 }
 
 @reflectiveTest
-class CastToNonTypeTest extends DriverResolutionTest {
+class CastToNonTypeTest extends PubPackageResolutionTest {
   test_variable() async {
     await assertErrorsInCode('''
 var A = 0;
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 d781279..77805ab 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
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class ConcreteClassWithAbstractMemberTest extends DriverResolutionTest {
+class ConcreteClassWithAbstractMemberTest extends PubPackageResolutionTest {
   test_direct() async {
     await assertErrorsInCode('''
 class A {
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 d6aa6e4..9342301 100644
--- a/pkg/analyzer/test/src/diagnostics/conflicting_generic_interfaces_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/conflicting_generic_interfaces_test.dart
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,7 +15,7 @@
 }
 
 @reflectiveTest
-class ConflictingGenericInterfacesTest extends DriverResolutionTest {
+class ConflictingGenericInterfacesTest extends PubPackageResolutionTest {
   test_class_extends_implements() async {
     await assertErrorsInCode('''
 class I<T> {}
@@ -95,7 +94,7 @@
   }
 
   test_class_extends_implements_optOut() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class I<T> {}
 class A implements I<int> {}
 class B implements I<int?> {}
@@ -109,7 +108,7 @@
   }
 
   test_class_extends_optIn_implements_optOut() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A<T> {}
 
 class B extends A<int> {}
@@ -123,7 +122,7 @@
   }
 
   test_class_mixed_viaLegacy() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A<T> {}
 
 class Bi implements A<int> {}
@@ -132,7 +131,7 @@
 ''');
 
     // Both `Bi` and `Biq` implement `A<int*>` in legacy, so identical.
-    newFile('/test/lib/b.dart', content: r'''
+    newFile('$testPackageLibPath/b.dart', content: r'''
 // @dart = 2.7
 import 'a.dart';
 
@@ -159,11 +158,11 @@
   }
 
   test_class_topMerge_optIn_optOut() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A<T> {}
 ''');
 
-    newFile('/test/lib/b.dart', content: r'''
+    newFile('$testPackageLibPath/b.dart', content: r'''
 // @dart = 2.5
 import 'a.dart';
 
diff --git a/pkg/analyzer/test/src/diagnostics/conflicting_static_and_instance_test.dart b/pkg/analyzer/test/src/diagnostics/conflicting_static_and_instance_test.dart
index 08d604b..85205db 100644
--- a/pkg/analyzer/test/src/diagnostics/conflicting_static_and_instance_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/conflicting_static_and_instance_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,7 +16,7 @@
 }
 
 @reflectiveTest
-class ConflictingStaticAndInstanceClassTest extends DriverResolutionTest {
+class ConflictingStaticAndInstanceClassTest extends PubPackageResolutionTest {
   test_inClass_getter_getter() async {
     await assertErrorsInCode(r'''
 class C {
@@ -450,7 +450,7 @@
 }
 
 @reflectiveTest
-class ConflictingStaticAndInstanceEnumTest extends DriverResolutionTest {
+class ConflictingStaticAndInstanceEnumTest extends PubPackageResolutionTest {
   test_hashCode() async {
     await assertErrorsInCode(r'''
 enum E {
@@ -503,7 +503,7 @@
 }
 
 @reflectiveTest
-class ConflictingStaticAndInstanceMixinTest extends DriverResolutionTest {
+class ConflictingStaticAndInstanceMixinTest extends PubPackageResolutionTest {
   test_inConstraint_getter_getter() async {
     await assertErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/conflicting_type_variable_and_container_test.dart b/pkg/analyzer/test/src/diagnostics/conflicting_type_variable_and_container_test.dart
index 3403efa..634dfff 100644
--- a/pkg/analyzer/test/src/diagnostics/conflicting_type_variable_and_container_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/conflicting_type_variable_and_container_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +15,7 @@
 }
 
 @reflectiveTest
-class ConflictingTypeVariableAndClassTest extends DriverResolutionTest {
+class ConflictingTypeVariableAndClassTest extends PubPackageResolutionTest {
   test_conflict_on_class() async {
     await assertErrorsInCode(r'''
 class T<T> {}
@@ -34,7 +34,7 @@
 }
 
 @reflectiveTest
-class ConflictingTypeVariableAndExtensionTest extends DriverResolutionTest {
+class ConflictingTypeVariableAndExtensionTest extends PubPackageResolutionTest {
   test_conflict() async {
     await assertErrorsInCode(r'''
 extension T<T> on String {}
diff --git a/pkg/analyzer/test/src/diagnostics/conflicting_type_variable_and_member_test.dart b/pkg/analyzer/test/src/diagnostics/conflicting_type_variable_and_member_test.dart
index 7cd84a8b..7805bea 100644
--- a/pkg/analyzer/test/src/diagnostics/conflicting_type_variable_and_member_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/conflicting_type_variable_and_member_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,7 +16,7 @@
 
 @reflectiveTest
 class ConflictingTypeVariableAndMemberExtensionTest
-    extends DriverResolutionTest {
+    extends PubPackageResolutionTest {
   test_getter() async {
     await assertErrorsInCode(r'''
 extension A<T> on String {
@@ -52,7 +52,7 @@
 }
 
 @reflectiveTest
-class ConflictingTypeVariableAndMemberTest extends DriverResolutionTest {
+class ConflictingTypeVariableAndMemberTest extends PubPackageResolutionTest {
   test_field() async {
     await assertErrorsInCode(r'''
 class A<T> {
diff --git a/pkg/analyzer/test/src/diagnostics/const_constructor_field_type_mismatch_test.dart b/pkg/analyzer/test/src/diagnostics/const_constructor_field_type_mismatch_test.dart
index 43efe7b..1a3846a 100644
--- a/pkg/analyzer/test/src/diagnostics/const_constructor_field_type_mismatch_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/const_constructor_field_type_mismatch_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class ConstConstructorFieldTypeMismatchTest extends DriverResolutionTest {
+class ConstConstructorFieldTypeMismatchTest extends PubPackageResolutionTest {
   test_assignable_generic() async {
     await assertErrorsInCode(
       r'''
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 f2f4409..24ad795 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
@@ -6,7 +6,7 @@
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +15,7 @@
 }
 
 @reflectiveTest
-class ConstConstructorParamTypeMismatchTest extends DriverResolutionTest {
+class ConstConstructorParamTypeMismatchTest extends PubPackageResolutionTest {
   test_assignable_fieldFormal_null() async {
     // Null is assignable to anything (before null safety).
     await assertNoErrorsInCode(r'''
@@ -137,7 +137,7 @@
   }
 
   test_int_to_double_reference_from_other_library_other_file_after() async {
-    newFile('/test/lib/other.dart', content: '''
+    newFile('$testPackageLibPath/other.dart', content: '''
 import 'test.dart';
 class D {
   final C c;
@@ -153,7 +153,7 @@
 const C constant = const C(0);
 ''');
     var otherFileResult =
-        await resolveFile(convertPath('/test/lib/other.dart'));
+        await resolveFile(convertPath('$testPackageLibPath/other.dart'));
     expect(otherFileResult.errors, isEmpty);
   }
 
@@ -165,7 +165,7 @@
 }
 const C constant = const C(0);
 ''');
-    newFile('/test/lib/other.dart', content: '''
+    newFile('$testPackageLibPath/other.dart', content: '''
 import 'test.dart';
 class D {
   final C c;
@@ -174,7 +174,7 @@
 const D constant2 = const D(constant);
 ''');
     var otherFileResult =
-        await resolveFile(convertPath('/test/lib/other.dart'));
+        await resolveFile(convertPath('$testPackageLibPath/other.dart'));
     expect(otherFileResult.errors, isEmpty);
   }
 
@@ -189,7 +189,7 @@
   }
 
   test_int_to_double_via_default_value_other_file_after() async {
-    newFile('/test/lib/other.dart', content: '''
+    newFile('$testPackageLibPath/other.dart', content: '''
 class C {
   final double x;
   const C([this.x = 0]);
@@ -200,19 +200,19 @@
 const c = C();
 ''');
     var otherFileResult =
-        await resolveFile(convertPath('/test/lib/other.dart'));
+        await resolveFile(convertPath('$testPackageLibPath/other.dart'));
     expect(otherFileResult.errors, isEmpty);
   }
 
   test_int_to_double_via_default_value_other_file_before() async {
-    newFile('/test/lib/other.dart', content: '''
+    newFile('$testPackageLibPath/other.dart', content: '''
 class C {
   final double x;
   const C([this.x = 0]);
 }
 ''');
     var otherFileResult =
-        await resolveFile(convertPath('/test/lib/other.dart'));
+        await resolveFile(convertPath('$testPackageLibPath/other.dart'));
     expect(otherFileResult.errors, isEmpty);
 
     await assertNoErrorsInCode('''
diff --git a/pkg/analyzer/test/src/diagnostics/const_constructor_with_field_initialized_by_non_const_test.dart b/pkg/analyzer/test/src/diagnostics/const_constructor_with_field_initialized_by_non_const_test.dart
index a8a7a79..3b94c24 100644
--- a/pkg/analyzer/test/src/diagnostics/const_constructor_with_field_initialized_by_non_const_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/const_constructor_with_field_initialized_by_non_const_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +15,7 @@
 
 @reflectiveTest
 class ConstConstructorWithFieldInitializedByNonConstTest
-    extends DriverResolutionTest {
+    extends PubPackageResolutionTest {
   test_factoryConstructor() async {
     await assertNoErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/const_constructor_with_mixin_with_field_test.dart b/pkg/analyzer/test/src/diagnostics/const_constructor_with_mixin_with_field_test.dart
index c138d36..73e81a8 100644
--- a/pkg/analyzer/test/src/diagnostics/const_constructor_with_mixin_with_field_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/const_constructor_with_mixin_with_field_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class ConstConstructorWithMixinWithFieldTest extends DriverResolutionTest {
+class ConstConstructorWithMixinWithFieldTest extends PubPackageResolutionTest {
   test_class_instance_final() async {
     await assertErrorsInCode('''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/const_constructor_with_non_const_super_test.dart b/pkg/analyzer/test/src/diagnostics/const_constructor_with_non_const_super_test.dart
index 6c7f9c3..9dcfbc5 100644
--- a/pkg/analyzer/test/src/diagnostics/const_constructor_with_non_const_super_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/const_constructor_with_non_const_super_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class ConstConstructorWithNonConstSuperTest extends DriverResolutionTest {
+class ConstConstructorWithNonConstSuperTest extends PubPackageResolutionTest {
   test_explicit() async {
     await assertErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/const_constructor_with_non_final_field_test.dart b/pkg/analyzer/test/src/diagnostics/const_constructor_with_non_final_field_test.dart
index 6162be7..055e4b1 100644
--- a/pkg/analyzer/test/src/diagnostics/const_constructor_with_non_final_field_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/const_constructor_with_non_final_field_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class ConstConstructorWithNonFinalFieldTest extends DriverResolutionTest {
+class ConstConstructorWithNonFinalFieldTest extends PubPackageResolutionTest {
   test_mixin() async {
     await assertErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/const_deferred_class_test.dart b/pkg/analyzer/test/src/diagnostics/const_deferred_class_test.dart
index 194f0a4..7a02553 100644
--- a/pkg/analyzer/test/src/diagnostics/const_deferred_class_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/const_deferred_class_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,9 +14,9 @@
 }
 
 @reflectiveTest
-class ConstDeferredClassTest extends DriverResolutionTest {
+class ConstDeferredClassTest extends PubPackageResolutionTest {
   test_namedConstructor() async {
-    newFile('/test/lib/lib1.dart', content: '''
+    newFile('$testPackageLibPath/lib1.dart', content: '''
 library lib1;
 class A {
   const A.b();
@@ -32,7 +32,7 @@
   }
 
   test_unnamed() async {
-    newFile('/test/lib/lib1.dart', content: '''
+    newFile('$testPackageLibPath/lib1.dart', content: '''
 library lib1;
 class A {
   const A();
diff --git a/pkg/analyzer/test/src/diagnostics/const_eval_throws_idbze_test.dart b/pkg/analyzer/test/src/diagnostics/const_eval_throws_idbze_test.dart
index a07e903..4a8c4b2 100644
--- a/pkg/analyzer/test/src/diagnostics/const_eval_throws_idbze_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/const_eval_throws_idbze_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class ConstEvalThrowsIdbzeTest extends DriverResolutionTest {
+class ConstEvalThrowsIdbzeTest extends PubPackageResolutionTest {
   test_divisionByZero() async {
     await assertErrorsInCode('''
 const C = 1 ~/ 0;
diff --git a/pkg/analyzer/test/src/diagnostics/const_eval_type_bool_int_test.dart b/pkg/analyzer/test/src/diagnostics/const_eval_type_bool_int_test.dart
index 9799548..3af662c 100644
--- a/pkg/analyzer/test/src/diagnostics/const_eval_type_bool_int_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/const_eval_type_bool_int_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class ConstEvalTypeBoolIntTest extends DriverResolutionTest {
+class ConstEvalTypeBoolIntTest extends PubPackageResolutionTest {
   test_binary() async {
     await _check_constEvalTypeBoolOrInt_binary("a ^ ''");
     await _check_constEvalTypeBoolOrInt_binary("a & ''");
diff --git a/pkg/analyzer/test/src/diagnostics/const_eval_type_bool_num_string_test.dart b/pkg/analyzer/test/src/diagnostics/const_eval_type_bool_num_string_test.dart
index 529707d..8acf4e9 100644
--- a/pkg/analyzer/test/src/diagnostics/const_eval_type_bool_num_string_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/const_eval_type_bool_num_string_test.dart
@@ -6,7 +6,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +15,7 @@
 }
 
 @reflectiveTest
-class ConstEvalTypeBoolNumStringTest extends DriverResolutionTest {
+class ConstEvalTypeBoolNumStringTest extends PubPackageResolutionTest {
   test_equal() async {
     await assertErrorsInCode(
         r'''
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 cc8982d..dc91c13 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
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class ConstEvalTypeBoolTest extends DriverResolutionTest {
+class ConstEvalTypeBoolTest extends PubPackageResolutionTest {
   test_binary_and() async {
     await assertErrorsInCode('''
 const c = true && '';
diff --git a/pkg/analyzer/test/src/diagnostics/const_eval_type_num_test.dart b/pkg/analyzer/test/src/diagnostics/const_eval_type_num_test.dart
index 8d3aeae..f332abf 100644
--- a/pkg/analyzer/test/src/diagnostics/const_eval_type_num_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/const_eval_type_num_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class ConstEvalTypeNumTest extends DriverResolutionTest {
+class ConstEvalTypeNumTest extends PubPackageResolutionTest {
   test_binary() async {
     await _check_constEvalTypeNum_binary("a + ''");
     await _check_constEvalTypeNum_binary("a - ''");
diff --git a/pkg/analyzer/test/src/diagnostics/const_field_initializer_not_assignable_test.dart b/pkg/analyzer/test/src/diagnostics/const_field_initializer_not_assignable_test.dart
index b7145d9..e624e63 100644
--- a/pkg/analyzer/test/src/diagnostics/const_field_initializer_not_assignable_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/const_field_initializer_not_assignable_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class ConstFieldInitializerNotAssignableTest extends DriverResolutionTest {
+class ConstFieldInitializerNotAssignableTest extends PubPackageResolutionTest {
   test_assignable_subtype() async {
     await assertNoErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/const_formal_parameter_test.dart b/pkg/analyzer/test/src/diagnostics/const_formal_parameter_test.dart
index 4c1abe8..79e54ea 100644
--- a/pkg/analyzer/test/src/diagnostics/const_formal_parameter_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/const_formal_parameter_test.dart
@@ -6,7 +6,7 @@
 import 'package:analyzer/src/generated/parser.dart' show ParserErrorCode;
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +15,7 @@
 }
 
 @reflectiveTest
-class ConstFormalParameterTest extends DriverResolutionTest {
+class ConstFormalParameterTest extends PubPackageResolutionTest {
   test_fieldFormalParameter() async {
     await assertErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/const_initialized_with_non_constant_value_from_deferred_library_test.dart b/pkg/analyzer/test/src/diagnostics/const_initialized_with_non_constant_value_from_deferred_library_test.dart
index 21a3c81..2a14814 100644
--- a/pkg/analyzer/test/src/diagnostics/const_initialized_with_non_constant_value_from_deferred_library_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/const_initialized_with_non_constant_value_from_deferred_library_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,9 +16,9 @@
 
 @reflectiveTest
 class ConstInitializedWithNonConstantValueFromDeferredLibraryTest
-    extends DriverResolutionTest {
+    extends PubPackageResolutionTest {
   test_deferred() async {
-    newFile('/test/lib/lib1.dart', content: '''
+    newFile('$testPackageLibPath/lib1.dart', content: '''
 library lib1;
 const V = 1;
 ''');
@@ -36,7 +36,7 @@
   }
 
   test_nested() async {
-    newFile('/test/lib/lib1.dart', content: '''
+    newFile('$testPackageLibPath/lib1.dart', content: '''
 library lib1;
 const V = 1;
 ''');
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 4801257..8e28cd4 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
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,8 @@
 }
 
 @reflectiveTest
-class ConstInitializedWithNonConstantValueTest extends DriverResolutionTest {
+class ConstInitializedWithNonConstantValueTest
+    extends PubPackageResolutionTest {
   test_dynamic() async {
     await assertErrorsInCode(r'''
 f(p) {
diff --git a/pkg/analyzer/test/src/diagnostics/const_instance_field_test.dart b/pkg/analyzer/test/src/diagnostics/const_instance_field_test.dart
index 45a9fc1..2e8afb16 100644
--- a/pkg/analyzer/test/src/diagnostics/const_instance_field_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/const_instance_field_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class ConstInstanceFieldTest extends DriverResolutionTest {
+class ConstInstanceFieldTest extends PubPackageResolutionTest {
   test_class() async {
     await assertErrorsInCode(r'''
 class C {
diff --git a/pkg/analyzer/test/src/diagnostics/const_map_key_expression_type_implements_equals_test.dart b/pkg/analyzer/test/src/diagnostics/const_map_key_expression_type_implements_equals_test.dart
index ee3066f..6b2a23b 100644
--- a/pkg/analyzer/test/src/diagnostics/const_map_key_expression_type_implements_equals_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/const_map_key_expression_type_implements_equals_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +15,7 @@
 
 @reflectiveTest
 class ConstMapKeyExpressionTypeImplementsEqualsTest
-    extends DriverResolutionTest {
+    extends PubPackageResolutionTest {
   test_abstract() async {
     await assertNoErrorsInCode(r'''
 class A {
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 5c1d235..786dfe7 100644
--- a/pkg/analyzer/test/src/diagnostics/const_not_initialized_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/const_not_initialized_test.dart
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,7 +15,7 @@
 }
 
 @reflectiveTest
-class ConstNotInitializedTest extends DriverResolutionTest {
+class ConstNotInitializedTest extends PubPackageResolutionTest {
   test_extension_static() async {
     await assertErrorsInCode('''
 extension E on String {
diff --git a/pkg/analyzer/test/src/diagnostics/const_set_element_type_implements_equals_test.dart b/pkg/analyzer/test/src/diagnostics/const_set_element_type_implements_equals_test.dart
index 62ca512..48c5f70 100644
--- a/pkg/analyzer/test/src/diagnostics/const_set_element_type_implements_equals_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/const_set_element_type_implements_equals_test.dart
@@ -8,7 +8,7 @@
 import 'package:analyzer/src/generated/engine.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -19,7 +19,7 @@
 }
 
 @reflectiveTest
-class ConstSetElementTypeImplementsEqualsTest extends DriverResolutionTest {
+class ConstSetElementTypeImplementsEqualsTest extends PubPackageResolutionTest {
   test_constField() async {
     await assertErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/const_spread_expected_list_or_set_test.dart b/pkg/analyzer/test/src/diagnostics/const_spread_expected_list_or_set_test.dart
index 1751118..6cbca9c 100644
--- a/pkg/analyzer/test/src/diagnostics/const_spread_expected_list_or_set_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/const_spread_expected_list_or_set_test.dart
@@ -8,7 +8,7 @@
 import 'package:analyzer/src/generated/engine.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -18,7 +18,7 @@
 }
 
 @reflectiveTest
-class ConstSpreadExpectedListOrSetTest extends DriverResolutionTest {
+class ConstSpreadExpectedListOrSetTest extends PubPackageResolutionTest {
   test_const_listInt() async {
     await assertErrorsInCode(
         '''
diff --git a/pkg/analyzer/test/src/diagnostics/const_spread_expected_map_test.dart b/pkg/analyzer/test/src/diagnostics/const_spread_expected_map_test.dart
index e14372a..0548e36 100644
--- a/pkg/analyzer/test/src/diagnostics/const_spread_expected_map_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/const_spread_expected_map_test.dart
@@ -8,7 +8,7 @@
 import 'package:analyzer/src/generated/engine.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -18,7 +18,7 @@
 }
 
 @reflectiveTest
-class ConstSpreadExpectedMapTest extends DriverResolutionTest {
+class ConstSpreadExpectedMapTest extends PubPackageResolutionTest {
   test_const_mapInt() async {
     await assertErrorsInCode(
         '''
diff --git a/pkg/analyzer/test/src/diagnostics/const_with_non_const_test.dart b/pkg/analyzer/test/src/diagnostics/const_with_non_const_test.dart
index 50ce2ea..39e41c9 100644
--- a/pkg/analyzer/test/src/diagnostics/const_with_non_const_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/const_with_non_const_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class ConstWithNonConstTest extends DriverResolutionTest {
+class ConstWithNonConstTest extends PubPackageResolutionTest {
   test_inConstContext() async {
     await assertErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/const_with_non_constant_argument_test.dart b/pkg/analyzer/test/src/diagnostics/const_with_non_constant_argument_test.dart
index 9fc2328..e21d023 100644
--- a/pkg/analyzer/test/src/diagnostics/const_with_non_constant_argument_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/const_with_non_constant_argument_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class ConstWithNonConstantArgumentTest extends DriverResolutionTest {
+class ConstWithNonConstantArgumentTest extends PubPackageResolutionTest {
   test_annotation() async {
     await assertErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/const_with_non_type_test.dart b/pkg/analyzer/test/src/diagnostics/const_with_non_type_test.dart
index 1bd6571..67edb47 100644
--- a/pkg/analyzer/test/src/diagnostics/const_with_non_type_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/const_with_non_type_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,9 +14,9 @@
 }
 
 @reflectiveTest
-class ConstWithNonTypeTest extends DriverResolutionTest {
+class ConstWithNonTypeTest extends PubPackageResolutionTest {
   test_fromLibrary() async {
-    newFile('/test/lib/lib1.dart');
+    newFile('$testPackageLibPath/lib1.dart');
     await assertErrorsInCode('''
 import 'lib1.dart' as lib;
 void f() {
diff --git a/pkg/analyzer/test/src/diagnostics/const_with_type_parameters_test.dart b/pkg/analyzer/test/src/diagnostics/const_with_type_parameters_test.dart
index 5aed8fe..ea1ef186 100644
--- a/pkg/analyzer/test/src/diagnostics/const_with_type_parameters_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/const_with_type_parameters_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class ConstWithTypeParametersTest extends DriverResolutionTest {
+class ConstWithTypeParametersTest extends PubPackageResolutionTest {
   test_direct() async {
     await assertErrorsInCode(r'''
 class A<T> {
diff --git a/pkg/analyzer/test/src/diagnostics/const_with_undefined_constructor_test.dart b/pkg/analyzer/test/src/diagnostics/const_with_undefined_constructor_test.dart
index f60efa0..eb83413 100644
--- a/pkg/analyzer/test/src/diagnostics/const_with_undefined_constructor_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/const_with_undefined_constructor_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class ConstWithUndefinedConstructorTest extends DriverResolutionTest {
+class ConstWithUndefinedConstructorTest extends PubPackageResolutionTest {
   test_named() async {
     await assertErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/could_not_infer_test.dart b/pkg/analyzer/test/src/diagnostics/could_not_infer_test.dart
index 4736c9a..73ddb62 100644
--- a/pkg/analyzer/test/src/diagnostics/could_not_infer_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/could_not_infer_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class CouldNotInferTest extends DriverResolutionTest {
+class CouldNotInferTest extends PubPackageResolutionTest {
   test_constructors_inferenceFBounded() async {
     await assertErrorsInCode('''
 class C<T> {}
@@ -135,7 +135,7 @@
   }
 
   test_functionType_parameterIsObject_returnIsBound_prefixedFunction() async {
-    newFile('/test/lib/a.dart', content: '''
+    newFile('$testPackageLibPath/a.dart', content: '''
 external T f<T extends num>(T a, T b);
 ''');
     await assertErrorsInCode('''
diff --git a/pkg/analyzer/test/src/diagnostics/dead_code_test.dart b/pkg/analyzer/test/src/diagnostics/dead_code_test.dart
index 4a4c77c..2529fea 100644
--- a/pkg/analyzer/test/src/diagnostics/dead_code_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/dead_code_test.dart
@@ -3,11 +3,9 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/src/error/codes.dart';
-import 'package:analyzer/src/test_utilities/package_mixin.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -17,7 +15,13 @@
 }
 
 @reflectiveTest
-class DeadCodeTest extends DriverResolutionTest with PackageMixin {
+class DeadCodeTest extends PubPackageResolutionTest {
+  @override
+  void setUp() {
+    super.setUp();
+    writeTestPackageConfigWithMeta();
+  }
+
   test_afterForEachWithBreakLabel() async {
     await assertNoErrorsInCode(r'''
 f(List<Object> values) {
@@ -166,7 +170,7 @@
   }
 
   test_deadBlock_if_debugConst_prefixedIdentifier2() async {
-    newFile('/test/lib/lib2.dart', content: r'''
+    newFile('$testPackageLibPath/lib2.dart', content: r'''
 class A {
   static const bool DEBUG = false;
 }''');
@@ -178,7 +182,7 @@
   }
 
   test_deadBlock_if_debugConst_propertyAccessor() async {
-    newFile('/test/lib/lib2.dart', content: r'''
+    newFile('$testPackageLibPath/lib2.dart', content: r'''
 class A {
   static const bool DEBUG = false;
 }''');
@@ -453,7 +457,6 @@
   }
 
   test_statementAfterAlwaysThrowsFunction() async {
-    addMetaPackage();
     await assertErrorsInCode(r'''
 import 'package:meta/meta.dart';
 
@@ -473,7 +476,6 @@
 
   @failingTest
   test_statementAfterAlwaysThrowsGetter() async {
-    addMetaPackage();
     await assertErrorsInCode(r'''
 import 'package:meta/meta.dart';
 
@@ -493,7 +495,6 @@
   }
 
   test_statementAfterAlwaysThrowsMethod() async {
-    addMetaPackage();
     await assertErrorsInCode(r'''
 import 'package:meta/meta.dart';
 
diff --git a/pkg/analyzer/test/src/diagnostics/dead_null_aware_expression_test.dart b/pkg/analyzer/test/src/diagnostics/dead_null_aware_expression_test.dart
index 8b0a323..c1e4746 100644
--- a/pkg/analyzer/test/src/diagnostics/dead_null_aware_expression_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/dead_null_aware_expression_test.dart
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,10 +14,10 @@
 }
 
 @reflectiveTest
-class DeadNullAwareExpressionTest extends DriverResolutionTest
+class DeadNullAwareExpressionTest extends PubPackageResolutionTest
     with WithNullSafetyMixin {
   test_assignCompound_legacy() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 // @dart = 2.5
 var x = 0;
 ''');
@@ -64,7 +63,7 @@
   }
 
   test_binary_legacy() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 // @dart = 2.5
 var x = 0;
 ''');
diff --git a/pkg/analyzer/test/src/diagnostics/default_list_constructor_test.dart b/pkg/analyzer/test/src/diagnostics/default_list_constructor_test.dart
index a629db8..6f8f9c1 100644
--- a/pkg/analyzer/test/src/diagnostics/default_list_constructor_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/default_list_constructor_test.dart
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +14,7 @@
 }
 
 @reflectiveTest
-class DefaultListConstructorMismatch extends DriverResolutionTest
+class DefaultListConstructorMismatch extends PubPackageResolutionTest
     with WithNullSafetyMixin {
   test_inferredType() async {
     await assertErrorsInCode('''
diff --git a/pkg/analyzer/test/src/diagnostics/default_value_in_function_type_test.dart b/pkg/analyzer/test/src/diagnostics/default_value_in_function_type_test.dart
index 6356791..19c3909 100644
--- a/pkg/analyzer/test/src/diagnostics/default_value_in_function_type_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/default_value_in_function_type_test.dart
@@ -6,7 +6,7 @@
 import 'package:analyzer/src/generated/parser.dart' show ParserErrorCode;
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +15,7 @@
 }
 
 @reflectiveTest
-class DefaultValueInFunctionTypeTest extends DriverResolutionTest {
+class DefaultValueInFunctionTypeTest extends PubPackageResolutionTest {
   test_new_named() async {
     await assertErrorsInCode('''
 typedef F = int Function({Map<String, String> m: const {}});
diff --git a/pkg/analyzer/test/src/diagnostics/default_value_in_function_typed_parameter_test.dart b/pkg/analyzer/test/src/diagnostics/default_value_in_function_typed_parameter_test.dart
index d75a555..746f479 100644
--- a/pkg/analyzer/test/src/diagnostics/default_value_in_function_typed_parameter_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/default_value_in_function_typed_parameter_test.dart
@@ -6,7 +6,7 @@
 import 'package:analyzer/src/generated/parser.dart' show ParserErrorCode;
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +15,8 @@
 }
 
 @reflectiveTest
-class DefaultValueInFunctionTypedParameterTest extends DriverResolutionTest {
+class DefaultValueInFunctionTypedParameterTest
+    extends PubPackageResolutionTest {
   test_named() async {
     await assertErrorsInCode('''
 f(g({p: null})) {}
diff --git a/pkg/analyzer/test/src/diagnostics/default_value_in_redirecting_factory_constructor_test.dart b/pkg/analyzer/test/src/diagnostics/default_value_in_redirecting_factory_constructor_test.dart
index 34f2171..f2e9e0c 100644
--- a/pkg/analyzer/test/src/diagnostics/default_value_in_redirecting_factory_constructor_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/default_value_in_redirecting_factory_constructor_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +15,7 @@
 
 @reflectiveTest
 class DefaultValueInRedirectingFactoryConstructorTest
-    extends DriverResolutionTest {
+    extends PubPackageResolutionTest {
   test_default_value() async {
     await assertErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/default_value_on_required_parameter_test.dart b/pkg/analyzer/test/src/diagnostics/default_value_on_required_parameter_test.dart
index ac7337c..d191807 100644
--- a/pkg/analyzer/test/src/diagnostics/default_value_on_required_parameter_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/default_value_on_required_parameter_test.dart
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +14,7 @@
 }
 
 @reflectiveTest
-class DefaultValueOnRequiredParameterTest extends DriverResolutionTest
+class DefaultValueOnRequiredParameterTest extends PubPackageResolutionTest
     with WithNullSafetyMixin {
   test_function_notRequired_default() async {
     await assertNoErrorsInCode('''
diff --git a/pkg/analyzer/test/src/diagnostics/deferred_import_of_extension_test.dart b/pkg/analyzer/test/src/diagnostics/deferred_import_of_extension_test.dart
index 89e92d4..2475e1e 100644
--- a/pkg/analyzer/test/src/diagnostics/deferred_import_of_extension_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/deferred_import_of_extension_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,9 +14,9 @@
 }
 
 @reflectiveTest
-class DeferredImportOfExtensionTest extends DriverResolutionTest {
+class DeferredImportOfExtensionTest extends PubPackageResolutionTest {
   test_deferredImport_withExtensions() {
-    newFile('/test/lib/foo.dart', content: '''
+    newFile('$testPackageLibPath/foo.dart', content: '''
 extension E on C {}
 class C {}
 ''');
@@ -32,7 +32,7 @@
   }
 
   test_deferredImport_withHiddenExtensions() {
-    newFile('/test/lib/foo.dart', content: '''
+    newFile('$testPackageLibPath/foo.dart', content: '''
 extension E on C {}
 class C {}
 ''');
@@ -46,7 +46,7 @@
   }
 
   test_deferredImport_withoutExtensions() {
-    newFile('/test/lib/foo.dart', content: '''
+    newFile('$testPackageLibPath/foo.dart', content: '''
 class C {}
 ''');
     assertNoErrorsInCode('''
@@ -59,7 +59,7 @@
   }
 
   test_deferredImport_withShownNonExtensions() {
-    newFile('/test/lib/foo.dart', content: '''
+    newFile('$testPackageLibPath/foo.dart', content: '''
 extension E on C {}
 class C {}
 ''');
diff --git a/pkg/analyzer/test/src/diagnostics/definitely_unassigned_late_local_variable_test.dart b/pkg/analyzer/test/src/diagnostics/definitely_unassigned_late_local_variable_test.dart
index 792e766..61ee6ec 100644
--- a/pkg/analyzer/test/src/diagnostics/definitely_unassigned_late_local_variable_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/definitely_unassigned_late_local_variable_test.dart
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +14,7 @@
 }
 
 @reflectiveTest
-class DefinitelyUnassignedLateLocalVariableTest extends DriverResolutionTest
+class DefinitelyUnassignedLateLocalVariableTest extends PubPackageResolutionTest
     with WithNullSafetyMixin {
   CompileTimeErrorCode get _errorCode {
     return CompileTimeErrorCode.DEFINITELY_UNASSIGNED_LATE_LOCAL_VARIABLE;
diff --git a/pkg/analyzer/test/src/diagnostics/deprecated_extends_function_test.dart b/pkg/analyzer/test/src/diagnostics/deprecated_extends_function_test.dart
index ed17e5b..2e97f25 100644
--- a/pkg/analyzer/test/src/diagnostics/deprecated_extends_function_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/deprecated_extends_function_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/dart/error/hint_codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class DeprecatedExtendsFunctionTest extends DriverResolutionTest {
+class DeprecatedExtendsFunctionTest extends PubPackageResolutionTest {
   test_core() async {
     await assertErrorsInCode('''
 class A extends Function {}
diff --git a/pkg/analyzer/test/src/diagnostics/deprecated_function_class_declaration_test.dart b/pkg/analyzer/test/src/diagnostics/deprecated_function_class_declaration_test.dart
index 66dc44d..6221d24 100644
--- a/pkg/analyzer/test/src/diagnostics/deprecated_function_class_declaration_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/deprecated_function_class_declaration_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/dart/error/hint_codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class DeprecatedFunctionClassDeclarationTest extends DriverResolutionTest {
+class DeprecatedFunctionClassDeclarationTest extends PubPackageResolutionTest {
   test_declaration() async {
     await assertErrorsInCode('''
 class Function {}
diff --git a/pkg/analyzer/test/src/diagnostics/deprecated_mixin_function_test.dart b/pkg/analyzer/test/src/diagnostics/deprecated_mixin_function_test.dart
index dd0b1b9..e6fd57e 100644
--- a/pkg/analyzer/test/src/diagnostics/deprecated_mixin_function_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/deprecated_mixin_function_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/dart/error/hint_codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class DeprecatedMixinFunctionTest extends DriverResolutionTest {
+class DeprecatedMixinFunctionTest extends PubPackageResolutionTest {
   test_core() async {
     await assertErrorsInCode('''
 class A extends Object with Function {}
diff --git a/pkg/analyzer/test/src/diagnostics/division_optimization_test.dart b/pkg/analyzer/test/src/diagnostics/division_optimization_test.dart
index f0f3141..ff371bc 100644
--- a/pkg/analyzer/test/src/diagnostics/division_optimization_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/division_optimization_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class DivisionOptimizationTest extends DriverResolutionTest {
+class DivisionOptimizationTest extends PubPackageResolutionTest {
   test_divisionOptimization() async {
     await assertNoErrorsInCode(r'''
 f(int x, int y) {
diff --git a/pkg/analyzer/test/src/diagnostics/duplicate_definition_test.dart b/pkg/analyzer/test/src/diagnostics/duplicate_definition_test.dart
index 5c48482..1891285 100644
--- a/pkg/analyzer/test/src/diagnostics/duplicate_definition_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/duplicate_definition_test.dart
@@ -7,7 +7,7 @@
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import '../../generated/test_support.dart';
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -19,7 +19,7 @@
 }
 
 @reflectiveTest
-class DuplicateDefinitionClassTest extends DriverResolutionTest {
+class DuplicateDefinitionClassTest extends PubPackageResolutionTest {
   test_instance_field_field() async {
     await assertErrorsInCode(r'''
 class C {
@@ -327,7 +327,7 @@
 }
 
 @reflectiveTest
-class DuplicateDefinitionExtensionTest extends DriverResolutionTest {
+class DuplicateDefinitionExtensionTest extends PubPackageResolutionTest {
   test_extendedType_instance() async {
     await assertNoErrorsInCode('''
 class A {
@@ -637,7 +637,7 @@
 }
 
 @reflectiveTest
-class DuplicateDefinitionMixinTest extends DriverResolutionTest {
+class DuplicateDefinitionMixinTest extends PubPackageResolutionTest {
   test_instance_field_field() async {
     await assertErrorsInCode(r'''
 mixin M {
@@ -936,7 +936,7 @@
 }
 
 @reflectiveTest
-class DuplicateDefinitionTest extends DriverResolutionTest {
+class DuplicateDefinitionTest extends PubPackageResolutionTest {
   test_catch() async {
     await assertErrorsInCode(r'''
 main() {
@@ -1158,8 +1158,8 @@
   }
 
   test_unitMembers_part_library() async {
-    var libPath = convertPath('/test/lib/lib.dart');
-    var aPath = convertPath('/test/lib/a.dart');
+    var libPath = convertPath('$testPackageLibPath/lib.dart');
+    var aPath = convertPath('$testPackageLibPath/a.dart');
     newFile(libPath, content: '''
 part 'a.dart';
 
@@ -1182,9 +1182,9 @@
   }
 
   test_unitMembers_part_part() async {
-    var libPath = convertPath('/test/lib/lib.dart');
-    var aPath = convertPath('/test/lib/a.dart');
-    var bPath = convertPath('/test/lib/b.dart');
+    var libPath = convertPath('$testPackageLibPath/lib.dart');
+    var aPath = convertPath('$testPackageLibPath/a.dart');
+    var bPath = convertPath('$testPackageLibPath/b.dart');
     newFile(libPath, content: '''
 part 'a.dart';
 part 'b.dart';
diff --git a/pkg/analyzer/test/src/diagnostics/duplicate_hidden_name_test.dart b/pkg/analyzer/test/src/diagnostics/duplicate_hidden_name_test.dart
index aadefba..ab9c46d 100644
--- a/pkg/analyzer/test/src/diagnostics/duplicate_hidden_name_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/duplicate_hidden_name_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/dart/error/hint_codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,9 +14,9 @@
 }
 
 @reflectiveTest
-class DuplicateHiddenNameTest extends DriverResolutionTest {
+class DuplicateHiddenNameTest extends PubPackageResolutionTest {
   test_hidden() async {
-    newFile('/test/lib/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 class A {}
 class B {}
 ''');
diff --git a/pkg/analyzer/test/src/diagnostics/duplicate_import_test.dart b/pkg/analyzer/test/src/diagnostics/duplicate_import_test.dart
index 6057e3b..963db0e 100644
--- a/pkg/analyzer/test/src/diagnostics/duplicate_import_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/duplicate_import_test.dart
@@ -6,7 +6,7 @@
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import '../../generated/test_support.dart';
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,106 +15,106 @@
 }
 
 @reflectiveTest
-class DuplicateImportTest extends DriverResolutionTest {
+class DuplicateImportTest extends PubPackageResolutionTest {
   test_duplicateImport() async {
-    newFile('/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 library lib1;
 class A {}''');
 
-    newFile('/lib2.dart', content: r'''
+    newFile('$testPackageLibPath/lib2.dart', content: r'''
 library L;
 import 'lib1.dart';
 import 'lib1.dart';
 A a;''');
 
-    await _resolveFile('/lib1.dart');
-    await _resolveFile('/lib2.dart', [
+    await _resolveFile('$testPackageLibPath/lib1.dart');
+    await _resolveFile('$testPackageLibPath/lib2.dart', [
       error(HintCode.DUPLICATE_IMPORT, 38, 11),
     ]);
   }
 
   test_importsHaveIdenticalShowHide() async {
-    newFile('/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 library lib1;
 class A {}
 class B {}''');
 
-    newFile('/lib2.dart', content: r'''
+    newFile('$testPackageLibPath/lib2.dart', content: r'''
 library L;
 import 'lib1.dart' as M show A hide B;
 import 'lib1.dart' as M show A hide B;
 M.A a;''');
 
-    await _resolveFile('/lib1.dart');
-    await _resolveFile('/lib2.dart', [
+    await _resolveFile('$testPackageLibPath/lib1.dart');
+    await _resolveFile('$testPackageLibPath/lib2.dart', [
       error(HintCode.DUPLICATE_IMPORT, 57, 11),
     ]);
   }
 
   test_oneImportHasHide() async {
-    newFile('/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 library lib1;
 class A {}
 class B {}''');
 
-    newFile('/lib2.dart', content: r'''
+    newFile('$testPackageLibPath/lib2.dart', content: r'''
 library L;
 import 'lib1.dart';
 import 'lib1.dart' hide A;
 A a;
 B b;''');
 
-    await _resolveFile('/lib1.dart');
-    await _resolveFile('/lib2.dart');
+    await _resolveFile('$testPackageLibPath/lib1.dart');
+    await _resolveFile('$testPackageLibPath/lib2.dart');
   }
 
   test_oneImportHasShow() async {
-    newFile('/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 library lib1;
 class A {}
 class B {}''');
 
-    newFile('/lib2.dart', content: r'''
+    newFile('$testPackageLibPath/lib2.dart', content: r'''
 library L;
 import 'lib1.dart';
 import 'lib1.dart' show A;
 A a;
 B b;''');
 
-    await _resolveFile('/lib1.dart');
-    await _resolveFile('/lib2.dart');
+    await _resolveFile('$testPackageLibPath/lib1.dart');
+    await _resolveFile('$testPackageLibPath/lib2.dart');
   }
 
   test_oneImportUsesAs() async {
-    newFile('/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 library lib1;
 class A {}''');
 
-    newFile('/lib2.dart', content: r'''
+    newFile('$testPackageLibPath/lib2.dart', content: r'''
 library L;
 import 'lib1.dart';
 import 'lib1.dart' as one;
 A a;
 one.A a2;''');
 
-    await _resolveFile('/lib1.dart');
-    await _resolveFile('/lib2.dart');
+    await _resolveFile('$testPackageLibPath/lib1.dart');
+    await _resolveFile('$testPackageLibPath/lib2.dart');
   }
 
   test_twoDuplicateImports() async {
-    newFile('/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 library lib1;
 class A {}''');
 
-    newFile('/lib2.dart', content: r'''
+    newFile('$testPackageLibPath/lib2.dart', content: r'''
 library L;
 import 'lib1.dart';
 import 'lib1.dart';
 import 'lib1.dart';
 A a;''');
 
-    await _resolveFile('/lib1.dart');
-    await _resolveFile('/lib2.dart', [
+    await _resolveFile('$testPackageLibPath/lib1.dart');
+    await _resolveFile('$testPackageLibPath/lib2.dart', [
       error(HintCode.DUPLICATE_IMPORT, 38, 11),
       error(HintCode.DUPLICATE_IMPORT, 58, 11),
     ]);
diff --git a/pkg/analyzer/test/src/diagnostics/duplicate_named_argument_test.dart b/pkg/analyzer/test/src/diagnostics/duplicate_named_argument_test.dart
index 6bde893..3fceecb 100644
--- a/pkg/analyzer/test/src/diagnostics/duplicate_named_argument_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/duplicate_named_argument_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class DuplicateNamedArgumentTest extends DriverResolutionTest {
+class DuplicateNamedArgumentTest extends PubPackageResolutionTest {
   test_duplicate_named_argument() async {
     await assertErrorsInCode(r'''
 f({a, b}) {}
diff --git a/pkg/analyzer/test/src/diagnostics/duplicate_part_test.dart b/pkg/analyzer/test/src/diagnostics/duplicate_part_test.dart
index bd96a49..64ed945 100644
--- a/pkg/analyzer/test/src/diagnostics/duplicate_part_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/duplicate_part_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,12 +14,12 @@
 }
 
 @reflectiveTest
-class DuplicatePartTest extends DriverResolutionTest {
+class DuplicatePartTest extends PubPackageResolutionTest {
   test_no_duplicates() async {
-    newFile('/test/lib/part1.dart', content: '''
+    newFile('$testPackageLibPath/part1.dart', content: '''
 part of lib;
 ''');
-    newFile('/test/lib/part2.dart', content: '''
+    newFile('$testPackageLibPath/part2.dart', content: '''
 part of lib;
 ''');
     await assertNoErrorsInCode(r'''
@@ -30,7 +30,7 @@
   }
 
   test_sameSource() async {
-    newFile('/test/lib/part.dart', content: 'part of lib;');
+    newFile('$testPackageLibPath/part.dart', content: 'part of lib;');
     await assertErrorsInCode(r'''
 library lib;
 part 'part.dart';
@@ -41,7 +41,7 @@
   }
 
   test_sameUri() async {
-    newFile('/test/lib/part.dart', content: 'part of lib;');
+    newFile('$testPackageLibPath/part.dart', content: 'part of lib;');
     await assertErrorsInCode(r'''
 library lib;
 part 'part.dart';
diff --git a/pkg/analyzer/test/src/diagnostics/duplicate_shown_name_test.dart b/pkg/analyzer/test/src/diagnostics/duplicate_shown_name_test.dart
index b921499..e1e0cde 100644
--- a/pkg/analyzer/test/src/diagnostics/duplicate_shown_name_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/duplicate_shown_name_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/dart/error/hint_codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,9 +14,9 @@
 }
 
 @reflectiveTest
-class DuplicateShownNameTest extends DriverResolutionTest {
+class DuplicateShownNameTest extends PubPackageResolutionTest {
   test_hidden() async {
-    newFile('/test/lib/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 class A {}
 class B {}
 ''');
diff --git a/pkg/analyzer/test/src/diagnostics/enum_constant_same_name_as_enclosing.dart b/pkg/analyzer/test/src/diagnostics/enum_constant_same_name_as_enclosing.dart
index e0b57f8..1e17a30 100644
--- a/pkg/analyzer/test/src/diagnostics/enum_constant_same_name_as_enclosing.dart
+++ b/pkg/analyzer/test/src/diagnostics/enum_constant_same_name_as_enclosing.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class EnumConstantSameNameAsEnclosingTest extends DriverResolutionTest {
+class EnumConstantSameNameAsEnclosingTest extends PubPackageResolutionTest {
   test_name() async {
     await assertErrorsInCode(r'''
 enum E {
diff --git a/pkg/analyzer/test/src/diagnostics/equal_elements_in_const_set_test.dart b/pkg/analyzer/test/src/diagnostics/equal_elements_in_const_set_test.dart
index eeb763d..8b43155 100644
--- a/pkg/analyzer/test/src/diagnostics/equal_elements_in_const_set_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/equal_elements_in_const_set_test.dart
@@ -8,7 +8,7 @@
 import 'package:analyzer/src/generated/engine.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -18,13 +18,13 @@
 }
 
 @reflectiveTest
-class EqualElementsInConstSetTest extends DriverResolutionTest {
+class EqualElementsInConstSetTest extends PubPackageResolutionTest {
   test_const_entry() async {
     await assertErrorsInCode('''
 var c = const {1, 2, 1};
 ''', [
       error(CompileTimeErrorCode.EQUAL_ELEMENTS_IN_CONST_SET, 21, 1,
-          contextMessages: [message('/test/lib/test.dart', 15, 1)]),
+          contextMessages: [message('$testPackageLibPath/test.dart', 15, 1)]),
     ]);
   }
 
@@ -36,7 +36,9 @@
         analysisOptions.experimentStatus.constant_update_2018
             ? [
                 error(CompileTimeErrorCode.EQUAL_ELEMENTS_IN_CONST_SET, 36, 1,
-                    contextMessages: [message('/test/lib/test.dart', 15, 1)]),
+                    contextMessages: [
+                      message('$testPackageLibPath/test.dart', 15, 1)
+                    ]),
               ]
             : [
                 error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 18, 19),
@@ -99,7 +101,9 @@
         analysisOptions.experimentStatus.constant_update_2018
             ? [
                 error(CompileTimeErrorCode.EQUAL_ELEMENTS_IN_CONST_SET, 29, 1,
-                    contextMessages: [message('/test/lib/test.dart', 15, 1)]),
+                    contextMessages: [
+                      message('$testPackageLibPath/test.dart', 15, 1)
+                    ]),
               ]
             : [
                 error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 18, 12),
@@ -115,7 +119,7 @@
 var c = const {const A<int>(), const A<int>()};
 ''', [
       error(CompileTimeErrorCode.EQUAL_ELEMENTS_IN_CONST_SET, 60, 14,
-          contextMessages: [message('/test/lib/test.dart', 44, 14)]),
+          contextMessages: [message('$testPackageLibPath/test.dart', 44, 14)]),
     ]);
   }
 
@@ -150,7 +154,9 @@
         analysisOptions.experimentStatus.constant_update_2018
             ? [
                 error(CompileTimeErrorCode.EQUAL_ELEMENTS_IN_CONST_SET, 21, 3,
-                    contextMessages: [message('/test/lib/test.dart', 15, 1)]),
+                    contextMessages: [
+                      message('$testPackageLibPath/test.dart', 15, 1)
+                    ]),
               ]
             : [
                 error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 18, 6),
diff --git a/pkg/analyzer/test/src/diagnostics/equal_elements_in_set_test.dart b/pkg/analyzer/test/src/diagnostics/equal_elements_in_set_test.dart
index 261e8bf..cf24d77 100644
--- a/pkg/analyzer/test/src/diagnostics/equal_elements_in_set_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/equal_elements_in_set_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/dart/error/hint_codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class EqualElementsInSetTest extends DriverResolutionTest {
+class EqualElementsInSetTest extends PubPackageResolutionTest {
   test_constant_constant() async {
     await assertErrorsInCode('''
 const a = 1;
diff --git a/pkg/analyzer/test/src/diagnostics/equal_keys_in_const_map_test.dart b/pkg/analyzer/test/src/diagnostics/equal_keys_in_const_map_test.dart
index 7334278..a9fde6b 100644
--- a/pkg/analyzer/test/src/diagnostics/equal_keys_in_const_map_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/equal_keys_in_const_map_test.dart
@@ -8,7 +8,7 @@
 import 'package:analyzer/src/generated/engine.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -18,13 +18,13 @@
 }
 
 @reflectiveTest
-class EqualKeysInConstMapTest extends DriverResolutionTest {
+class EqualKeysInConstMapTest extends PubPackageResolutionTest {
   test_const_entry() async {
     await assertErrorsInCode('''
 var c = const {1: null, 2: null, 1: null};
 ''', [
       error(CompileTimeErrorCode.EQUAL_KEYS_IN_CONST_MAP, 33, 1,
-          contextMessages: [message('/test/lib/test.dart', 15, 1)]),
+          contextMessages: [message('$testPackageLibPath/test.dart', 15, 1)]),
     ]);
   }
 
@@ -36,7 +36,9 @@
         analysisOptions.experimentStatus.constant_update_2018
             ? [
                 error(CompileTimeErrorCode.EQUAL_KEYS_IN_CONST_MAP, 48, 1,
-                    contextMessages: [message('/test/lib/test.dart', 15, 1)]),
+                    contextMessages: [
+                      message('$testPackageLibPath/test.dart', 15, 1)
+                    ]),
               ]
             : [
                 error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 24, 31),
@@ -99,7 +101,9 @@
         analysisOptions.experimentStatus.constant_update_2018
             ? [
                 error(CompileTimeErrorCode.EQUAL_KEYS_IN_CONST_MAP, 35, 1,
-                    contextMessages: [message('/test/lib/test.dart', 15, 1)]),
+                    contextMessages: [
+                      message('$testPackageLibPath/test.dart', 15, 1)
+                    ]),
               ]
             : [
                 error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 24, 18),
@@ -115,7 +119,7 @@
 var c = const {const A<int>(): null, const A<int>(): null};
 ''', [
       error(CompileTimeErrorCode.EQUAL_KEYS_IN_CONST_MAP, 66, 14,
-          contextMessages: [message('/test/lib/test.dart', 44, 14)]),
+          contextMessages: [message('$testPackageLibPath/test.dart', 44, 14)]),
     ]);
   }
 
@@ -150,7 +154,9 @@
         analysisOptions.experimentStatus.constant_update_2018
             ? [
                 error(CompileTimeErrorCode.EQUAL_KEYS_IN_CONST_MAP, 27, 9,
-                    contextMessages: [message('/test/lib/test.dart', 15, 1)]),
+                    contextMessages: [
+                      message('$testPackageLibPath/test.dart', 15, 1)
+                    ]),
               ]
             : [
                 error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 24, 12),
diff --git a/pkg/analyzer/test/src/diagnostics/equal_keys_in_map_test.dart b/pkg/analyzer/test/src/diagnostics/equal_keys_in_map_test.dart
index a546d1b..1763922 100644
--- a/pkg/analyzer/test/src/diagnostics/equal_keys_in_map_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/equal_keys_in_map_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/dart/error/hint_codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class EqualKeysInMapTest extends DriverResolutionTest {
+class EqualKeysInMapTest extends PubPackageResolutionTest {
   test_constant_constant() async {
     await assertErrorsInCode('''
 const a = 1;
diff --git a/pkg/analyzer/test/src/diagnostics/expected_one_list_type_arguments_test.dart b/pkg/analyzer/test/src/diagnostics/expected_one_list_type_arguments_test.dart
index c478806..5a0f4a6 100644
--- a/pkg/analyzer/test/src/diagnostics/expected_one_list_type_arguments_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/expected_one_list_type_arguments_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class ExpectedOneListTypeArgumentsTest extends DriverResolutionTest {
+class ExpectedOneListTypeArgumentsTest extends PubPackageResolutionTest {
   test_one_type_argument() async {
     await assertNoErrorsInCode(r'''
 main() {
diff --git a/pkg/analyzer/test/src/diagnostics/expected_one_set_type_arguments_test.dart b/pkg/analyzer/test/src/diagnostics/expected_one_set_type_arguments_test.dart
index 2192c2b..30f9072 100644
--- a/pkg/analyzer/test/src/diagnostics/expected_one_set_type_arguments_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/expected_one_set_type_arguments_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class ExpectedOneSetTypeArgumentsTest extends DriverResolutionTest {
+class ExpectedOneSetTypeArgumentsTest extends PubPackageResolutionTest {
   test_multiple_type_arguments() async {
     await assertErrorsInCode(r'''
 main() {
diff --git a/pkg/analyzer/test/src/diagnostics/expected_two_map_type_arguments_test.dart b/pkg/analyzer/test/src/diagnostics/expected_two_map_type_arguments_test.dart
index 5c1a840..e340953 100644
--- a/pkg/analyzer/test/src/diagnostics/expected_two_map_type_arguments_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/expected_two_map_type_arguments_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class ExpectedTwoMapTypeArgumentsTest extends DriverResolutionTest {
+class ExpectedTwoMapTypeArgumentsTest extends PubPackageResolutionTest {
   test_three_type_arguments_ambiguous() async {
     // TODO(brianwilkerson) We probably need a new error code for "expected
     //  either one or two type arguments" to handle the ambiguous case.
diff --git a/pkg/analyzer/test/src/diagnostics/export_internal_library_test.dart b/pkg/analyzer/test/src/diagnostics/export_internal_library_test.dart
index 6d5e461..e4a7206 100644
--- a/pkg/analyzer/test/src/diagnostics/export_internal_library_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/export_internal_library_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,12 +14,12 @@
 }
 
 @reflectiveTest
-class ExportInternalLibraryTest extends DriverResolutionTest {
+class ExportInternalLibraryTest extends PubPackageResolutionTest {
   test_export_internal_library() async {
     await assertErrorsInCode('''
-export 'dart:_interceptors';
+export 'dart:_internal';
 ''', [
-      error(CompileTimeErrorCode.EXPORT_INTERNAL_LIBRARY, 0, 28),
+      error(CompileTimeErrorCode.EXPORT_INTERNAL_LIBRARY, 0, 24),
     ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/export_legacy_symbol_test.dart b/pkg/analyzer/test/src/diagnostics/export_legacy_symbol_test.dart
index 833cdff..2d1fa89 100644
--- a/pkg/analyzer/test/src/diagnostics/export_legacy_symbol_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/export_legacy_symbol_test.dart
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +14,7 @@
 }
 
 @reflectiveTest
-class ExportLegacySymbolTest extends DriverResolutionTest
+class ExportLegacySymbolTest extends PubPackageResolutionTest
     with WithNullSafetyMixin {
   test_exportDartAsync() async {
     await assertNoErrorsInCode(r'''
@@ -30,7 +29,7 @@
   }
 
   test_exportOptedIn() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {}
 ''');
     await assertNoErrorsInCode(r'''
@@ -39,11 +38,11 @@
   }
 
   test_exportOptedOut_exportOptedIn_hasLegacySymbol() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {}
 ''');
 
-    newFile('/test/lib/b.dart', content: r'''
+    newFile('$testPackageLibPath/b.dart', content: r'''
 // @dart = 2.5
 export 'a.dart';
 class B {}
@@ -57,11 +56,11 @@
   }
 
   test_exportOptedOut_exportOptedIn_hideLegacySymbol() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {}
 ''');
 
-    newFile('/test/lib/b.dart', content: r'''
+    newFile('$testPackageLibPath/b.dart', content: r'''
 // @dart = 2.5
 export 'a.dart';
 class B {}
@@ -73,7 +72,7 @@
   }
 
   test_exportOptedOut_hasLegacySymbol() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 // @dart = 2.5
 class A {}
 class B {}
diff --git a/pkg/analyzer/test/src/diagnostics/export_of_non_library_test.dart b/pkg/analyzer/test/src/diagnostics/export_of_non_library_test.dart
index 3080209..4c4ef49 100644
--- a/pkg/analyzer/test/src/diagnostics/export_of_non_library_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/export_of_non_library_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,9 +14,9 @@
 }
 
 @reflectiveTest
-class ExportOfNonLibraryTest extends DriverResolutionTest {
+class ExportOfNonLibraryTest extends PubPackageResolutionTest {
   test_export_of_non_library() async {
-    newFile("/test/lib/lib1.dart", content: '''
+    newFile('$testPackageLibPath/lib1.dart', content: '''
 part of lib;
 ''');
     await assertErrorsInCode(r'''
@@ -28,7 +28,7 @@
   }
 
   test_libraryDeclared() async {
-    newFile("/test/lib/lib1.dart", content: "library lib1;");
+    newFile('$testPackageLibPath/lib1.dart', content: "library lib1;");
     await assertNoErrorsInCode(r'''
 library L;
 export 'lib1.dart';
@@ -36,7 +36,7 @@
   }
 
   test_libraryNotDeclared() async {
-    newFile("/test/lib/lib1.dart");
+    newFile('$testPackageLibPath/lib1.dart');
     await assertNoErrorsInCode(r'''
 library L;
 export 'lib1.dart';
diff --git a/pkg/analyzer/test/src/diagnostics/expression_in_map_test.dart b/pkg/analyzer/test/src/diagnostics/expression_in_map_test.dart
index 0763073..56816da 100644
--- a/pkg/analyzer/test/src/diagnostics/expression_in_map_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/expression_in_map_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class ExpressionInMapTest extends DriverResolutionTest {
+class ExpressionInMapTest extends PubPackageResolutionTest {
   test_map() async {
     await assertErrorsInCode('''
 var m = <String, int>{'a', 'b' : 2};
diff --git a/pkg/analyzer/test/src/diagnostics/extends_deferred_class_test.dart b/pkg/analyzer/test/src/diagnostics/extends_deferred_class_test.dart
index c448fae..11c16ab 100644
--- a/pkg/analyzer/test/src/diagnostics/extends_deferred_class_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/extends_deferred_class_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,9 +14,9 @@
 }
 
 @reflectiveTest
-class ExtendsDeferredClassTest extends DriverResolutionTest {
+class ExtendsDeferredClassTest extends PubPackageResolutionTest {
   test_classTypeAlias() async {
-    newFile('/test/lib/lib1.dart', content: '''
+    newFile('$testPackageLibPath/lib1.dart', content: '''
 library lib1;
 class A {}
 ''');
@@ -31,7 +31,7 @@
   }
 
   test_extends_deferred_class() async {
-    newFile('/test/lib/lib1.dart', content: '''
+    newFile('$testPackageLibPath/lib1.dart', content: '''
 library lib1;
 class A {}
 ''');
diff --git a/pkg/analyzer/test/src/diagnostics/extends_disallowed_class_test.dart b/pkg/analyzer/test/src/diagnostics/extends_disallowed_class_test.dart
index 8f7c596..7102a8a 100644
--- a/pkg/analyzer/test/src/diagnostics/extends_disallowed_class_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/extends_disallowed_class_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class ExtendsDisallowedClassTest extends DriverResolutionTest {
+class ExtendsDisallowedClassTest extends PubPackageResolutionTest {
   test_class_bool() async {
     await assertErrorsInCode('''
 class A extends bool {}
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 d449861..2658ff5 100644
--- a/pkg/analyzer/test/src/diagnostics/extends_non_class_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/extends_non_class_test.dart
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,7 +15,7 @@
 }
 
 @reflectiveTest
-class ExtendsNonClassTest extends DriverResolutionTest {}
+class ExtendsNonClassTest extends PubPackageResolutionTest {}
 
 @reflectiveTest
 class ExtendsNonClassWithNullSafetyTest extends ExtendsNonClassTest
diff --git a/pkg/analyzer/test/src/diagnostics/extension_as_expression_test.dart b/pkg/analyzer/test/src/diagnostics/extension_as_expression_test.dart
index 17c8776..61d3e2c 100644
--- a/pkg/analyzer/test/src/diagnostics/extension_as_expression_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/extension_as_expression_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,9 +14,9 @@
 }
 
 @reflectiveTest
-class ExtensionAsExpressionTest extends DriverResolutionTest {
+class ExtensionAsExpressionTest extends PubPackageResolutionTest {
   test_prefixedIdentifier() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 extension E on int {}
 ''');
     await assertErrorsInCode('''
diff --git a/pkg/analyzer/test/src/diagnostics/extension_conflicting_static_and_instance_test.dart b/pkg/analyzer/test/src/diagnostics/extension_conflicting_static_and_instance_test.dart
index 12ad23a..d2581f7 100644
--- a/pkg/analyzer/test/src/diagnostics/extension_conflicting_static_and_instance_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/extension_conflicting_static_and_instance_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,8 @@
 }
 
 @reflectiveTest
-class ExtensionConflictingStaticAndInstanceTest extends DriverResolutionTest {
+class ExtensionConflictingStaticAndInstanceTest
+    extends PubPackageResolutionTest {
   CompileTimeErrorCode get _errorCode =>
       CompileTimeErrorCode.EXTENSION_CONFLICTING_STATIC_AND_INSTANCE;
 
diff --git a/pkg/analyzer/test/src/diagnostics/extension_declares_abstract_method_test.dart b/pkg/analyzer/test/src/diagnostics/extension_declares_abstract_method_test.dart
index b85a6d2..831f4b1 100644
--- a/pkg/analyzer/test/src/diagnostics/extension_declares_abstract_method_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/extension_declares_abstract_method_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/dart/error/syntactic_errors.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class ExtensionDeclaresAbstractMethodTest extends DriverResolutionTest {
+class ExtensionDeclaresAbstractMethodTest extends PubPackageResolutionTest {
   test_getter() async {
     await assertErrorsInCode('''
 extension E on String {
diff --git a/pkg/analyzer/test/src/diagnostics/extension_declares_constructor_test.dart b/pkg/analyzer/test/src/diagnostics/extension_declares_constructor_test.dart
index ac6219d..043d580 100644
--- a/pkg/analyzer/test/src/diagnostics/extension_declares_constructor_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/extension_declares_constructor_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/dart/error/syntactic_errors.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class ExtensionDeclaresConstructorTest extends DriverResolutionTest {
+class ExtensionDeclaresConstructorTest extends PubPackageResolutionTest {
   test_named() async {
     await assertErrorsInCode('''
 extension E on String {
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 967a0ce..ec4b005 100644
--- a/pkg/analyzer/test/src/diagnostics/extension_declares_field_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/extension_declares_field_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/dart/error/syntactic_errors.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class ExtensionDeclaresFieldTest extends DriverResolutionTest {
+class ExtensionDeclaresFieldTest extends PubPackageResolutionTest {
   test_multiple() async {
     await assertErrorsInCode('''
 extension E on String {
diff --git a/pkg/analyzer/test/src/diagnostics/extension_declares_member_of_object_test.dart b/pkg/analyzer/test/src/diagnostics/extension_declares_member_of_object_test.dart
index c959a54..76cd656 100644
--- a/pkg/analyzer/test/src/diagnostics/extension_declares_member_of_object_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/extension_declares_member_of_object_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class ExtensionDeclaresMemberOfObjectTest extends DriverResolutionTest {
+class ExtensionDeclaresMemberOfObjectTest extends PubPackageResolutionTest {
   test_instance_differentKind() async {
     await assertErrorsInCode('''
 extension E on String {
diff --git a/pkg/analyzer/test/src/diagnostics/extension_override_access_to_static_member_test.dart b/pkg/analyzer/test/src/diagnostics/extension_override_access_to_static_member_test.dart
index 735a092..9b46e54 100644
--- a/pkg/analyzer/test/src/diagnostics/extension_override_access_to_static_member_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/extension_override_access_to_static_member_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,8 @@
 }
 
 @reflectiveTest
-class ExtensionOverrideAccessToStaticMemberTest extends DriverResolutionTest {
+class ExtensionOverrideAccessToStaticMemberTest
+    extends PubPackageResolutionTest {
   test_call() async {
     await assertErrorsInCode('''
 extension E on int {
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 e553247..6ee8f7b 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
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -17,7 +16,8 @@
 }
 
 @reflectiveTest
-class ExtensionOverrideArgumentNotAssignableTest extends DriverResolutionTest {
+class ExtensionOverrideArgumentNotAssignableTest
+    extends PubPackageResolutionTest {
   test_subtype() async {
     await assertNoErrorsInCode('''
 class A {}
@@ -64,7 +64,7 @@
 
 @reflectiveTest
 class ExtensionOverrideArgumentNotAssignableWithNullSafetyTest
-    extends DriverResolutionTest with WithNullSafetyMixin {
+    extends PubPackageResolutionTest with WithNullSafetyMixin {
   test_override_onNonNullable() async {
     await assertErrorsInCode(r'''
 extension E on String {
diff --git a/pkg/analyzer/test/src/diagnostics/extension_override_with_cascade_test.dart b/pkg/analyzer/test/src/diagnostics/extension_override_with_cascade_test.dart
index dfa1c58..31888e1 100644
--- a/pkg/analyzer/test/src/diagnostics/extension_override_with_cascade_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/extension_override_with_cascade_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class ExtensionOverrideWithCascadeTest extends DriverResolutionTest {
+class ExtensionOverrideWithCascadeTest extends PubPackageResolutionTest {
   test_getter() async {
     await assertErrorsInCode('''
 extension E on int {
diff --git a/pkg/analyzer/test/src/diagnostics/extension_override_without_access_test.dart b/pkg/analyzer/test/src/diagnostics/extension_override_without_access_test.dart
index 21a9c6d..a0edc8f 100644
--- a/pkg/analyzer/test/src/diagnostics/extension_override_without_access_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/extension_override_without_access_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class ExtensionOverrideWithoutAccessTest extends DriverResolutionTest {
+class ExtensionOverrideWithoutAccessTest extends PubPackageResolutionTest {
   test_binaryExpression() async {
     await assertNoErrorsInCode('''
 class C {}
diff --git a/pkg/analyzer/test/src/diagnostics/extra_annotation_on_struct_field_test.dart b/pkg/analyzer/test/src/diagnostics/extra_annotation_on_struct_field_test.dart
index 4110fd5..11f9c6c 100644
--- a/pkg/analyzer/test/src/diagnostics/extra_annotation_on_struct_field_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/extra_annotation_on_struct_field_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/dart/error/ffi_code.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class ExtraAnnotationOnStructFieldTest extends DriverResolutionTest {
+class ExtraAnnotationOnStructFieldTest extends PubPackageResolutionTest {
   test_one() async {
     await assertNoErrorsInCode(r'''
 import 'dart:ffi';
diff --git a/pkg/analyzer/test/src/diagnostics/extra_positional_arguments_test.dart b/pkg/analyzer/test/src/diagnostics/extra_positional_arguments_test.dart
index 991bdd9..8bb30fb 100644
--- a/pkg/analyzer/test/src/diagnostics/extra_positional_arguments_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/extra_positional_arguments_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +15,8 @@
 }
 
 @reflectiveTest
-class ExtraPositionalArgumentsCouldBeNamedTest extends DriverResolutionTest {
+class ExtraPositionalArgumentsCouldBeNamedTest
+    extends PubPackageResolutionTest {
   test_constConstructor() async {
     await assertErrorsInCode(r'''
 class A {
@@ -69,7 +70,7 @@
 }
 
 @reflectiveTest
-class ExtraPositionalArgumentsTest extends DriverResolutionTest {
+class ExtraPositionalArgumentsTest extends PubPackageResolutionTest {
   test_constConstructor() async {
     await assertErrorsInCode(r'''
 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 0268520..da75f22 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
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/dart/error/ffi_code.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class FieldInStructWithInitializerTest extends DriverResolutionTest {
+class FieldInStructWithInitializerTest extends PubPackageResolutionTest {
   test_instance_withInitializer() async {
     await assertErrorsInCode(r'''
 import 'dart:ffi';
diff --git a/pkg/analyzer/test/src/diagnostics/field_initialized_by_multiple_initializers_test.dart b/pkg/analyzer/test/src/diagnostics/field_initialized_by_multiple_initializers_test.dart
index cc38433..6744663 100644
--- a/pkg/analyzer/test/src/diagnostics/field_initialized_by_multiple_initializers_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/field_initialized_by_multiple_initializers_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,8 @@
 }
 
 @reflectiveTest
-class FinalInitializedByMultipleInitializersTest extends DriverResolutionTest {
+class FinalInitializedByMultipleInitializersTest
+    extends PubPackageResolutionTest {
   static const _errorCode =
       CompileTimeErrorCode.FIELD_INITIALIZED_BY_MULTIPLE_INITIALIZERS;
 
diff --git a/pkg/analyzer/test/src/diagnostics/field_initialized_in_initializer_and_declaration_test.dart b/pkg/analyzer/test/src/diagnostics/field_initialized_in_initializer_and_declaration_test.dart
index 45842d2..63a379d 100644
--- a/pkg/analyzer/test/src/diagnostics/field_initialized_in_initializer_and_declaration_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/field_initialized_in_initializer_and_declaration_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +15,7 @@
 
 @reflectiveTest
 class FieldInitializedInInitializerAndDeclarationTest
-    extends DriverResolutionTest {
+    extends PubPackageResolutionTest {
   test_both() async {
     await assertErrorsInCode('''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/field_initialized_in_parameter_and_initializer_test.dart b/pkg/analyzer/test/src/diagnostics/field_initialized_in_parameter_and_initializer_test.dart
index b2c651c..1de0aff 100644
--- a/pkg/analyzer/test/src/diagnostics/field_initialized_in_parameter_and_initializer_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/field_initialized_in_parameter_and_initializer_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +15,7 @@
 
 @reflectiveTest
 class FinalInitializedInParameterAndInitializerTest
-    extends DriverResolutionTest {
+    extends PubPackageResolutionTest {
   test_initializingFormal_initializer() async {
     await assertErrorsInCode(r'''
 class A {
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 6368edb..1bbd96b 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
@@ -6,7 +6,7 @@
 import 'package:analyzer/src/generated/parser.dart' show ParserErrorCode;
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +15,7 @@
 }
 
 @reflectiveTest
-class FieldInitializerFactoryConstructorTest extends DriverResolutionTest {
+class FieldInitializerFactoryConstructorTest extends PubPackageResolutionTest {
   test_fieldFormalParameter() async {
     await assertErrorsInCode(r'''
 class A {
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 d0a3c36..f1e7575 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
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/dart/error/ffi_code.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class FieldInitializerInStructTest extends DriverResolutionTest {
+class FieldInitializerInStructTest extends PubPackageResolutionTest {
   test_fieldInitializer() async {
     await assertErrorsInCode('''
 import 'dart:ffi';
diff --git a/pkg/analyzer/test/src/diagnostics/field_initializer_not_assignable_test.dart b/pkg/analyzer/test/src/diagnostics/field_initializer_not_assignable_test.dart
index f71ba45..2667077 100644
--- a/pkg/analyzer/test/src/diagnostics/field_initializer_not_assignable_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/field_initializer_not_assignable_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class FieldInitializerNotAssignableTest extends DriverResolutionTest {
+class FieldInitializerNotAssignableTest extends PubPackageResolutionTest {
   test_unrelated() async {
     await assertErrorsInCode('''
 class A {
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 8c5a955..6e2ce5f 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
@@ -6,7 +6,7 @@
 import 'package:analyzer/src/generated/parser.dart' show ParserErrorCode;
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +15,7 @@
 }
 
 @reflectiveTest
-class FieldInitializerOutsideConstructorTest extends DriverResolutionTest {
+class FieldInitializerOutsideConstructorTest extends PubPackageResolutionTest {
   test_closure() async {
     await assertErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/field_initializer_redirecting_constructor_test.dart b/pkg/analyzer/test/src/diagnostics/field_initializer_redirecting_constructor_test.dart
index 9a11dde..1bd985e 100644
--- a/pkg/analyzer/test/src/diagnostics/field_initializer_redirecting_constructor_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/field_initializer_redirecting_constructor_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,8 @@
 }
 
 @reflectiveTest
-class FieldInitializerRedirectingConstructorTest extends DriverResolutionTest {
+class FieldInitializerRedirectingConstructorTest
+    extends PubPackageResolutionTest {
   test_afterRedirection() async {
     await assertErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/field_initializing_formal_not_assignable_test.dart b/pkg/analyzer/test/src/diagnostics/field_initializing_formal_not_assignable_test.dart
index 392dca0..f3ff4aa 100644
--- a/pkg/analyzer/test/src/diagnostics/field_initializing_formal_not_assignable_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/field_initializing_formal_not_assignable_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,8 @@
 }
 
 @reflectiveTest
-class FieldInitializingFormalNotAssignableTest extends DriverResolutionTest {
+class FieldInitializingFormalNotAssignableTest
+    extends PubPackageResolutionTest {
   test_dynamic() async {
     await assertErrorsInCode('''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/final_initialized_in_delcaration_and_constructor_test.dart b/pkg/analyzer/test/src/diagnostics/final_initialized_in_delcaration_and_constructor_test.dart
index 58cfca6..0817c4e 100644
--- a/pkg/analyzer/test/src/diagnostics/final_initialized_in_delcaration_and_constructor_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/final_initialized_in_delcaration_and_constructor_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +15,7 @@
 
 @reflectiveTest
 class FinalInitializedInDeclarationAndConstructorTest
-    extends DriverResolutionTest {
+    extends PubPackageResolutionTest {
   test_initializingFormal() async {
     await assertErrorsInCode('''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/final_initialized_multiple_times_test.dart b/pkg/analyzer/test/src/diagnostics/final_initialized_multiple_times_test.dart
index 83c5bb9..d860ffe 100644
--- a/pkg/analyzer/test/src/diagnostics/final_initialized_multiple_times_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/final_initialized_multiple_times_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class FinalInitializedMultipleTimesTest extends DriverResolutionTest {
+class FinalInitializedMultipleTimesTest extends PubPackageResolutionTest {
   test_initializingFormals_withDefaultValues() async {
     await assertErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/final_not_initialized_constructor_test.dart b/pkg/analyzer/test/src/diagnostics/final_not_initialized_constructor_test.dart
index b7ea044..3bd3afc 100644
--- a/pkg/analyzer/test/src/diagnostics/final_not_initialized_constructor_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/final_not_initialized_constructor_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class FinalNotInitializedConstructorTest extends DriverResolutionTest {
+class FinalNotInitializedConstructorTest extends PubPackageResolutionTest {
   test_1() async {
     await assertErrorsInCode('''
 class A {
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 b9e9b36..7e55627 100644
--- a/pkg/analyzer/test/src/diagnostics/final_not_initialized_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/final_not_initialized_test.dart
@@ -6,18 +6,16 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(FinalNotInitializedTest);
-    defineReflectiveTests(FinalNotInitializedWithNullSafetyTest);
   });
 }
 
 @reflectiveTest
-class FinalNotInitializedTest extends DriverResolutionTest {
+class FinalNotInitializedTest extends PubPackageResolutionTest {
   test_class_instanceField_final_factoryConstructor_only() async {
     await assertNoErrorsInCode('''
 class A {
@@ -84,7 +82,7 @@
 }
 
 @reflectiveTest
-class FinalNotInitializedWithNullSafetyTest extends DriverResolutionTest
+class FinalNotInitializedWithNullSafetyTest extends PubPackageResolutionTest
     with WithNullSafetyMixin {
   test_field_noConstructor_initializer() async {
     await assertNoErrorsInCode('''
diff --git a/pkg/analyzer/test/src/diagnostics/for_in_of_invalid_element_type_test.dart b/pkg/analyzer/test/src/diagnostics/for_in_of_invalid_element_type_test.dart
index 8824a62..916d47f 100644
--- a/pkg/analyzer/test/src/diagnostics/for_in_of_invalid_element_type_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/for_in_of_invalid_element_type_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class ForInOfInvalidElementTypeTest extends DriverResolutionTest {
+class ForInOfInvalidElementTypeTest extends PubPackageResolutionTest {
   test_await_declaredVariableWrongType() async {
     await assertErrorsInCode('''
 import 'dart:async';
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 00e6a70..89baab4 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
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,7 +15,7 @@
 }
 
 @reflectiveTest
-class ForInOfInvalidTypeTest extends DriverResolutionTest {
+class ForInOfInvalidTypeTest extends PubPackageResolutionTest {
   test_awaitForIn_dynamic() async {
     await assertNoErrorsInCode('''
 f(dynamic e) async {
diff --git a/pkg/analyzer/test/src/diagnostics/for_in_with_const_variable_test.dart b/pkg/analyzer/test/src/diagnostics/for_in_with_const_variable_test.dart
index 2336b98..e2630c9 100644
--- a/pkg/analyzer/test/src/diagnostics/for_in_with_const_variable_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/for_in_with_const_variable_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class ForInWithConstVariableTest extends DriverResolutionTest {
+class ForInWithConstVariableTest extends PubPackageResolutionTest {
   test_forEach_loopVariable() async {
     await assertErrorsInCode(r'''
 f() {
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 a07471e..72de5dc 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
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class GenericFunctionTypeCannotBeBoundTest extends DriverResolutionTest {
+class GenericFunctionTypeCannotBeBoundTest extends PubPackageResolutionTest {
   test_class() async {
     await assertErrorsInCode(r'''
 class C<T extends S Function<S>(S)> {
diff --git a/pkg/analyzer/test/src/diagnostics/generic_struct_subclass_test.dart b/pkg/analyzer/test/src/diagnostics/generic_struct_subclass_test.dart
index ace933d..8b4aef4 100644
--- a/pkg/analyzer/test/src/diagnostics/generic_struct_subclass_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/generic_struct_subclass_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/dart/error/ffi_code.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class GenericStructSubclassTest extends DriverResolutionTest {
+class GenericStructSubclassTest extends PubPackageResolutionTest {
   test_genericStruct() async {
     await assertErrorsInCode(r'''
 import 'dart:ffi';
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 e2b4cb8..b4996d1 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
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class GetterNotAssignableSetterTypesTest extends DriverResolutionTest {
+class GetterNotAssignableSetterTypesTest extends PubPackageResolutionTest {
   test_class_instance_dynamicGetter() async {
     await assertNoErrorsInCode(r'''
 class C {
@@ -50,7 +50,7 @@
   }
 
   test_class_instance_private_getter() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   int get _foo => 0;
 }
@@ -67,12 +67,12 @@
   }
 
   test_class_instance_private_interfaces() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   int get _foo => 0;
 }
 ''');
-    newFile('/test/lib/b.dart', content: r'''
+    newFile('$testPackageLibPath/b.dart', content: r'''
 class B {
   set _foo(String _) {}
 }
@@ -86,7 +86,7 @@
   }
 
   test_class_instance_private_interfaces2() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   int get _foo => 0;
 }
@@ -103,7 +103,7 @@
   }
 
   test_class_instance_private_setter() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   set _foo(String _) {}
 }
diff --git a/pkg/analyzer/test/src/diagnostics/getter_not_subtype_setter_types_test.dart b/pkg/analyzer/test/src/diagnostics/getter_not_subtype_setter_types_test.dart
index 3429d34..13631fa 100644
--- a/pkg/analyzer/test/src/diagnostics/getter_not_subtype_setter_types_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/getter_not_subtype_setter_types_test.dart
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +14,7 @@
 }
 
 @reflectiveTest
-class GetterNotSubtypeSetterTypesTest extends DriverResolutionTest
+class GetterNotSubtypeSetterTypesTest extends PubPackageResolutionTest
     with WithNullSafetyMixin {
   test_class_instance() async {
     await assertErrorsInCode('''
@@ -65,7 +64,7 @@
   }
 
   test_class_instance_private_getter() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   int get _foo => 0;
 }
@@ -82,12 +81,12 @@
   }
 
   test_class_instance_private_interfaces() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   int get _foo => 0;
 }
 ''');
-    newFile('/test/lib/b.dart', content: r'''
+    newFile('$testPackageLibPath/b.dart', content: r'''
 class B {
   set _foo(String _) {}
 }
@@ -101,7 +100,7 @@
   }
 
   test_class_instance_private_interfaces2() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   int get _foo => 0;
 }
@@ -118,7 +117,7 @@
   }
 
   test_class_instance_private_setter() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   set _foo(String _) {}
 }
diff --git a/pkg/analyzer/test/src/diagnostics/if_element_condition_from_deferred_library_test.dart b/pkg/analyzer/test/src/diagnostics/if_element_condition_from_deferred_library_test.dart
index b3c03b9..710a5cf 100644
--- a/pkg/analyzer/test/src/diagnostics/if_element_condition_from_deferred_library_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/if_element_condition_from_deferred_library_test.dart
@@ -8,7 +8,7 @@
 import 'package:analyzer/src/generated/engine.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -19,9 +19,10 @@
 }
 
 @reflectiveTest
-class IfElementConditionFromDeferredLibraryTest extends DriverResolutionTest {
+class IfElementConditionFromDeferredLibraryTest
+    extends PubPackageResolutionTest {
   test_inList_deferred() async {
-    newFile(convertPath('/test/lib/lib1.dart'), content: r'''
+    newFile(convertPath('$testPackageLibPath/lib1.dart'), content: r'''
 const bool c = true;''');
     await assertErrorsInCode(
         r'''
@@ -43,7 +44,7 @@
   }
 
   test_inList_nonConst() async {
-    newFile(convertPath('/test/lib/lib1.dart'), content: r'''
+    newFile(convertPath('$testPackageLibPath/lib1.dart'), content: r'''
 const bool c = true;''');
     await assertNoErrorsInCode(r'''
 import 'lib1.dart' deferred as a;
@@ -53,7 +54,7 @@
   }
 
   test_inList_notDeferred() async {
-    newFile(convertPath('/test/lib/lib1.dart'), content: r'''
+    newFile(convertPath('$testPackageLibPath/lib1.dart'), content: r'''
 const bool c = true;''');
     await assertErrorsInCode(
         r'''
@@ -69,7 +70,7 @@
   }
 
   test_inMap_deferred() async {
-    newFile(convertPath('/test/lib/lib1.dart'), content: r'''
+    newFile(convertPath('$testPackageLibPath/lib1.dart'), content: r'''
 const bool c = true;''');
     await assertErrorsInCode(
         r'''
@@ -91,7 +92,7 @@
   }
 
   test_inMap_notConst() async {
-    newFile(convertPath('/test/lib/lib1.dart'), content: r'''
+    newFile(convertPath('$testPackageLibPath/lib1.dart'), content: r'''
 const bool c = true;''');
     await assertNoErrorsInCode(r'''
 import 'lib1.dart' deferred as a;
@@ -101,7 +102,7 @@
   }
 
   test_inMap_notDeferred() async {
-    newFile(convertPath('/test/lib/lib1.dart'), content: r'''
+    newFile(convertPath('$testPackageLibPath/lib1.dart'), content: r'''
 const bool c = true;''');
     await assertErrorsInCode(
         r'''
@@ -117,7 +118,7 @@
   }
 
   test_inSet_deferred() async {
-    newFile(convertPath('/test/lib/lib1.dart'), content: r'''
+    newFile(convertPath('$testPackageLibPath/lib1.dart'), content: r'''
 const bool c = true;''');
     await assertErrorsInCode(
         r'''
@@ -139,7 +140,7 @@
   }
 
   test_inSet_notConst() async {
-    newFile(convertPath('/test/lib/lib1.dart'), content: r'''
+    newFile(convertPath('$testPackageLibPath/lib1.dart'), content: r'''
 const bool c = true;''');
     await assertNoErrorsInCode(r'''
 import 'lib1.dart' deferred as a;
@@ -149,7 +150,7 @@
   }
 
   test_inSet_notDeferred() async {
-    newFile(convertPath('/test/lib/lib1.dart'), content: r'''
+    newFile(convertPath('$testPackageLibPath/lib1.dart'), content: r'''
 const bool c = true;''');
     await assertErrorsInCode(
         r'''
diff --git a/pkg/analyzer/test/src/diagnostics/illegal_async_generator_return_type_test.dart b/pkg/analyzer/test/src/diagnostics/illegal_async_generator_return_type_test.dart
index 2e7c537..ac52b34 100644
--- a/pkg/analyzer/test/src/diagnostics/illegal_async_generator_return_type_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/illegal_async_generator_return_type_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class IllegalAsyncGeneratorReturnTypeTest extends DriverResolutionTest {
+class IllegalAsyncGeneratorReturnTypeTest extends PubPackageResolutionTest {
   test_function_nonStream() async {
     await assertErrorsInCode('''
 int f() async* {}
diff --git a/pkg/analyzer/test/src/diagnostics/illegal_async_return_type_test.dart b/pkg/analyzer/test/src/diagnostics/illegal_async_return_type_test.dart
index 55ed10e..3302326 100644
--- a/pkg/analyzer/test/src/diagnostics/illegal_async_return_type_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/illegal_async_return_type_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class IllegalAsyncReturnTypeTest extends DriverResolutionTest {
+class IllegalAsyncReturnTypeTest extends PubPackageResolutionTest {
   test_function_nonFuture() async {
     await assertErrorsInCode('''
 int f() async {}
diff --git a/pkg/analyzer/test/src/diagnostics/illegal_sync_generator_return_type_test.dart b/pkg/analyzer/test/src/diagnostics/illegal_sync_generator_return_type_test.dart
index f8d48e3..1656f94 100644
--- a/pkg/analyzer/test/src/diagnostics/illegal_sync_generator_return_type_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/illegal_sync_generator_return_type_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class IllegalSyncGeneratorReturnTypeTest extends DriverResolutionTest {
+class IllegalSyncGeneratorReturnTypeTest extends PubPackageResolutionTest {
   test_function_iterator() async {
     await assertNoErrorsInCode('''
 Iterable<void> f() sync* {}
diff --git a/pkg/analyzer/test/src/diagnostics/implements_deferred_class_test.dart b/pkg/analyzer/test/src/diagnostics/implements_deferred_class_test.dart
index 771fd00..aaa6cf5 100644
--- a/pkg/analyzer/test/src/diagnostics/implements_deferred_class_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/implements_deferred_class_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,9 +14,9 @@
 }
 
 @reflectiveTest
-class ImplementsDeferredClassTest extends DriverResolutionTest {
+class ImplementsDeferredClassTest extends PubPackageResolutionTest {
   test_implements() async {
-    newFile('/test/lib/lib1.dart', content: '''
+    newFile('$testPackageLibPath/lib1.dart', content: '''
 library lib1;
 class A {}
 ''');
@@ -30,7 +30,7 @@
   }
 
   test_mixinApplication() async {
-    newFile('/test/lib/lib1.dart', content: '''
+    newFile('$testPackageLibPath/lib1.dart', content: '''
 library lib1;
 class A {}
 ''');
diff --git a/pkg/analyzer/test/src/diagnostics/implements_disallowed_class_test.dart b/pkg/analyzer/test/src/diagnostics/implements_disallowed_class_test.dart
index f106f37..64e25bc 100644
--- a/pkg/analyzer/test/src/diagnostics/implements_disallowed_class_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/implements_disallowed_class_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class ImplementsDisallowedClassTest extends DriverResolutionTest {
+class ImplementsDisallowedClassTest extends PubPackageResolutionTest {
   test_class_bool() async {
     await assertErrorsInCode('''
 class A implements bool {}
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 803aa67..adcb2a3 100644
--- a/pkg/analyzer/test/src/diagnostics/implements_non_class_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/implements_non_class_test.dart
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,7 +15,7 @@
 }
 
 @reflectiveTest
-class ImplementsNonClassTest extends DriverResolutionTest {
+class ImplementsNonClassTest extends PubPackageResolutionTest {
   test_class() async {
     await assertErrorsInCode(r'''
 int A = 7;
diff --git a/pkg/analyzer/test/src/diagnostics/implements_super_class_test.dart b/pkg/analyzer/test/src/diagnostics/implements_super_class_test.dart
index 6ad751f..c6ba3d3 100644
--- a/pkg/analyzer/test/src/diagnostics/implements_super_class_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/implements_super_class_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class ImplementsSuperClassTest extends DriverResolutionTest {
+class ImplementsSuperClassTest extends PubPackageResolutionTest {
   test_implements_super_class() async {
     await assertErrorsInCode(r'''
 class A {}
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 1dad8ec..3b81868 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
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,7 +15,7 @@
 }
 
 @reflectiveTest
-class ImplicitThisReferenceInInitializerTest extends DriverResolutionTest {
+class ImplicitThisReferenceInInitializerTest extends PubPackageResolutionTest {
   test_class_field_commentReference_prefixedIdentifier() async {
     await assertNoErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/import_deferred_library_with_load_function_test.dart b/pkg/analyzer/test/src/diagnostics/import_deferred_library_with_load_function_test.dart
index 2838d5e..040fe91 100644
--- a/pkg/analyzer/test/src/diagnostics/import_deferred_library_with_load_function_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/import_deferred_library_with_load_function_test.dart
@@ -6,7 +6,7 @@
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import '../../generated/test_support.dart';
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,51 +15,52 @@
 }
 
 @reflectiveTest
-class ImportDeferredLibraryWithLoadFunctionTest extends DriverResolutionTest {
+class ImportDeferredLibraryWithLoadFunctionTest
+    extends PubPackageResolutionTest {
   test_deferredImport_withLoadLibraryFunction() async {
-    newFile('/pkg1/lib/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 library lib1;
 loadLibrary() {}
 f() {}''');
 
-    newFile('/pkg1/lib/lib2.dart', content: r'''
+    newFile('$testPackageLibPath/lib2.dart', content: r'''
 library root;
 import 'lib1.dart' deferred as lib1;
 main() { lib1.f(); }''');
 
-    await _resolveFile('/pkg1/lib/lib1.dart');
-    await _resolveFile('/pkg1/lib/lib2.dart', [
+    await _resolveFile('$testPackageLibPath/lib1.dart');
+    await _resolveFile('$testPackageLibPath/lib2.dart', [
       error(HintCode.IMPORT_DEFERRED_LIBRARY_WITH_LOAD_FUNCTION, 14, 36),
     ]);
   }
 
   test_deferredImport_withoutLoadLibraryFunction() async {
-    newFile('/pkg1/lib/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 library lib1;
 f() {}''');
 
-    newFile('/pkg1/lib/lib2.dart', content: r'''
+    newFile('$testPackageLibPath/lib2.dart', content: r'''
 library root;
 import 'lib1.dart' deferred as lib1;
 main() { lib1.f(); }''');
 
-    await _resolveFile('/pkg1/lib/lib1.dart');
-    await _resolveFile('/pkg1/lib/lib2.dart');
+    await _resolveFile('$testPackageLibPath/lib1.dart');
+    await _resolveFile('$testPackageLibPath/lib2.dart');
   }
 
   test_nonDeferredImport_withLoadLibraryFunction() async {
-    newFile('/pkg1/lib/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 library lib1;
 loadLibrary() {}
 f() {}''');
 
-    newFile('/pkg1/lib/lib2.dart', content: r'''
+    newFile('$testPackageLibPath/lib2.dart', content: r'''
 library root;
 import 'lib1.dart' as lib1;
 main() { lib1.f(); }''');
 
-    await _resolveFile('/pkg1/lib/lib1.dart');
-    await _resolveFile('/pkg1/lib/lib2.dart');
+    await _resolveFile('$testPackageLibPath/lib1.dart');
+    await _resolveFile('$testPackageLibPath/lib2.dart');
   }
 
   /// Resolve the file with the given [path].
diff --git a/pkg/analyzer/test/src/diagnostics/import_internal_library_test.dart b/pkg/analyzer/test/src/diagnostics/import_internal_library_test.dart
index 7397975..3ba652a 100644
--- a/pkg/analyzer/test/src/diagnostics/import_internal_library_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/import_internal_library_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class ImportInternalLibraryTest extends DriverResolutionTest {
+class ImportInternalLibraryTest extends PubPackageResolutionTest {
   test_internal() async {
     // Note, in these error cases we may generate an UNUSED_IMPORT hint, while
     // we could prevent the hint from being generated by testing the import
@@ -22,10 +22,10 @@
     // think we should add the additional computation time to figure out such
     // cases.
     await assertErrorsInCode('''
-import 'dart:_interceptors';
+import 'dart:_internal';
 ''', [
-      error(CompileTimeErrorCode.IMPORT_INTERNAL_LIBRARY, 7, 20),
-      error(HintCode.UNUSED_IMPORT, 7, 20),
+      error(CompileTimeErrorCode.IMPORT_INTERNAL_LIBRARY, 7, 16),
+      error(HintCode.UNUSED_IMPORT, 7, 16),
     ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/import_of_non_library_test.dart b/pkg/analyzer/test/src/diagnostics/import_of_non_library_test.dart
index 36ac79a..55109a1 100644
--- a/pkg/analyzer/test/src/diagnostics/import_of_non_library_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/import_of_non_library_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,9 +14,9 @@
 }
 
 @reflectiveTest
-class ImportOfNonLibraryTest extends DriverResolutionTest {
+class ImportOfNonLibraryTest extends PubPackageResolutionTest {
   test_deferred() async {
-    newFile("/test/lib/lib1.dart", content: '''
+    newFile('$testPackageLibPath/lib1.dart', content: '''
 part of lib;
 class A {}
 ''');
@@ -30,7 +30,7 @@
   }
 
   test_part() async {
-    newFile("/test/lib/part.dart", content: r'''
+    newFile('$testPackageLibPath/part.dart', content: r'''
 part of lib;
 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 9e1911c..775c57b 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
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,7 +15,7 @@
 }
 
 @reflectiveTest
-class InconsistentCaseExpressionTypesTest extends DriverResolutionTest {
+class InconsistentCaseExpressionTypesTest extends PubPackageResolutionTest {
   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.
@@ -115,9 +114,9 @@
 
 @reflectiveTest
 class InconsistentCaseExpressionTypesWithNullSafetyTest
-    extends DriverResolutionTest with WithNullSafetyMixin {
+    extends PubPackageResolutionTest with WithNullSafetyMixin {
   test_int_none_legacy() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 const a = 0;
 ''');
 
diff --git a/pkg/analyzer/test/src/diagnostics/inconsistent_inheritance_getter_and_method_test.dart b/pkg/analyzer/test/src/diagnostics/inconsistent_inheritance_getter_and_method_test.dart
index 029df6c..a396382 100644
--- a/pkg/analyzer/test/src/diagnostics/inconsistent_inheritance_getter_and_method_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/inconsistent_inheritance_getter_and_method_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,8 @@
 }
 
 @reflectiveTest
-class InconsistentInheritanceGetterAndMethodTest extends DriverResolutionTest {
+class InconsistentInheritanceGetterAndMethodTest
+    extends PubPackageResolutionTest {
   test_class_getter_method() async {
     await assertErrorsInCode(r'''
 abstract class A {
diff --git a/pkg/analyzer/test/src/diagnostics/inconsistent_inheritance_test.dart b/pkg/analyzer/test/src/diagnostics/inconsistent_inheritance_test.dart
index 7d6f23e..0820fb8 100644
--- a/pkg/analyzer/test/src/diagnostics/inconsistent_inheritance_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/inconsistent_inheritance_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class InconsistentInheritanceTest extends DriverResolutionTest {
+class InconsistentInheritanceTest extends PubPackageResolutionTest {
   test_class_parameterType() async {
     await assertErrorsInCode(r'''
 abstract class A {
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 3e42a57..22eb5ae 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
@@ -7,7 +7,7 @@
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import '../../generated/test_support.dart';
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,7 +16,7 @@
 }
 
 @reflectiveTest
-class InconsistentLanguageVersionOverrideTest extends DriverResolutionTest {
+class InconsistentLanguageVersionOverrideTest extends PubPackageResolutionTest {
   CompileTimeErrorCode get _errorCode =>
       CompileTimeErrorCode.INCONSISTENT_LANGUAGE_VERSION_OVERRIDE;
 
@@ -97,8 +97,8 @@
     @required String partContent,
     @required List<ExpectedError> libraryErrors,
   }) async {
-    var libraryPath = convertPath('/test/lib/a.dart');
-    var partPath = convertPath('/test/lib/b.dart');
+    var libraryPath = convertPath('$testPackageLibPath/a.dart');
+    var partPath = convertPath('$testPackageLibPath/b.dart');
 
     newFile(libraryPath, content: libraryContent);
 
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 70f51bf..ad65005 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
@@ -3,10 +3,9 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/src/error/codes.dart';
-import 'package:analyzer/src/generated/engine.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,10 +14,16 @@
 }
 
 @reflectiveTest
-class InferenceFailureOnCollectionLiteralTest extends DriverResolutionTest {
+class InferenceFailureOnCollectionLiteralTest extends PubPackageResolutionTest {
   @override
-  AnalysisOptionsImpl get analysisOptions =>
-      AnalysisOptionsImpl()..strictInference = true;
+  void setUp() {
+    super.setUp();
+    writeTestPackageAnalysisOptionsFile(
+      AnalysisOptionsFileConfig(
+        strictInference: true,
+      ),
+    );
+  }
 
   test_collectionsWithAnyElements() async {
     await assertErrorsInCode(r'''
diff --git a/pkg/analyzer/test/src/diagnostics/inference_failure_on_function_return_type_test.dart b/pkg/analyzer/test/src/diagnostics/inference_failure_on_function_return_type_test.dart
index a3f0bd4..1940b0a 100644
--- a/pkg/analyzer/test/src/diagnostics/inference_failure_on_function_return_type_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/inference_failure_on_function_return_type_test.dart
@@ -3,10 +3,9 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/src/error/codes.dart';
-import 'package:analyzer/src/generated/engine.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -17,10 +16,17 @@
 /// Tests of HintCode.INFERENCE_FAILURE_ON_FUNCTION_RETURN_TYPE with the
 /// "strict-inference" static analysis option.
 @reflectiveTest
-class InferenceFailureOnFunctionReturnTypeTest extends DriverResolutionTest {
+class InferenceFailureOnFunctionReturnTypeTest
+    extends PubPackageResolutionTest {
   @override
-  AnalysisOptionsImpl get analysisOptions =>
-      AnalysisOptionsImpl()..strictInference = true;
+  void setUp() {
+    super.setUp();
+    writeTestPackageAnalysisOptionsFile(
+      AnalysisOptionsFileConfig(
+        strictInference: true,
+      ),
+    );
+  }
 
   test_classInstanceGetter() async {
     await assertErrorsInCode(r'''
diff --git a/pkg/analyzer/test/src/diagnostics/inference_failure_on_instance_creation_test.dart b/pkg/analyzer/test/src/diagnostics/inference_failure_on_instance_creation_test.dart
index b3fba28..6e39da6 100644
--- a/pkg/analyzer/test/src/diagnostics/inference_failure_on_instance_creation_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/inference_failure_on_instance_creation_test.dart
@@ -3,12 +3,10 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/src/error/codes.dart';
-import 'package:analyzer/src/generated/engine.dart';
-import 'package:analyzer/src/test_utilities/package_mixin.dart';
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -17,11 +15,16 @@
 }
 
 @reflectiveTest
-class InferenceFailureOnInstanceCreationTest extends DriverResolutionTest
-    with PackageMixin {
+class InferenceFailureOnInstanceCreationTest extends PubPackageResolutionTest {
   @override
-  AnalysisOptionsImpl get analysisOptions =>
-      AnalysisOptionsImpl()..strictInference = true;
+  void setUp() {
+    super.setUp();
+    writeTestPackageAnalysisOptionsFile(
+      AnalysisOptionsFileConfig(
+        strictInference: true,
+      ),
+    );
+  }
 
   test_constructorNames_named() async {
     await assertErrorsInCode('''
@@ -77,7 +80,7 @@
   }
 
   test_missingTypeArgument_noInference_optionalTypeArgs() async {
-    addMetaPackage();
+    writeTestPackageConfigWithMeta();
     await assertNoErrorsInCode(r'''
 import 'package:meta/meta.dart';
 @optionalTypeArgs
diff --git a/pkg/analyzer/test/src/diagnostics/inference_failure_on_uninitialized_variable_test.dart b/pkg/analyzer/test/src/diagnostics/inference_failure_on_uninitialized_variable_test.dart
index 93714bb..f6a67f2 100644
--- a/pkg/analyzer/test/src/diagnostics/inference_failure_on_uninitialized_variable_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/inference_failure_on_uninitialized_variable_test.dart
@@ -3,10 +3,9 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/src/error/codes.dart';
-import 'package:analyzer/src/generated/engine.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -17,10 +16,17 @@
 /// Tests of HintCode.INFERENCE_FAILURE_ON_UNINITIALIZED_VARIABLE with the
 /// "strict-inference" static analysis option.
 @reflectiveTest
-class InferenceFailureOnUninitializedVariableTest extends DriverResolutionTest {
+class InferenceFailureOnUninitializedVariableTest
+    extends PubPackageResolutionTest {
   @override
-  AnalysisOptionsImpl get analysisOptions =>
-      AnalysisOptionsImpl()..strictInference = true;
+  void setUp() {
+    super.setUp();
+    writeTestPackageAnalysisOptionsFile(
+      AnalysisOptionsFileConfig(
+        strictInference: true,
+      ),
+    );
+  }
 
   test_field() async {
     await assertErrorsInCode(r'''
diff --git a/pkg/analyzer/test/src/diagnostics/inference_failure_on_untyped_parameter_test.dart b/pkg/analyzer/test/src/diagnostics/inference_failure_on_untyped_parameter_test.dart
index 5064a6c..47e4695 100644
--- a/pkg/analyzer/test/src/diagnostics/inference_failure_on_untyped_parameter_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/inference_failure_on_untyped_parameter_test.dart
@@ -3,10 +3,9 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/src/error/codes.dart';
-import 'package:analyzer/src/generated/engine.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -17,10 +16,16 @@
 /// Tests of HintCode.INFERENCE_FAILURE_ON_UNTYPED_PARAMETER with the
 /// "strict-inference" static analysis option.
 @reflectiveTest
-class InferenceFailureOnUntypedParameterTest extends DriverResolutionTest {
+class InferenceFailureOnUntypedParameterTest extends PubPackageResolutionTest {
   @override
-  AnalysisOptionsImpl get analysisOptions =>
-      AnalysisOptionsImpl()..strictInference = true;
+  void setUp() {
+    super.setUp();
+    writeTestPackageAnalysisOptionsFile(
+      AnalysisOptionsFileConfig(
+        strictInference: true,
+      ),
+    );
+  }
 
   test_fieldParameter() async {
     await assertNoErrorsInCode(r'''
diff --git a/pkg/analyzer/test/src/diagnostics/initializer_for_non_existent_field_test.dart b/pkg/analyzer/test/src/diagnostics/initializer_for_non_existent_field_test.dart
index 723dbb1..43361f5 100644
--- a/pkg/analyzer/test/src/diagnostics/initializer_for_non_existent_field_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/initializer_for_non_existent_field_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class InitializerForNonExistentFieldTest extends DriverResolutionTest {
+class InitializerForNonExistentFieldTest extends PubPackageResolutionTest {
   test_const() async {
     // Check that the absence of a matching field doesn't cause a
     // crash during constant evaluation.
diff --git a/pkg/analyzer/test/src/diagnostics/initializer_for_static_field_test.dart b/pkg/analyzer/test/src/diagnostics/initializer_for_static_field_test.dart
index 792cbd5..6aa701f 100644
--- a/pkg/analyzer/test/src/diagnostics/initializer_for_static_field_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/initializer_for_static_field_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class InitializerForStaticFieldTest extends DriverResolutionTest {
+class InitializerForStaticFieldTest extends PubPackageResolutionTest {
   test_static() async {
     await assertErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/initializing_formal_for_non_existent_field_test.dart b/pkg/analyzer/test/src/diagnostics/initializing_formal_for_non_existent_field_test.dart
index 971ba67..2a01c1d 100644
--- a/pkg/analyzer/test/src/diagnostics/initializing_formal_for_non_existent_field_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/initializing_formal_for_non_existent_field_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,8 @@
 }
 
 @reflectiveTest
-class InitializingFormalForNonExistentFieldTest extends DriverResolutionTest {
+class InitializingFormalForNonExistentFieldTest
+    extends PubPackageResolutionTest {
   test_nonExistent() async {
     await assertErrorsInCode(r'''
 class A {
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 b6b4238..b79eba6 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
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class InitializingFormalForStaticFieldTest extends DriverResolutionTest {
+class InitializingFormalForStaticFieldTest extends PubPackageResolutionTest {
   test_static() async {
     await assertErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/instance_access_to_static_member_test.dart b/pkg/analyzer/test/src/diagnostics/instance_access_to_static_member_test.dart
index 6eb6bef..8644b85 100644
--- a/pkg/analyzer/test/src/diagnostics/instance_access_to_static_member_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/instance_access_to_static_member_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class InstanceAccessToStaticMemberTest extends DriverResolutionTest {
+class InstanceAccessToStaticMemberTest extends PubPackageResolutionTest {
   test_extension_getter() async {
     await assertErrorsInCode('''
 class C {}
diff --git a/pkg/analyzer/test/src/diagnostics/instance_member_access_from_factory_test.dart b/pkg/analyzer/test/src/diagnostics/instance_member_access_from_factory_test.dart
index d5d6125..5bde8d7 100644
--- a/pkg/analyzer/test/src/diagnostics/instance_member_access_from_factory_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/instance_member_access_from_factory_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class InstanceMemberAccessFromFactoryTest extends DriverResolutionTest {
+class InstanceMemberAccessFromFactoryTest extends PubPackageResolutionTest {
   test_named() async {
     await assertErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/instance_member_access_from_static_test.dart b/pkg/analyzer/test/src/diagnostics/instance_member_access_from_static_test.dart
index af6fa96..4ec14fa 100644
--- a/pkg/analyzer/test/src/diagnostics/instance_member_access_from_static_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/instance_member_access_from_static_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class InstanceMemberAccessFromStaticTest extends DriverResolutionTest {
+class InstanceMemberAccessFromStaticTest extends PubPackageResolutionTest {
   test_class_getter_fromMethod() async {
     await assertErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/instantiate_abstract_class_test.dart b/pkg/analyzer/test/src/diagnostics/instantiate_abstract_class_test.dart
index 271ffff..6c1e237 100644
--- a/pkg/analyzer/test/src/diagnostics/instantiate_abstract_class_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/instantiate_abstract_class_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class InstantiateAbstractClassTest extends DriverResolutionTest {
+class InstantiateAbstractClassTest extends PubPackageResolutionTest {
   test_const_generic() async {
     await assertErrorsInCode('''
 abstract class A<E> {
diff --git a/pkg/analyzer/test/src/diagnostics/instantiate_enum_test.dart b/pkg/analyzer/test/src/diagnostics/instantiate_enum_test.dart
index 46856fe..0fd804c 100644
--- a/pkg/analyzer/test/src/diagnostics/instantiate_enum_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/instantiate_enum_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class InstantiateEnumTest extends DriverResolutionTest {
+class InstantiateEnumTest extends PubPackageResolutionTest {
   test_const() async {
     await assertErrorsInCode(r'''
 enum E { ONE }
diff --git a/pkg/analyzer/test/src/diagnostics/integer_literal_imprecise_as_double_test.dart b/pkg/analyzer/test/src/diagnostics/integer_literal_imprecise_as_double_test.dart
index 9d96bc5..8c831b2 100644
--- a/pkg/analyzer/test/src/diagnostics/integer_literal_imprecise_as_double_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/integer_literal_imprecise_as_double_test.dart
@@ -7,7 +7,7 @@
 import 'package:test/test.dart' show expect;
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,7 +16,7 @@
 }
 
 @reflectiveTest
-class IntegerLiteralImpreciseAsDoubleTest extends DriverResolutionTest {
+class IntegerLiteralImpreciseAsDoubleTest extends PubPackageResolutionTest {
   test_excessiveExponent() async {
     await assertErrorsInCode(
         'double x = 0xfffffffffffff80000000000000000000000000000000000000000000'
diff --git a/pkg/analyzer/test/src/diagnostics/integer_literal_out_of_range_test.dart b/pkg/analyzer/test/src/diagnostics/integer_literal_out_of_range_test.dart
index 1a2991c..0d1d08e 100644
--- a/pkg/analyzer/test/src/diagnostics/integer_literal_out_of_range_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/integer_literal_out_of_range_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class IntegerLiteralOutOfRangeTest extends DriverResolutionTest {
+class IntegerLiteralOutOfRangeTest extends PubPackageResolutionTest {
   test_negative() async {
     await assertErrorsInCode('''
 int x = -9223372036854775809;
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_annotation_from_deferred_library_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_annotation_from_deferred_library_test.dart
index a235c79..88263a6 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_annotation_from_deferred_library_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_annotation_from_deferred_library_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,9 +14,10 @@
 }
 
 @reflectiveTest
-class InvalidAnnotationFromDeferredLibraryTest extends DriverResolutionTest {
+class InvalidAnnotationFromDeferredLibraryTest
+    extends PubPackageResolutionTest {
   test_constructor() async {
-    newFile('/test/lib/lib1.dart', content: '''
+    newFile('$testPackageLibPath/lib1.dart', content: '''
 library lib1;
 class C { const C(); }
 ''');
@@ -31,7 +32,7 @@
   }
 
   test_from_deferred_library() async {
-    newFile('/test/lib/lib1.dart', content: '''
+    newFile('$testPackageLibPath/lib1.dart', content: '''
 library lib1;
 class V { const V(); }
 const v = const V();
@@ -47,7 +48,7 @@
   }
 
   test_namedConstructor() async {
-    newFile('/test/lib/lib1.dart', content: '''
+    newFile('$testPackageLibPath/lib1.dart', content: '''
 library lib1;
 class C { const C.name(); }
 ''');
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_annotation_getter_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_annotation_getter_test.dart
index be6978d..9963bea 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_annotation_getter_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_annotation_getter_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class InvalidAnnotationGetterTest extends DriverResolutionTest {
+class InvalidAnnotationGetterTest extends PubPackageResolutionTest {
   test_getter() async {
     await assertErrorsInCode(r'''
 get V => 0;
@@ -27,7 +27,7 @@
   }
 
   test_importWithPrefix_getter() async {
-    newFile("/test/lib/lib.dart", content: r'''
+    newFile('$testPackageLibPath/lib.dart', content: r'''
 library lib;
 get V => 0;
 ''');
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_annotation_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_annotation_test.dart
index b799306..1ad964c 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_annotation_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_annotation_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,9 +14,9 @@
 }
 
 @reflectiveTest
-class InvalidAnnotationTest extends DriverResolutionTest {
+class InvalidAnnotationTest extends PubPackageResolutionTest {
   test_importWithPrefix_notConstantVariable() async {
-    newFile("/test/lib/lib.dart", content: r'''
+    newFile('$testPackageLibPath/lib.dart', content: r'''
 library lib;
 final V = 0;
 ''');
@@ -31,7 +31,7 @@
   }
 
   test_importWithPrefix_notVariableOrConstructorInvocation() async {
-    newFile("/test/lib/lib.dart", content: r'''
+    newFile('$testPackageLibPath/lib.dart', content: r'''
 library lib;
 typedef V();
 ''');
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_assignment_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_assignment_test.dart
index d553a80..da01c89 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_assignment_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_assignment_test.dart
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -94,7 +93,7 @@
 }
 
 @reflectiveTest
-class InvalidAssignmentTest extends DriverResolutionTest {
+class InvalidAssignmentTest extends PubPackageResolutionTest {
   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 3ea45a5..fc1ce1e 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
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class InvalidCastNewExprTest extends DriverResolutionTest {
+class InvalidCastNewExprTest extends PubPackageResolutionTest {
   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 cefb793..a000c02 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_constant_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_constant_test.dart
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,7 +15,7 @@
 }
 
 @reflectiveTest
-class InvalidConstantTest extends DriverResolutionTest {
+class InvalidConstantTest extends PubPackageResolutionTest {
   test_in_initializer_assert_condition() async {
     await assertErrorsInCode('''
 class A {
@@ -50,7 +49,7 @@
   }
 
   test_in_initializer_from_deferred_library_field() async {
-    newFile('/test/lib/lib1.dart', content: '''
+    newFile('$testPackageLibPath/lib1.dart', content: '''
 library lib1;
 const int c = 1;''');
     await assertErrorsInCode('''
@@ -66,7 +65,7 @@
   }
 
   test_in_initializer_from_deferred_library_field_nested() async {
-    newFile('/test/lib/lib1.dart', content: '''
+    newFile('$testPackageLibPath/lib1.dart', content: '''
 library lib1;
 const int c = 1;
 ''');
@@ -83,7 +82,7 @@
   }
 
   test_in_initializer_from_deferred_library_redirecting() async {
-    newFile('/test/lib/lib1.dart', content: '''
+    newFile('$testPackageLibPath/lib1.dart', content: '''
 library lib1;
 const int c = 1;
 ''');
@@ -100,7 +99,7 @@
   }
 
   test_in_initializer_from_deferred_library_super() async {
-    newFile('/test/lib/lib1.dart', content: '''
+    newFile('$testPackageLibPath/lib1.dart', content: '''
 library lib1;
 const int c = 1;
 ''');
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_constructor_name_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_constructor_name_test.dart
index ba7337a..049f378 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_constructor_name_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_constructor_name_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/dart/error/syntactic_errors.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class InvalidConstructorNameTest extends DriverResolutionTest {
+class InvalidConstructorNameTest extends PubPackageResolutionTest {
   test_notEnclosingClassName_defined() async {
     await assertErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_exception_value_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_exception_value_test.dart
index 2d3b9b1..ce4bb84 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_exception_value_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_exception_value_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/dart/error/ffi_code.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class InvalidExceptionValueTest extends DriverResolutionTest {
+class InvalidExceptionValueTest extends PubPackageResolutionTest {
   test_missing() async {
     await assertErrorsInCode(r'''
 import 'dart:ffi';
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_extension_argument_count_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_extension_argument_count_test.dart
index 59375f2..5a4f4bf 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_extension_argument_count_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_extension_argument_count_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class InvalidExtensionArgumentCountTest extends DriverResolutionTest {
+class InvalidExtensionArgumentCountTest extends PubPackageResolutionTest {
   test_many() async {
     await assertErrorsInCode('''
 extension E on String {
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_factory_annotation_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_factory_annotation_test.dart
index 0011b60..759ae73 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_factory_annotation_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_factory_annotation_test.dart
@@ -3,10 +3,9 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/src/error/codes.dart';
-import 'package:analyzer/src/test_utilities/package_mixin.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,10 +14,14 @@
 }
 
 @reflectiveTest
-class InvalidFactoryAnnotationTest extends DriverResolutionTest
-    with PackageMixin {
+class InvalidFactoryAnnotationTest extends PubPackageResolutionTest {
+  @override
+  void setUp() {
+    super.setUp();
+    writeTestPackageConfigWithMeta();
+  }
+
   test_class() async {
-    addMetaPackage();
     await assertErrorsInCode(r'''
 import 'package:meta/meta.dart';
 @factory
@@ -30,7 +33,6 @@
   }
 
   test_field() async {
-    addMetaPackage();
     await assertErrorsInCode(r'''
 import 'package:meta/meta.dart';
 class X {
@@ -43,7 +45,6 @@
   }
 
   test_topLevelFunction() async {
-    addMetaPackage();
     await assertErrorsInCode(r'''
 import 'package:meta/meta.dart';
 @factory
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_factory_method_impl_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_factory_method_impl_test.dart
index c11b9f2..596fbc6 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_factory_method_impl_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_factory_method_impl_test.dart
@@ -3,10 +3,9 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/src/error/codes.dart';
-import 'package:analyzer/src/test_utilities/package_mixin.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,10 +14,14 @@
 }
 
 @reflectiveTest
-class InvalidFactoryMethodImplTest extends DriverResolutionTest
-    with PackageMixin {
+class InvalidFactoryMethodImplTest extends PubPackageResolutionTest {
+  @override
+  void setUp() {
+    super.setUp();
+    writeTestPackageConfigWithMeta();
+  }
+
   test_abstract() async {
-    addMetaPackage();
     await assertNoErrorsInCode(r'''
 import 'package:meta/meta.dart';
 abstract class Stateful {
@@ -30,7 +33,6 @@
   }
 
   test_badReturn() async {
-    addMetaPackage();
     await assertErrorsInCode(r'''
 import 'package:meta/meta.dart';
 class Stateful {
@@ -46,7 +48,6 @@
   }
 
   test_block() async {
-    addMetaPackage();
     await assertNoErrorsInCode(r'''
 import 'package:meta/meta.dart';
 class Stateful {
@@ -60,7 +61,6 @@
   }
 
   test_block_returnNull() async {
-    addMetaPackage();
     await assertNoErrorsInCode(r'''
 import 'package:meta/meta.dart';
 class Stateful {
@@ -74,7 +74,6 @@
   }
 
   test_expr() async {
-    addMetaPackage();
     await assertNoErrorsInCode(r'''
 import 'package:meta/meta.dart';
 class Stateful {
@@ -86,7 +85,6 @@
   }
 
   test_expr_returnNull() async {
-    addMetaPackage();
     await assertNoErrorsInCode(r'''
 import 'package:meta/meta.dart';
 class Stateful {
@@ -98,7 +96,6 @@
   }
 
   test_noReturnType() async {
-    addMetaPackage();
     // Null return types will get flagged elsewhere, no need to pile on here.
     await assertNoErrorsInCode(r'''
 import 'package:meta/meta.dart';
@@ -112,7 +109,6 @@
   }
 
   test_subclass() async {
-    addMetaPackage();
     await assertNoErrorsInCode(r'''
 import 'package:meta/meta.dart';
 abstract class Stateful {
@@ -132,7 +128,6 @@
   }
 
   test_voidReturn() async {
-    addMetaPackage();
     await assertErrorsInCode(r'''
 import 'package:meta/meta.dart';
 
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_factory_name_not_a_class_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_factory_name_not_a_class_test.dart
index 53d8d5f..5a7c46b 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_factory_name_not_a_class_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_factory_name_not_a_class_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class InvalidFactoryNameNotAClassTest extends DriverResolutionTest {
+class InvalidFactoryNameNotAClassTest extends PubPackageResolutionTest {
   test_notClassName() async {
     await assertErrorsInCode(r'''
 int B;
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 7a0e10d..06cd7f3 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
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/dart/error/ffi_code.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class InvalidFieldTypeInStructTest extends DriverResolutionTest {
+class InvalidFieldTypeInStructTest extends PubPackageResolutionTest {
   test_instance_invalid() async {
     await assertErrorsInCode(r'''
 import 'dart:ffi';
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_immutable_annotation_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_immutable_annotation_test.dart
index 86f3980..81be70f 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_immutable_annotation_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_immutable_annotation_test.dart
@@ -3,10 +3,9 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/src/error/codes.dart';
-import 'package:analyzer/src/test_utilities/package_mixin.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,10 +14,14 @@
 }
 
 @reflectiveTest
-class InvalidImmutableAnnotationTest extends DriverResolutionTest
-    with PackageMixin {
+class InvalidImmutableAnnotationTest extends PubPackageResolutionTest {
+  @override
+  void setUp() {
+    super.setUp();
+    writeTestPackageConfigWithMeta();
+  }
+
   test_class() async {
-    addMetaPackage();
     await assertNoErrorsInCode(r'''
 import 'package:meta/meta.dart';
 @immutable
@@ -29,7 +32,6 @@
   }
 
   test_method() async {
-    addMetaPackage();
     await assertErrorsInCode(r'''
 import 'package:meta/meta.dart';
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_language_override_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_language_override_test.dart
index ce3819f..020ebfb 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_language_override_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_language_override_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/dart/error/hint_codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class InvalidLanguageOverrideTest extends DriverResolutionTest {
+class InvalidLanguageOverrideTest extends PubPackageResolutionTest {
   test_correct_11_12() async {
     await assertErrorsInCode(r'''
 // @dart = 11.12
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_literal_annotation_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_literal_annotation_test.dart
index 08262bc..73e21ae 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_literal_annotation_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_literal_annotation_test.dart
@@ -3,10 +3,9 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/src/error/codes.dart';
-import 'package:analyzer/src/test_utilities/package_mixin.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,10 +14,14 @@
 }
 
 @reflectiveTest
-class InvalidLiteralAnnotationTest extends DriverResolutionTest
-    with PackageMixin {
+class InvalidLiteralAnnotationTest extends PubPackageResolutionTest {
+  @override
+  void setUp() {
+    super.setUp();
+    writeTestPackageConfigWithMeta();
+  }
+
   test_constConstructor() async {
-    addMetaPackage();
     await assertNoErrorsInCode(r'''
 import 'package:meta/meta.dart';
 class A {
@@ -29,7 +32,6 @@
   }
 
   test_nonConstConstructor() async {
-    addMetaPackage();
     await assertErrorsInCode(r'''
 import 'package:meta/meta.dart';
 class A {
@@ -42,7 +44,6 @@
   }
 
   test_nonConstructor() async {
-    addMetaPackage();
     await assertErrorsInCode(r'''
 import 'package:meta/meta.dart';
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_modifier_on_constructor_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_modifier_on_constructor_test.dart
index bf3351e..0d0973d 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_modifier_on_constructor_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_modifier_on_constructor_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class InvalidModifierOnConstructorTest extends DriverResolutionTest {
+class InvalidModifierOnConstructorTest extends PubPackageResolutionTest {
   test_async() async {
     await assertErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_modifier_on_setter_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_modifier_on_setter_test.dart
index 11e9f5e..f5fb7e2 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_modifier_on_setter_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_modifier_on_setter_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class InvalidModifierOnSetterTest extends DriverResolutionTest {
+class InvalidModifierOnSetterTest extends PubPackageResolutionTest {
   test_member_async() async {
     // TODO(danrubel): Investigate why error message is duplicated when
     // using fasta parser.
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_non_virtual_annotation_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_non_virtual_annotation_test.dart
index d0c52ae..a159977 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_non_virtual_annotation_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_non_virtual_annotation_test.dart
@@ -3,10 +3,9 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/src/error/codes.dart';
-import 'package:analyzer/src/test_utilities/package_mixin.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,12 +14,11 @@
 }
 
 @reflectiveTest
-class InvalidNonVirtualAnnotationTest extends DriverResolutionTest
-    with PackageMixin {
+class InvalidNonVirtualAnnotationTest extends PubPackageResolutionTest {
   @override
-  setUp() {
+  void setUp() {
     super.setUp();
-    addMetaPackage();
+    writeTestPackageConfigWithMeta();
   }
 
   test_class() async {
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_null_aware_operator_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_null_aware_operator_test.dart
index 3227770..32cefad 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_null_aware_operator_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_null_aware_operator_test.dart
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,8 +15,8 @@
 }
 
 @reflectiveTest
-class InvalidNullAwareOperatorAfterShortCircuitTest extends DriverResolutionTest
-    with WithNullSafetyMixin {
+class InvalidNullAwareOperatorAfterShortCircuitTest
+    extends PubPackageResolutionTest with WithNullSafetyMixin {
   Future<void> test_getter_previousTarget() async {
     await assertErrorsInCode('''
 void f(String? s) {
@@ -26,7 +25,7 @@
 ''', [
       error(StaticWarningCode.INVALID_NULL_AWARE_OPERATOR_AFTER_SHORT_CIRCUIT,
           31, 2,
-          contextMessages: [message('/test/lib/test.dart', 23, 2)]),
+          contextMessages: [message('$testPackageLibPath/test.dart', 23, 2)]),
     ]);
   }
 
@@ -38,7 +37,7 @@
 ''', [
       error(StaticWarningCode.INVALID_NULL_AWARE_OPERATOR_AFTER_SHORT_CIRCUIT,
           27, 2,
-          contextMessages: [message('/test/lib/test.dart', 23, 1)]),
+          contextMessages: [message('$testPackageLibPath/test.dart', 23, 1)]),
     ]);
   }
 
@@ -54,7 +53,7 @@
 ''', [
       error(StaticWarningCode.INVALID_NULL_AWARE_OPERATOR_AFTER_SHORT_CIRCUIT,
           75, 2,
-          contextMessages: [message('/test/lib/test.dart', 69, 2)]),
+          contextMessages: [message('$testPackageLibPath/test.dart', 69, 2)]),
     ]);
   }
 
@@ -66,7 +65,7 @@
 ''', [
       error(StaticWarningCode.INVALID_NULL_AWARE_OPERATOR_AFTER_SHORT_CIRCUIT,
           40, 2,
-          contextMessages: [message('/test/lib/test.dart', 23, 2)]),
+          contextMessages: [message('$testPackageLibPath/test.dart', 23, 2)]),
     ]);
   }
 
@@ -78,16 +77,16 @@
 ''', [
       error(StaticWarningCode.INVALID_NULL_AWARE_OPERATOR_AFTER_SHORT_CIRCUIT,
           40, 2,
-          contextMessages: [message('/test/lib/test.dart', 23, 2)]),
+          contextMessages: [message('$testPackageLibPath/test.dart', 23, 2)]),
       error(StaticWarningCode.INVALID_NULL_AWARE_OPERATOR_AFTER_SHORT_CIRCUIT,
           55, 2,
-          contextMessages: [message('/test/lib/test.dart', 23, 2)]),
+          contextMessages: [message('$testPackageLibPath/test.dart', 23, 2)]),
     ]);
   }
 }
 
 @reflectiveTest
-class InvalidNullAwareOperatorTest extends DriverResolutionTest
+class InvalidNullAwareOperatorTest extends PubPackageResolutionTest
     with WithNullSafetyMixin {
   test_getter_class() async {
     await assertNoErrorsInCode('''
@@ -114,7 +113,7 @@
   }
 
   test_getter_legacy() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 // @dart = 2.5
 var x = 0;
 ''');
@@ -166,7 +165,7 @@
   /// report [StaticWarningCode.INVALID_NULL_AWARE_OPERATOR]. But we also
   /// report another error.
   test_getter_prefix() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 int x = 0;
 ''');
     await assertErrorsInCode('''
@@ -181,7 +180,7 @@
   }
 
   test_index_legacy() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 // @dart = 2.5
 var x = [0];
 ''');
@@ -242,7 +241,7 @@
   }
 
   test_method_legacy() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 // @dart = 2.5
 var x = 0;
 ''');
@@ -299,7 +298,7 @@
   }
 
   test_nullableSpread_legacyType() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 // @dart = 2.5
 var x = <int>[];
 ''');
@@ -371,7 +370,7 @@
   /// report [StaticWarningCode.INVALID_NULL_AWARE_OPERATOR]. But we also
   /// report another error.
   test_setter_prefix() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 int x = 0;
 ''');
     await assertErrorsInCode('''
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_override_different_default_values_named_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_override_different_default_values_named_test.dart
index 267f92e..e3a0206 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_override_different_default_values_named_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_override_different_default_values_named_test.dart
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -19,7 +18,7 @@
 
 @reflectiveTest
 class InvalidOverrideDifferentDefaultValuesNamedTest
-    extends DriverResolutionTest {
+    extends PubPackageResolutionTest {
   test_abstract_different_base_value() async {
     await assertErrorsInCode(r'''
 abstract class A {
@@ -172,7 +171,7 @@
   }
 
   test_concrete_equal_otherLibrary() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   void foo([a = 0]) {}
 }
@@ -187,7 +186,7 @@
   }
 
   test_concrete_equal_otherLibrary_listLiteral() async {
-    newFile('/test/lib/other.dart', content: '''
+    newFile('$testPackageLibPath/other.dart', content: '''
 class C {
   void foo({x: const ['x']}) {}
 }
@@ -302,7 +301,7 @@
     extends InvalidOverrideDifferentDefaultValuesNamedTest
     with WithNullSafetyMixin {
   test_concrete_equal_optIn_extends_optOut() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 // @dart = 2.7
 class A {
   void foo({int a = 0}) {}
@@ -319,7 +318,7 @@
   }
 
   test_concrete_equal_optOut_extends_optIn() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   void foo({int a = 0}) {}
 }
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_override_different_default_values_positional_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_override_different_default_values_positional_test.dart
index 1995413..67d9fa8 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_override_different_default_values_positional_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_override_different_default_values_positional_test.dart
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -19,7 +18,7 @@
 
 @reflectiveTest
 class InvalidOverrideDifferentDefaultValuesPositionalTest
-    extends DriverResolutionTest {
+    extends PubPackageResolutionTest {
   test_abstract_different_base_value() async {
     await assertErrorsInCode(r'''
 abstract class A {
@@ -184,7 +183,7 @@
   }
 
   test_concrete_equal_otherLibrary() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   void foo([x = 0]) {}
 }
@@ -199,7 +198,7 @@
   }
 
   test_concrete_equal_otherLibrary_listLiteral() async {
-    newFile('/test/lib/other.dart', content: '''
+    newFile('$testPackageLibPath/other.dart', content: '''
 class C {
   void foo([x = const ['x']]) {}
 }
@@ -317,7 +316,7 @@
     extends InvalidOverrideDifferentDefaultValuesPositionalTest
     with WithNullSafetyMixin {
   test_concrete_equal_optIn_extends_optOut() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 // @dart = 2.7
 class A {
   void foo([int a = 0]) {}
@@ -334,7 +333,7 @@
   }
 
   test_concrete_equal_optOut_extends_optIn() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   void foo([int a = 0]) {}
 }
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_override_of_non_virtual_member_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_override_of_non_virtual_member_test.dart
index 613fdb9..10a52f8 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_override_of_non_virtual_member_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_override_of_non_virtual_member_test.dart
@@ -3,10 +3,9 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/src/error/codes.dart';
-import 'package:analyzer/src/test_utilities/package_mixin.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,12 +14,11 @@
 }
 
 @reflectiveTest
-class InvalidOverrideOfNonVirtualMemberTest extends DriverResolutionTest
-    with PackageMixin {
+class InvalidOverrideOfNonVirtualMemberTest extends PubPackageResolutionTest {
   @override
-  setUp() {
+  void setUp() {
     super.setUp();
-    addMetaPackage();
+    writeTestPackageConfigWithMeta();
   }
 
   test_class_field() async {
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_override_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_override_test.dart
index d234456..6809dfa 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_override_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_override_test.dart
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,7 +15,7 @@
 }
 
 @reflectiveTest
-class InvalidOverrideTest extends DriverResolutionTest {
+class InvalidOverrideTest extends PubPackageResolutionTest {
   test_getter_returnType() async {
     await assertErrorsInCode('''
 class A {
@@ -561,10 +560,10 @@
 }
 
 @reflectiveTest
-class InvalidOverrideWithNullSafetyTest extends DriverResolutionTest
+class InvalidOverrideWithNullSafetyTest extends PubPackageResolutionTest
     with WithNullSafetyMixin {
   test_method_parameter_functionTyped_optOut_extends_optIn() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 abstract class A {
   A catchError(void Function(Object) a);
 }
@@ -581,7 +580,7 @@
   }
 
   test_method_parameter_interfaceOptOut_concreteOptIn() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   void foo(Object a) {}
 }
@@ -598,7 +597,7 @@
   }
 
   test_mixedInheritance_1() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class B {
   List<int Function(int)> get a => [];
   set a(List<int Function(int)> _) {}
@@ -612,7 +611,7 @@
 }
 ''');
 
-    newFile('/test/lib/b.dart', content: r'''
+    newFile('$testPackageLibPath/b.dart', content: r'''
 // @dart = 2.7
 import 'a.dart';
 
@@ -628,7 +627,7 @@
   }
 
   test_mixedInheritance_2() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class B {
   List<int Function(int)> get a => [];
   set a(List<int Function(int)> _) {}
@@ -642,7 +641,7 @@
 }
 ''');
 
-    newFile('/test/lib/b.dart', content: r'''
+    newFile('$testPackageLibPath/b.dart', content: r'''
 // @dart = 2.7
 import 'a.dart';
 
@@ -661,7 +660,7 @@
   }
 
   test_viaLegacy_class() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A1 {
   int m() => 0;
   int get g => 0;
@@ -675,7 +674,7 @@
 }
 ''');
 
-    newFile('/test/lib/b.dart', content: r'''
+    newFile('$testPackageLibPath/b.dart', content: r'''
 // @dart=2.6
 import 'a.dart';
 
@@ -698,7 +697,7 @@
   }
 
   test_viaLegacy_mixin() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A1 {
   int m() => 0;
   int get g => 0;
@@ -712,7 +711,7 @@
 }
 ''');
 
-    newFile('/test/lib/b.dart', content: r'''
+    newFile('$testPackageLibPath/b.dart', content: r'''
 // @dart=2.6
 import 'a.dart';
 
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 1421341..48725a2 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
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,7 +15,7 @@
 }
 
 @reflectiveTest
-class InvalidReferenceToThisTest extends DriverResolutionTest {
+class InvalidReferenceToThisTest extends PubPackageResolutionTest {
   test_constructor_valid() async {
     await assertErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_required_named_param_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_required_named_param_test.dart
index baca673..50c6f22 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_required_named_param_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_required_named_param_test.dart
@@ -3,10 +3,9 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/src/error/codes.dart';
-import 'package:analyzer/src/test_utilities/package_mixin.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,12 +14,11 @@
 }
 
 @reflectiveTest
-class InvalidRequiredNamedParamTest extends DriverResolutionTest
-    with PackageMixin {
+class InvalidRequiredNamedParamTest extends PubPackageResolutionTest {
   @override
   void setUp() {
     super.setUp();
-    addMetaPackage();
+    writeTestPackageConfigWithMeta();
   }
 
   test_namedParameter_withDefault() async {
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_required_optional_positional_param_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_required_optional_positional_param_test.dart
index 71ba74c..4af82b8 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_required_optional_positional_param_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_required_optional_positional_param_test.dart
@@ -3,10 +3,9 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/src/error/codes.dart';
-import 'package:analyzer/src/test_utilities/package_mixin.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,12 +14,12 @@
 }
 
 @reflectiveTest
-class InvalidRequiredOptionalPositionalParamTest extends DriverResolutionTest
-    with PackageMixin {
+class InvalidRequiredOptionalPositionalParamTest
+    extends PubPackageResolutionTest {
   @override
   void setUp() {
     super.setUp();
-    addMetaPackage();
+    writeTestPackageConfigWithMeta();
   }
 
   test_positionalParameter_noDefault() async {
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_required_positional_param_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_required_positional_param_test.dart
index 5717328..39caa76 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_required_positional_param_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_required_positional_param_test.dart
@@ -3,10 +3,9 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/src/error/codes.dart';
-import 'package:analyzer/src/test_utilities/package_mixin.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,12 +14,11 @@
 }
 
 @reflectiveTest
-class InvalidRequiredPositionalParamTest extends DriverResolutionTest
-    with PackageMixin {
+class InvalidRequiredPositionalParamTest extends PubPackageResolutionTest {
   @override
   void setUp() {
     super.setUp();
-    addMetaPackage();
+    writeTestPackageConfigWithMeta();
   }
 
   test_requiredPositionalParameter() async {
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_sealed_annotation_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_sealed_annotation_test.dart
index 9273a7b..20a4f62 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_sealed_annotation_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_sealed_annotation_test.dart
@@ -3,24 +3,22 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/src/error/codes.dart';
-import 'package:analyzer/src/test_utilities/package_mixin.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
-    defineReflectiveTests(InvalidLiteralAnnotationTest);
+    defineReflectiveTests(InvalidSealedAnnotationTest);
   });
 }
 
 @reflectiveTest
-class InvalidLiteralAnnotationTest extends DriverResolutionTest
-    with PackageMixin {
+class InvalidSealedAnnotationTest extends PubPackageResolutionTest {
   @override
-  setUp() {
+  void setUp() {
     super.setUp();
-    addMetaPackage();
+    writeTestPackageConfigWithMeta();
   }
 
   test_class() async {
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 4ea6c25..bf48fa1 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_super_invocation_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_super_invocation_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class InvalidSuperInvocationTest extends DriverResolutionTest {
+class InvalidSuperInvocationTest extends PubPackageResolutionTest {
   test_superBeforeAssert() async {
     await assertErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_type_argument_in_const_list_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_type_argument_in_const_list_test.dart
index 334e8e1..a47fffd 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_type_argument_in_const_list_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_type_argument_in_const_list_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class InvalidTypeArgumentInConstListTest extends DriverResolutionTest {
+class InvalidTypeArgumentInConstListTest extends PubPackageResolutionTest {
   test_type_parameter() async {
     await assertErrorsInCode(r'''
 class A<E> {
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_type_argument_in_const_map_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_type_argument_in_const_map_test.dart
index 8d0bf55..3c75e1d 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_type_argument_in_const_map_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_type_argument_in_const_map_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class InvalidTypeArgumentInConstMapTest extends DriverResolutionTest {
+class InvalidTypeArgumentInConstMapTest extends PubPackageResolutionTest {
   test_key() async {
     await assertErrorsInCode(r'''
 class A<E> {
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_type_argument_in_const_set_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_type_argument_in_const_set_test.dart
index aaffeb6..fe0c076 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_type_argument_in_const_set_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_type_argument_in_const_set_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class InvalidTypeArgumentInConstSetTest extends DriverResolutionTest {
+class InvalidTypeArgumentInConstSetTest extends PubPackageResolutionTest {
   test_type_parameter() async {
     await assertErrorsInCode(r'''
 class A<E> {
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_uri_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_uri_test.dart
index 3240d4d..3304a00 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_uri_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_uri_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class InvalidUriTest extends DriverResolutionTest {
+class InvalidUriTest extends PubPackageResolutionTest {
   test_emptyUri() async {
     await assertNoErrorsInCode('''
 import '' as top;
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_use_of_covariant_in_extension_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_use_of_covariant_in_extension_test.dart
index 93d316f..93727c5 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_use_of_covariant_in_extension_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_use_of_covariant_in_extension_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/generated/parser.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class InvalidUseOfCovariantInExtensionTest extends DriverResolutionTest {
+class InvalidUseOfCovariantInExtensionTest extends PubPackageResolutionTest {
   test_optional_named() async {
     await assertErrorsInCode('''
 extension E on String {
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_use_of_protected_member_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_use_of_protected_member_test.dart
index 1a807fe..9c15de5 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_use_of_protected_member_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_use_of_protected_member_test.dart
@@ -3,11 +3,10 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/src/error/codes.dart';
-import 'package:analyzer/src/test_utilities/package_mixin.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import '../../generated/test_support.dart';
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,11 +15,15 @@
 }
 
 @reflectiveTest
-class InvalidUseOfProtectedMemberTest extends DriverResolutionTest
-    with PackageMixin {
+class InvalidUseOfProtectedMemberTest extends PubPackageResolutionTest {
+  @override
+  void setUp() {
+    super.setUp();
+    writeTestPackageConfigWithMeta();
+  }
+
   test_closure() async {
-    addMetaPackage();
-    newFile('/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 import 'package:meta/meta.dart';
 
 class A {
@@ -28,7 +31,7 @@
   int a() => 42;
 }
 ''');
-    newFile('/lib2.dart', content: r'''
+    newFile('$testPackageLibPath/lib2.dart', content: r'''
 import 'lib1.dart';
 
 void main() {
@@ -37,14 +40,13 @@
 }
 ''');
 
-    await _resolveFile('/lib1.dart');
-    await _resolveFile('/lib2.dart', [
+    await _resolveFile('$testPackageLibPath/lib1.dart');
+    await _resolveFile('$testPackageLibPath/lib2.dart', [
       error(HintCode.INVALID_USE_OF_PROTECTED_MEMBER, 56, 1),
     ]);
   }
 
   test_extendingSubclass() async {
-    addMetaPackage();
     await assertNoErrorsInCode(r'''
 import 'package:meta/meta.dart';
 class A {
@@ -57,15 +59,14 @@
   }
 
   test_extension_outsideClassAndFile() async {
-    addMetaPackage();
-    newFile('/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 import 'package:meta/meta.dart';
 class A {
   @protected
   void a(int i) {}
 }
 ''');
-    newFile('/lib2.dart', content: r'''
+    newFile('$testPackageLibPath/lib2.dart', content: r'''
 import 'lib1.dart';
 extension E on A {
   e() {
@@ -74,14 +75,13 @@
 }
 ''');
 
-    await _resolveFile('/lib1.dart');
-    await _resolveFile('/lib2.dart', [
+    await _resolveFile('$testPackageLibPath/lib1.dart');
+    await _resolveFile('$testPackageLibPath/lib2.dart', [
       error(HintCode.INVALID_USE_OF_PROTECTED_MEMBER, 51, 1),
     ]);
   }
 
   test_field() async {
-    addMetaPackage();
     await assertNoErrorsInCode(r'''
 import 'package:meta/meta.dart';
 class A {
@@ -95,29 +95,27 @@
   }
 
   test_field_outsideClassAndLibrary() async {
-    addMetaPackage();
-    newFile('/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 import 'package:meta/meta.dart';
 class A {
   @protected
   int a;
 }
 ''');
-    newFile('/lib2.dart', content: r'''
+    newFile('$testPackageLibPath/lib2.dart', content: r'''
 import 'lib1.dart';
 abstract class B {
   int b() => new A().a;
 }
 ''');
 
-    await _resolveFile('/lib1.dart');
-    await _resolveFile('/lib2.dart', [
+    await _resolveFile('$testPackageLibPath/lib1.dart');
+    await _resolveFile('$testPackageLibPath/lib2.dart', [
       error(HintCode.INVALID_USE_OF_PROTECTED_MEMBER, 60, 1),
     ]);
   }
 
   test_field_subclassAndSameLibrary() async {
-    addMetaPackage();
     await assertNoErrorsInCode(r'''
 import 'package:meta/meta.dart';
 class A {
@@ -130,15 +128,14 @@
   }
 
   test_fromSuperclassConstraint() async {
-    addMetaPackage();
-    newFile('/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 import 'package:meta/meta.dart';
 abstract class A {
   @protected
   void foo() {}
 }
 ''');
-    newFile('/lib2.dart', content: r'''
+    newFile('$testPackageLibPath/lib2.dart', content: r'''
 import 'lib1.dart';
 mixin M on A {
   @override
@@ -148,20 +145,19 @@
 }
 ''');
 
-    await _resolveFile('/lib1.dart');
-    await _resolveFile('/lib2.dart');
+    await _resolveFile('$testPackageLibPath/lib1.dart');
+    await _resolveFile('$testPackageLibPath/lib2.dart');
   }
 
   test_function_outsideClassAndLibrary() async {
-    addMetaPackage();
-    newFile('/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 import 'package:meta/meta.dart';
 class A {
   @protected
   void a(){ }
 }
 ''');
-    newFile('/lib2.dart', content: r'''
+    newFile('$testPackageLibPath/lib2.dart', content: r'''
 import 'lib1.dart';
 
 main() {
@@ -169,14 +165,13 @@
 }
 ''');
 
-    await _resolveFile('/lib1.dart');
-    await _resolveFile('/lib2.dart', [
+    await _resolveFile('$testPackageLibPath/lib1.dart');
+    await _resolveFile('$testPackageLibPath/lib2.dart', [
       error(HintCode.INVALID_USE_OF_PROTECTED_MEMBER, 40, 1),
     ]);
   }
 
   test_function_sameLibrary() async {
-    addMetaPackage();
     await assertNoErrorsInCode(r'''
 import 'package:meta/meta.dart';
 class A {
@@ -189,7 +184,6 @@
   }
 
   test_function_subclass() async {
-    addMetaPackage();
     await assertNoErrorsInCode(r'''
 import 'package:meta/meta.dart';
 class A {
@@ -203,7 +197,6 @@
   }
 
   test_getter() async {
-    addMetaPackage();
     await assertNoErrorsInCode(r'''
 import 'package:meta/meta.dart';
 class A {
@@ -217,15 +210,14 @@
   }
 
   test_getter_outsideClassAndLibrary() async {
-    addMetaPackage();
-    newFile('/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 import 'package:meta/meta.dart';
 class A {
   @protected
   int get a => 42;
 }
 ''');
-    newFile('/lib2.dart', content: r'''
+    newFile('$testPackageLibPath/lib2.dart', content: r'''
 import 'lib1.dart';
 class B {
   A a;
@@ -233,14 +225,13 @@
 }
 ''');
 
-    await _resolveFile('/lib1.dart');
-    await _resolveFile('/lib2.dart', [
+    await _resolveFile('$testPackageLibPath/lib1.dart');
+    await _resolveFile('$testPackageLibPath/lib2.dart', [
       error(HintCode.INVALID_USE_OF_PROTECTED_MEMBER, 52, 1),
     ]);
   }
 
   test_getter_subclass() async {
-    addMetaPackage();
     await assertNoErrorsInCode(r'''
 import 'package:meta/meta.dart';
 class A {
@@ -253,8 +244,7 @@
   }
 
   test_inDocs() async {
-    addMetaPackage();
-    newFile('/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 import 'package:meta/meta.dart';
 
 class A {
@@ -268,26 +258,25 @@
   int a() => 0;
 }
 ''');
-    newFile('/lib2.dart', content: r'''
+    newFile('$testPackageLibPath/lib2.dart', content: r'''
 import 'lib1.dart';
 /// OK: [A.a], [A.b], [A.c].
 f() {}
 ''');
 
-    await _resolveFile('/lib1.dart');
-    await _resolveFile('/lib2.dart');
+    await _resolveFile('$testPackageLibPath/lib1.dart');
+    await _resolveFile('$testPackageLibPath/lib2.dart');
   }
 
   test_method_outsideClassAndLibrary() async {
-    addMetaPackage();
-    newFile('/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 import 'package:meta/meta.dart';
 class A {
   @protected
   void a() {}
 }
 ''');
-    newFile('/lib2.dart', content: r'''
+    newFile('$testPackageLibPath/lib2.dart', content: r'''
 import 'lib1.dart';
 
 class B {
@@ -295,15 +284,14 @@
 }
 ''');
 
-    await _resolveFile('/lib1.dart');
-    await _resolveFile('/lib2.dart', [
+    await _resolveFile('$testPackageLibPath/lib1.dart');
+    await _resolveFile('$testPackageLibPath/lib2.dart', [
       error(HintCode.INVALID_USE_OF_PROTECTED_MEMBER, 53, 1),
     ]);
   }
 
   test_method_subclass() async {
     // https://github.com/dart-lang/linter/issues/257
-    addMetaPackage();
     await assertNoErrorsInCode(r'''
 import 'package:meta/meta.dart';
 
@@ -323,7 +311,6 @@
   }
 
   test_mixingIn() async {
-    addMetaPackage();
     await assertNoErrorsInCode(r'''
 import 'package:meta/meta.dart';
 class A {
@@ -339,7 +326,6 @@
     // TODO(srawlins): This test verifies that the analyzer **allows**
     // protected members to be called from static members, which violates the
     // protected spec.
-    addMetaPackage();
     await assertNoErrorsInCode(r'''
 import 'package:meta/meta.dart';
 class A {
@@ -351,7 +337,6 @@
   }
 
   test_sameLibrary() async {
-    addMetaPackage();
     await assertNoErrorsInCode(r'''
 import 'package:meta/meta.dart';
 class A {
@@ -370,15 +355,14 @@
     // TODO(srawlins): This test verifies that the analyzer **allows**
     // protected members to be called on objects other than `this`, which
     // violates the protected spec.
-    addMetaPackage();
-    newFile('/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 import 'package:meta/meta.dart';
 class A {
   @protected
   void set a(int i) { }
 }
 ''');
-    newFile('/lib2.dart', content: r'''
+    newFile('$testPackageLibPath/lib2.dart', content: r'''
 import 'lib1.dart';
 class B {
   A a;
@@ -388,14 +372,13 @@
 }
 ''');
 
-    await _resolveFile('/lib1.dart');
-    await _resolveFile('/lib2.dart', [
+    await _resolveFile('$testPackageLibPath/lib1.dart');
+    await _resolveFile('$testPackageLibPath/lib2.dart', [
       error(HintCode.INVALID_USE_OF_PROTECTED_MEMBER, 56, 1),
     ]);
   }
 
   test_setter_sameClass() async {
-    addMetaPackage();
     await assertErrorsInCode(r'''
 import 'package:meta/meta.dart';
 class A {
@@ -412,7 +395,6 @@
   }
 
   test_setter_subclass() async {
-    addMetaPackage();
     await assertNoErrorsInCode(r'''
 import 'package:meta/meta.dart';
 class A {
@@ -428,7 +410,6 @@
   }
 
   test_setter_subclassImplementing() async {
-    addMetaPackage();
     await assertNoErrorsInCode(r'''
 import 'package:meta/meta.dart';
 class A {
@@ -443,7 +424,6 @@
   }
 
   test_topLevelVariable() async {
-    addMetaPackage();
     await assertNoErrorsInCode(r'''
 import 'package:meta/meta.dart';
 @protected
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_use_of_visible_for_template_member_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_use_of_visible_for_template_member_test.dart
index 858747c..d894e7d 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_use_of_visible_for_template_member_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_use_of_visible_for_template_member_test.dart
@@ -2,13 +2,12 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analyzer/file_system/file_system.dart';
 import 'package:analyzer/src/error/codes.dart';
 import 'package:analyzer/src/test_utilities/package_mixin.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import '../../generated/test_support.dart';
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -17,11 +16,19 @@
 }
 
 @reflectiveTest
-class InvalidUseOfVisibleForTemplateMemberTest extends DriverResolutionTest
-    with PackageMixin {
-  void addAngularMetaPackage() {
-    Folder lib = addPubPackage('angular_meta');
-    newFile(join(lib.path, 'angular_meta.dart'), content: r'''
+class InvalidUseOfVisibleForTemplateMemberTest
+    extends PubPackageResolutionTest {
+  @override
+  void setUp() {
+    super.setUp();
+
+    var metaPath = '/packages/meta';
+    PackagesContent.addMetaPackageFiles(
+      getFolder(metaPath),
+    );
+
+    var angularMetaPath = '/packages/angular_meta';
+    newFile('$angularMetaPath/lib/angular_meta.dart', content: r'''
 library angular.meta;
 
 const _VisibleForTemplate visibleForTemplate = const _VisibleForTemplate();
@@ -30,76 +37,77 @@
   const _VisibleForTemplate();
 }
 ''');
+
+    writeTestPackageConfig({
+      'meta': metaPath,
+      'angular_meta': angularMetaPath,
+    });
   }
 
   test_export() async {
-    addAngularMetaPackage();
-    newFile('/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 import 'package:angular_meta/angular_meta.dart';
 
 @visibleForTemplate
 int fn0() => 1;
 ''');
-    newFile('/lib2.dart', content: r'''
+    newFile('$testPackageLibPath/lib2.dart', content: r'''
 export 'lib1.dart' show fn0;
 ''');
 
-    await _resolveFile('/lib1.dart');
-    await _resolveFile('/lib2.dart');
+    await _resolveFile('$testPackageLibPath/lib1.dart');
+    await _resolveFile('$testPackageLibPath/lib2.dart');
   }
 
   test_functionInExtension() async {
-    addAngularMetaPackage();
-    newFile('/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 import 'package:angular_meta/angular_meta.dart';
 extension E on List {
   @visibleForTemplate
   int m() => 1;
 }
 ''');
-    newFile('/lib2.dart', content: r'''
+    newFile('$testPackageLibPath/lib2.dart', content: r'''
 import 'lib1.dart';
 void main() {
   E([]).m();
 }
 ''');
 
-    await _resolveFile('/lib1.dart');
-    await _resolveFile('/lib2.dart', [
+    await _resolveFile('$testPackageLibPath/lib1.dart');
+    await _resolveFile('$testPackageLibPath/lib2.dart', [
       error(HintCode.INVALID_USE_OF_VISIBLE_FOR_TEMPLATE_MEMBER, 42, 1),
     ]);
   }
 
   test_functionInExtension_fromTemplate() async {
-    addAngularMetaPackage();
-    newFile('/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 import 'package:angular_meta/angular_meta.dart';
 extension E on List {
   @visibleForTemplate
   int m() => 1;
 }
 ''');
-    newFile('/lib1.template.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.template.dart', content: r'''
 import 'lib1.dart';
 void main() {
   E([]).m();
 }
 ''');
 
-    await _resolveFile('/lib1.dart');
-    await _resolveFile('/lib1.template.dart');
+    await _resolveFile('$testPackageLibPath/lib1.dart');
+    await _resolveFile('$testPackageLibPath/lib1.template.dart');
   }
 
   test_method() async {
-    addAngularMetaPackage();
-    newFile('/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 import 'package:angular_meta/angular_meta.dart';
 class A {
   @visibleForTemplate
   void a(){ }
 }
 ''');
-    newFile('/lib2.dart', content: r'''
+    newFile('$testPackageLibPath/lib2.dart', content: r'''
 import 'lib1.dart';
 
 class B {
@@ -107,23 +115,21 @@
 }
 ''');
 
-    await _resolveFile('/lib1.dart');
-    await _resolveFile('/lib2.dart', [
+    await _resolveFile('$testPackageLibPath/lib1.dart');
+    await _resolveFile('$testPackageLibPath/lib2.dart', [
       error(HintCode.INVALID_USE_OF_VISIBLE_FOR_TEMPLATE_MEMBER, 53, 1),
     ]);
   }
 
   test_method_fromTemplate() async {
-    addAngularMetaPackage();
-    newFile('/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 import 'package:angular_meta/angular_meta.dart';
 class A {
   @visibleForTemplate
   void a(){ }
 }
 ''');
-    addAngularMetaPackage();
-    newFile('/lib1.template.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.template.dart', content: r'''
 import 'lib1.dart';
 
 class B {
@@ -131,13 +137,12 @@
 }
 ''');
 
-    await _resolveFile('/lib1.dart');
-    await _resolveFile('/lib1.template.dart');
+    await _resolveFile('$testPackageLibPath/lib1.dart');
+    await _resolveFile('$testPackageLibPath/lib1.template.dart');
   }
 
   test_namedConstructor() async {
-    addAngularMetaPackage();
-    newFile('/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 import 'package:angular_meta/angular_meta.dart';
 class A {
   int _x;
@@ -146,7 +151,7 @@
   A.forTemplate(this._x);
 }
 ''');
-    newFile('/lib2.dart', content: r'''
+    newFile('$testPackageLibPath/lib2.dart', content: r'''
 import 'lib1.dart';
 
 void main() {
@@ -154,17 +159,16 @@
 }
 ''');
 
-    await _resolveFile('/lib1.dart', [
+    await _resolveFile('$testPackageLibPath/lib1.dart', [
       error(HintCode.UNUSED_FIELD, 65, 2),
     ]);
-    await _resolveFile('/lib2.dart', [
+    await _resolveFile('$testPackageLibPath/lib2.dart', [
       error(HintCode.INVALID_USE_OF_VISIBLE_FOR_TEMPLATE_MEMBER, 41, 13),
     ]);
   }
 
   test_propertyAccess() async {
-    addAngularMetaPackage();
-    newFile('/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 import 'package:angular_meta/angular_meta.dart';
 class A {
   @visibleForTemplate
@@ -174,7 +178,7 @@
   set b(_) => 7;
 }
 ''');
-    newFile('/lib2.dart', content: r'''
+    newFile('$testPackageLibPath/lib2.dart', content: r'''
 import 'lib1.dart';
 
 void main() {
@@ -183,17 +187,15 @@
 }
 ''');
 
-    await _resolveFile('/lib1.dart');
-    await _resolveFile('/lib2.dart', [
+    await _resolveFile('$testPackageLibPath/lib1.dart');
+    await _resolveFile('$testPackageLibPath/lib2.dart', [
       error(HintCode.INVALID_USE_OF_VISIBLE_FOR_TEMPLATE_MEMBER, 45, 1),
       error(HintCode.INVALID_USE_OF_VISIBLE_FOR_TEMPLATE_MEMBER, 58, 1),
     ]);
   }
 
   test_protectedAndForTemplate_usedAsProtected() async {
-    addAngularMetaPackage();
-    addMetaPackage();
-    newFile('/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 import 'package:angular_meta/angular_meta.dart';
 import 'package:meta/meta.dart';
 class A {
@@ -202,21 +204,19 @@
   void a(){ }
 }
 ''');
-    newFile('/lib2.dart', content: r'''
+    newFile('$testPackageLibPath/lib2.dart', content: r'''
 import 'lib1.dart';
 class B extends A {
   void b() => new A().a();
 }
 ''');
 
-    await _resolveFile('/lib1.dart');
-    await _resolveFile('/lib2.dart');
+    await _resolveFile('$testPackageLibPath/lib1.dart');
+    await _resolveFile('$testPackageLibPath/lib2.dart');
   }
 
   test_protectedAndForTemplate_usedAsTemplate() async {
-    addAngularMetaPackage();
-    addMetaPackage();
-    newFile('/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 import 'package:angular_meta/angular_meta.dart';
 import 'package:meta/meta.dart';
 class A {
@@ -225,28 +225,25 @@
   void a(){ }
 }
 ''');
-    addAngularMetaPackage();
-    addMetaPackage();
-    newFile('/lib1.template.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.template.dart', content: r'''
 import 'lib1.dart';
 void main() {
   new A().a();
 }
 ''');
 
-    await _resolveFile('/lib1.dart');
-    await _resolveFile('/lib1.template.dart');
+    await _resolveFile('$testPackageLibPath/lib1.dart');
+    await _resolveFile('$testPackageLibPath/lib1.template.dart');
   }
 
   test_topLevelFunction() async {
-    addAngularMetaPackage();
-    newFile('/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 import 'package:angular_meta/angular_meta.dart';
 
 @visibleForTemplate
 int fn0() => 1;
 ''');
-    newFile('/lib2.dart', content: r'''
+    newFile('$testPackageLibPath/lib2.dart', content: r'''
 import 'lib1.dart';
 
 void main() {
@@ -254,15 +251,14 @@
 }
 ''');
 
-    await _resolveFile('/lib1.dart');
-    await _resolveFile('/lib2.dart', [
+    await _resolveFile('$testPackageLibPath/lib1.dart');
+    await _resolveFile('$testPackageLibPath/lib2.dart', [
       error(HintCode.INVALID_USE_OF_VISIBLE_FOR_TEMPLATE_MEMBER, 37, 3),
     ]);
   }
 
   test_unnamedConstructor() async {
-    addAngularMetaPackage();
-    newFile('/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 import 'package:angular_meta/angular_meta.dart';
 class A {
   int _x;
@@ -271,7 +267,7 @@
   A(this._x);
 }
 ''');
-    newFile('/lib2.dart', content: r'''
+    newFile('$testPackageLibPath/lib2.dart', content: r'''
 import 'lib1.dart';
 
 void main() {
@@ -279,10 +275,10 @@
 }
 ''');
 
-    await _resolveFile('/lib1.dart', [
+    await _resolveFile('$testPackageLibPath/lib1.dart', [
       error(HintCode.UNUSED_FIELD, 65, 2),
     ]);
-    await _resolveFile('/lib2.dart', [
+    await _resolveFile('$testPackageLibPath/lib2.dart', [
       error(HintCode.INVALID_USE_OF_VISIBLE_FOR_TEMPLATE_MEMBER, 41, 1),
     ]);
   }
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_use_of_visible_for_testing_member_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_use_of_visible_for_testing_member_test.dart
index ba4d62f..80c9b7b 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_use_of_visible_for_testing_member_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_use_of_visible_for_testing_member_test.dart
@@ -3,11 +3,10 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/src/error/codes.dart';
-import 'package:analyzer/src/test_utilities/package_mixin.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import '../../generated/test_support.dart';
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,152 +15,152 @@
 }
 
 @reflectiveTest
-class InvalidUseOfVisibleForTestingMemberTest extends DriverResolutionTest
-    with PackageMixin {
+class InvalidUseOfVisibleForTestingMemberTest extends PubPackageResolutionTest {
+  @override
+  String get testPackageRootPath => '/home/my';
+
+  @override
+  void setUp() {
+    super.setUp();
+    writeTestPackageConfigWithMeta();
+  }
+
   test_export() async {
-    addMetaPackage();
-    newFile('/lib1.dart', content: r'''
+    newFile('$testPackageRootPath/lib1.dart', content: r'''
 import 'package:meta/meta.dart';
 @visibleForTesting
 int fn0() => 1;
 ''');
-    newFile('/lib2.dart', content: r'''
+    newFile('$testPackageRootPath/lib2.dart', content: r'''
 export 'lib1.dart' show fn0;
 ''');
 
-    await _resolveFile('/lib1.dart');
-    await _resolveFile('/lib2.dart');
+    await _resolveFile('$testPackageRootPath/lib1.dart');
+    await _resolveFile('$testPackageRootPath/lib2.dart');
   }
 
   test_fromTestDirectory() async {
-    addMetaPackage();
-    newFile('/lib1.dart', content: r'''
+    newFile('$testPackageRootPath/lib1.dart', content: r'''
 import 'package:meta/meta.dart';
 class A {
   @visibleForTesting
   void a(){ }
 }
 ''');
-    newFile('/test/test.dart', content: r'''
+    newFile('$testPackageRootPath/test/test.dart', content: r'''
 import '../lib1.dart';
 class B {
   void b() => new A().a();
 }
 ''');
 
-    await _resolveFile('/lib1.dart');
-    await _resolveFile('/test/test.dart');
+    await _resolveFile('$testPackageRootPath/lib1.dart');
+    await _resolveFile('$testPackageRootPath/test/test.dart');
   }
 
   test_fromTestingDirectory() async {
-    addMetaPackage();
-    newFile('/lib1.dart', content: r'''
+    newFile('$testPackageRootPath/lib1.dart', content: r'''
 import 'package:meta/meta.dart';
 class A {
   @visibleForTesting
   void a(){ }
 }
 ''');
-    newFile('/testing/lib1.dart', content: r'''
+    newFile('$testPackageRootPath/testing/lib1.dart', content: r'''
 import '../lib1.dart';
 class C {
   void b() => new A().a();
 }
 ''');
 
-    await _resolveFile('/lib1.dart');
-    await _resolveFile('/testing/lib1.dart');
+    await _resolveFile('$testPackageRootPath/lib1.dart');
+    await _resolveFile('$testPackageRootPath/testing/lib1.dart');
   }
 
   test_functionInExtension() async {
-    addMetaPackage();
-    newFile('/lib1.dart', content: r'''
+    newFile('$testPackageRootPath/lib1.dart', content: r'''
 import 'package:meta/meta.dart';
 extension E on List {
   @visibleForTesting
   int m() => 1;
 }
 ''');
-    newFile('/lib2.dart', content: r'''
+    newFile('$testPackageRootPath/lib2.dart', content: r'''
 import 'lib1.dart';
 void main() {
   E([]).m();
 }
 ''');
 
-    await _resolveFile('/lib1.dart');
-    await _resolveFile('/lib2.dart', [
+    await _resolveFile('$testPackageRootPath/lib1.dart');
+    await _resolveFile('$testPackageRootPath/lib2.dart', [
       error(HintCode.INVALID_USE_OF_VISIBLE_FOR_TESTING_MEMBER, 42, 1),
     ]);
   }
 
   test_functionInExtension_fromTestDirectory() async {
-    addMetaPackage();
-    newFile('/lib1.dart', content: r'''
+    newFile('$testPackageRootPath/lib1.dart', content: r'''
 import 'package:meta/meta.dart';
 extension E on List {
   @visibleForTesting
   int m() => 1;
 }
 ''');
-    newFile('/test/test.dart', content: r'''
+    newFile('$testPackageRootPath/test/test.dart', content: r'''
 import '../lib1.dart';
 void main() {
   E([]).m();
 }
 ''');
 
-    await _resolveFile('/lib1.dart');
-    await _resolveFile('/test/test.dart');
+    await _resolveFile('$testPackageRootPath/lib1.dart');
+    await _resolveFile('$testPackageRootPath/test/test.dart');
   }
 
   test_getter() async {
-    addMetaPackage();
-    newFile('/lib1.dart', content: r'''
+    newFile('$testPackageRootPath/lib1.dart', content: r'''
 import 'package:meta/meta.dart';
 class A {
   @visibleForTesting
   int get a => 7;
 }
 ''');
-    newFile('/lib2.dart', content: r'''
+    newFile('$testPackageRootPath/lib2.dart', content: r'''
 import 'lib1.dart';
 void main() {
   new A().a;
 }
 ''');
 
-    await _resolveFile('/lib1.dart');
-    await _resolveFile('/lib2.dart', [
+    await _resolveFile('$testPackageRootPath/lib1.dart');
+    await _resolveFile('$testPackageRootPath/lib2.dart', [
       error(HintCode.INVALID_USE_OF_VISIBLE_FOR_TESTING_MEMBER, 44, 1),
     ]);
   }
 
   test_method() async {
-    addMetaPackage();
-    newFile('/lib1.dart', content: r'''
+    newFile('$testPackageRootPath/lib1.dart', content: r'''
 import 'package:meta/meta.dart';
 class A {
   @visibleForTesting
   void a(){ }
 }
 ''');
-    newFile('/lib2.dart', content: r'''
+    newFile('$testPackageRootPath/lib2.dart', content: r'''
 import 'lib1.dart';
 class B {
   void b() => new A().a();
 }
 ''');
 
-    await _resolveFile('/lib1.dart');
-    await _resolveFile('/lib2.dart', [
+    await _resolveFile('$testPackageRootPath/lib1.dart');
+    await _resolveFile('$testPackageRootPath/lib2.dart', [
       error(HintCode.INVALID_USE_OF_VISIBLE_FOR_TESTING_MEMBER, 52, 1),
     ]);
   }
 
   test_mixin() async {
-    addMetaPackage();
-    newFile('/lib1.dart', content: r'''
+    newFile('$testPackageRootPath/lib1.dart', content: r'''
 import 'package:meta/meta.dart';
 mixin M {
   @visibleForTesting
@@ -169,22 +168,21 @@
 }
 class C with M {}
 ''');
-    newFile('/lib2.dart', content: r'''
+    newFile('$testPackageRootPath/lib2.dart', content: r'''
 import 'lib1.dart';
 void main() {
   C().m();
 }
 ''');
 
-    await _resolveFile('/lib1.dart');
-    await _resolveFile('/lib2.dart', [
+    await _resolveFile('$testPackageRootPath/lib1.dart');
+    await _resolveFile('$testPackageRootPath/lib2.dart', [
       error(HintCode.INVALID_USE_OF_VISIBLE_FOR_TESTING_MEMBER, 40, 1),
     ]);
   }
 
   test_namedConstructor() async {
-    addMetaPackage();
-    newFile('/lib1.dart', content: r'''
+    newFile('$testPackageRootPath/lib1.dart', content: r'''
 import 'package:meta/meta.dart';
 class A {
   int _x;
@@ -193,25 +191,24 @@
   A.forTesting(this._x);
 }
 ''');
-    newFile('/lib2.dart', content: r'''
+    newFile('$testPackageRootPath/lib2.dart', content: r'''
 import 'lib1.dart';
 void main() {
   new A.forTesting(0);
 }
 ''');
 
-    await _resolveFile('/lib1.dart', [
+    await _resolveFile('$testPackageRootPath/lib1.dart', [
       error(HintCode.UNUSED_FIELD, 49, 2),
     ]);
-    await _resolveFile('/lib2.dart', [
+    await _resolveFile('$testPackageRootPath/lib2.dart', [
       error(HintCode.INVALID_USE_OF_VISIBLE_FOR_TESTING_MEMBER, 40, 12,
           messageContains: 'A.forTesting'),
     ]);
   }
 
   test_protectedAndForTesting_usedAsProtected() async {
-    addMetaPackage();
-    newFile('/lib1.dart', content: r'''
+    newFile('$testPackageRootPath/lib1.dart', content: r'''
 import 'package:meta/meta.dart';
 class A {
   @protected
@@ -219,20 +216,19 @@
   void a(){ }
 }
 ''');
-    newFile('/lib2.dart', content: r'''
+    newFile('$testPackageRootPath/lib2.dart', content: r'''
 import 'lib1.dart';
 class B extends A {
   void b() => new A().a();
 }
 ''');
 
-    await _resolveFile('/lib1.dart');
-    await _resolveFile('/lib2.dart');
+    await _resolveFile('$testPackageRootPath/lib1.dart');
+    await _resolveFile('$testPackageRootPath/lib2.dart');
   }
 
   test_protectedAndForTesting_usedAsTesting() async {
-    addMetaPackage();
-    newFile('/lib1.dart', content: r'''
+    newFile('$testPackageRootPath/lib1.dart', content: r'''
 import 'package:meta/meta.dart';
 class A {
   @protected
@@ -240,63 +236,59 @@
   void a(){ }
 }
 ''');
-    addMetaPackage();
-    newFile('/test/test1.dart', content: r'''
+    newFile('$testPackageRootPath/test/test1.dart', content: r'''
 import '../lib1.dart';
 void main() {
   new A().a();
 }
 ''');
 
-    await _resolveFile('/lib1.dart');
-    await _resolveFile('/test/test1.dart');
+    await _resolveFile('$testPackageRootPath/lib1.dart');
+    await _resolveFile('$testPackageRootPath/test/test1.dart');
   }
 
   test_setter() async {
-    addMetaPackage();
-    newFile('/lib1.dart', content: r'''
+    newFile('$testPackageRootPath/lib1.dart', content: r'''
 import 'package:meta/meta.dart';
 class A {
   @visibleForTesting
   set b(_) => 7;
 }
 ''');
-    newFile('/lib2.dart', content: r'''
+    newFile('$testPackageRootPath/lib2.dart', content: r'''
 import 'lib1.dart';
 void main() {
   new A().b = 6;
 }
 ''');
 
-    await _resolveFile('/lib1.dart');
-    await _resolveFile('/lib2.dart', [
+    await _resolveFile('$testPackageRootPath/lib1.dart');
+    await _resolveFile('$testPackageRootPath/lib2.dart', [
       error(HintCode.INVALID_USE_OF_VISIBLE_FOR_TESTING_MEMBER, 44, 1),
     ]);
   }
 
   test_topLevelFunction() async {
-    addMetaPackage();
-    newFile('/lib1.dart', content: r'''
+    newFile('$testPackageRootPath/lib1.dart', content: r'''
 import 'package:meta/meta.dart';
 @visibleForTesting
 int fn0() => 1;
 ''');
-    newFile('/lib2.dart', content: r'''
+    newFile('$testPackageRootPath/lib2.dart', content: r'''
 import 'lib1.dart';
 void main() {
   fn0();
 }
 ''');
 
-    await _resolveFile('/lib1.dart');
-    await _resolveFile('/lib2.dart', [
+    await _resolveFile('$testPackageRootPath/lib1.dart');
+    await _resolveFile('$testPackageRootPath/lib2.dart', [
       error(HintCode.INVALID_USE_OF_VISIBLE_FOR_TESTING_MEMBER, 36, 3),
     ]);
   }
 
   test_unnamedConstructor() async {
-    addMetaPackage();
-    newFile('/lib1.dart', content: r'''
+    newFile('$testPackageRootPath/lib1.dart', content: r'''
 import 'package:meta/meta.dart';
 class A {
   int _x;
@@ -305,17 +297,17 @@
   A(this._x);
 }
 ''');
-    newFile('/lib2.dart', content: r'''
+    newFile('$testPackageRootPath/lib2.dart', content: r'''
 import 'lib1.dart';
 void main() {
   new A(0);
 }
 ''');
 
-    await _resolveFile('/lib1.dart', [
+    await _resolveFile('$testPackageRootPath/lib1.dart', [
       error(HintCode.UNUSED_FIELD, 49, 2),
     ]);
-    await _resolveFile('/lib2.dart', [
+    await _resolveFile('$testPackageRootPath/lib2.dart', [
       error(HintCode.INVALID_USE_OF_VISIBLE_FOR_TESTING_MEMBER, 40, 1),
     ]);
   }
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_visibility_annotation_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_visibility_annotation_test.dart
index 24aa6a1..4a42fcd 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_visibility_annotation_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_visibility_annotation_test.dart
@@ -3,10 +3,9 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/src/error/codes.dart';
-import 'package:analyzer/src/test_utilities/package_mixin.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,12 +14,11 @@
 }
 
 @reflectiveTest
-class InvalidVisibilityAnnotationTest extends DriverResolutionTest
-    with PackageMixin {
+class InvalidVisibilityAnnotationTest extends PubPackageResolutionTest {
   @override
   void setUp() {
     super.setUp();
-    addMetaPackage();
+    writeTestPackageConfigWithMeta();
   }
 
   test_fields_multipleMixed() async {
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 21e2e99..780de76 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
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class InvocationOfExtensionWithoutCallTest extends DriverResolutionTest {
+class InvocationOfExtensionWithoutCallTest extends PubPackageResolutionTest {
   test_instance_differentKind() async {
     await assertErrorsInCode('''
 extension E on Object {}
diff --git a/pkg/analyzer/test/src/diagnostics/invocation_of_non_function_expression_test.dart b/pkg/analyzer/test/src/diagnostics/invocation_of_non_function_expression_test.dart
index 9435340..1a329c0 100644
--- a/pkg/analyzer/test/src/diagnostics/invocation_of_non_function_expression_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invocation_of_non_function_expression_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class InvocationOfNonFunctionExpressionTest extends DriverResolutionTest {
+class InvocationOfNonFunctionExpressionTest extends PubPackageResolutionTest {
   test_invocationOfNonFunctionExpression_literal() async {
     await assertErrorsInCode(r'''
 f() {
diff --git a/pkg/analyzer/test/src/diagnostics/label_in_outer_scope_test.dart b/pkg/analyzer/test/src/diagnostics/label_in_outer_scope_test.dart
index 851ddf0..7fa6830 100644
--- a/pkg/analyzer/test/src/diagnostics/label_in_outer_scope_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/label_in_outer_scope_test.dart
@@ -6,7 +6,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +15,7 @@
 }
 
 @reflectiveTest
-class LabelInOuterScopeTest extends DriverResolutionTest {
+class LabelInOuterScopeTest extends PubPackageResolutionTest {
   test_label_in_outer_scope() async {
     await assertErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/label_undefined_test.dart b/pkg/analyzer/test/src/diagnostics/label_undefined_test.dart
index 366d06d..7918d11 100644
--- a/pkg/analyzer/test/src/diagnostics/label_undefined_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/label_undefined_test.dart
@@ -6,8 +6,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -17,7 +16,7 @@
 }
 
 @reflectiveTest
-class LabelUndefinedTest extends DriverResolutionTest {
+class LabelUndefinedTest extends PubPackageResolutionTest {
   test_break() async {
     await assertErrorsInCode(r'''
 f() {
diff --git a/pkg/analyzer/test/src/diagnostics/late_final_field_with_const_constructor_test.dart b/pkg/analyzer/test/src/diagnostics/late_final_field_with_const_constructor_test.dart
index 00da73f..868c233 100644
--- a/pkg/analyzer/test/src/diagnostics/late_final_field_with_const_constructor_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/late_final_field_with_const_constructor_test.dart
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +14,7 @@
 }
 
 @reflectiveTest
-class LateFinalFieldWithConstConstructorTest extends DriverResolutionTest
+class LateFinalFieldWithConstConstructorTest extends PubPackageResolutionTest
     with WithNullSafetyMixin {
   static const _errorCode =
       CompileTimeErrorCode.LATE_FINAL_FIELD_WITH_CONST_CONSTRUCTOR;
diff --git a/pkg/analyzer/test/src/diagnostics/late_final_local_already_assigned_test.dart b/pkg/analyzer/test/src/diagnostics/late_final_local_already_assigned_test.dart
index 2e4f1d4..0bc97d0 100644
--- a/pkg/analyzer/test/src/diagnostics/late_final_local_already_assigned_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/late_final_local_already_assigned_test.dart
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +14,7 @@
 }
 
 @reflectiveTest
-class LateFinalLocalAlreadyAssignedTest extends DriverResolutionTest
+class LateFinalLocalAlreadyAssignedTest extends PubPackageResolutionTest
     with WithNullSafetyMixin {
   test_assignmentExpression_compound() async {
     await assertErrorsInCode('''
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 f0d3fbe..9f57784 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
@@ -8,7 +8,7 @@
 import 'package:analyzer/src/generated/engine.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -18,7 +18,7 @@
 }
 
 @reflectiveTest
-class ListElementTypeNotAssignableTest extends DriverResolutionTest {
+class ListElementTypeNotAssignableTest extends PubPackageResolutionTest {
   test_const_ifElement_thenElseFalse_intInt() async {
     await assertErrorsInCode(
         '''
diff --git a/pkg/analyzer/test/src/diagnostics/map_entry_not_in_map_test.dart b/pkg/analyzer/test/src/diagnostics/map_entry_not_in_map_test.dart
index 3a1725e..9300295 100644
--- a/pkg/analyzer/test/src/diagnostics/map_entry_not_in_map_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/map_entry_not_in_map_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class MapEntryNotInMapTest extends DriverResolutionTest {
+class MapEntryNotInMapTest extends PubPackageResolutionTest {
   test_set() async {
     await assertErrorsInCode('''
 var c = <int>{1:2};
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 95815bb..3281891 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
@@ -8,7 +8,7 @@
 import 'package:analyzer/src/generated/engine.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -18,7 +18,7 @@
 }
 
 @reflectiveTest
-class MapKeyTypeNotAssignableTest extends DriverResolutionTest {
+class MapKeyTypeNotAssignableTest extends PubPackageResolutionTest {
   test_const_ifElement_thenElseFalse_intInt_dynamic() async {
     await assertErrorsInCode(
         '''
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 37911a8..794cc75 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
@@ -8,7 +8,7 @@
 import 'package:analyzer/src/generated/engine.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -18,7 +18,7 @@
 }
 
 @reflectiveTest
-class MapValueTypeNotAssignableTest extends DriverResolutionTest {
+class MapValueTypeNotAssignableTest extends PubPackageResolutionTest {
   test_const_ifElement_thenElseFalse_intInt_dynamic() async {
     await assertErrorsInCode(
         '''
diff --git a/pkg/analyzer/test/src/diagnostics/member_with_class_name_test.dart b/pkg/analyzer/test/src/diagnostics/member_with_class_name_test.dart
index 3558cc0..6590bfd 100644
--- a/pkg/analyzer/test/src/diagnostics/member_with_class_name_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/member_with_class_name_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/dart/error/syntactic_errors.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class MemberWithClassNameTest extends DriverResolutionTest {
+class MemberWithClassNameTest extends PubPackageResolutionTest {
   test_field() async {
     await assertErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/mismatched_annotation_on_struct_field_test.dart b/pkg/analyzer/test/src/diagnostics/mismatched_annotation_on_struct_field_test.dart
index 1e5a88a..b404bde 100644
--- a/pkg/analyzer/test/src/diagnostics/mismatched_annotation_on_struct_field_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/mismatched_annotation_on_struct_field_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/dart/error/ffi_code.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class MismatchedAnnotationOnStructFieldTest extends DriverResolutionTest {
+class MismatchedAnnotationOnStructFieldTest extends PubPackageResolutionTest {
   test_double_on_int() async {
     await assertErrorsInCode(r'''
 import 'dart:ffi';
diff --git a/pkg/analyzer/test/src/diagnostics/missing_annotation_on_struct_field_test.dart b/pkg/analyzer/test/src/diagnostics/missing_annotation_on_struct_field_test.dart
index 0e7fdde..1a5a83c 100644
--- a/pkg/analyzer/test/src/diagnostics/missing_annotation_on_struct_field_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/missing_annotation_on_struct_field_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/dart/error/ffi_code.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class MissingAnnotationOnStructFieldTest extends DriverResolutionTest {
+class MissingAnnotationOnStructFieldTest extends PubPackageResolutionTest {
   test_missing_int() async {
     await assertErrorsInCode(r'''
 import 'dart:ffi';
diff --git a/pkg/analyzer/test/src/diagnostics/missing_default_value_for_parameter_test.dart b/pkg/analyzer/test/src/diagnostics/missing_default_value_for_parameter_test.dart
index 664ef40..dec4111 100644
--- a/pkg/analyzer/test/src/diagnostics/missing_default_value_for_parameter_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/missing_default_value_for_parameter_test.dart
@@ -6,8 +6,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,7 +15,7 @@
 }
 
 @reflectiveTest
-class MissingDefaultValueForParameterTest extends DriverResolutionTest
+class MissingDefaultValueForParameterTest extends PubPackageResolutionTest
     with WithNullSafetyMixin {
   test_constructor_externalFactory_nonNullable_named_optional_noDefault() async {
     await assertNoErrorsInCode('''
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 81af1c1..33df17a 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
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,7 +15,7 @@
 }
 
 @reflectiveTest
-class MissingEnumConstantInSwitchTest extends DriverResolutionTest {
+class MissingEnumConstantInSwitchTest extends PubPackageResolutionTest {
   test_default() async {
     await assertNoErrorsInCode('''
 enum E { one, two, three }
diff --git a/pkg/analyzer/test/src/diagnostics/missing_exception_value_test.dart b/pkg/analyzer/test/src/diagnostics/missing_exception_value_test.dart
index cbc7895..30c949c 100644
--- a/pkg/analyzer/test/src/diagnostics/missing_exception_value_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/missing_exception_value_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/dart/error/ffi_code.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class MissingExceptionValueTest extends DriverResolutionTest {
+class MissingExceptionValueTest extends PubPackageResolutionTest {
   test_missing() async {
     await assertErrorsInCode(r'''
 import 'dart:ffi';
diff --git a/pkg/analyzer/test/src/diagnostics/missing_field_type_in_struct_test.dart b/pkg/analyzer/test/src/diagnostics/missing_field_type_in_struct_test.dart
index 2955f38..cfae21f 100644
--- a/pkg/analyzer/test/src/diagnostics/missing_field_type_in_struct_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/missing_field_type_in_struct_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/dart/error/ffi_code.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class MissingFieldTypeInStructTest extends DriverResolutionTest {
+class MissingFieldTypeInStructTest extends PubPackageResolutionTest {
   test_missing() async {
     await assertErrorsInCode(r'''
 import 'dart:ffi';
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 561c11b..551fbb3 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
@@ -7,7 +7,7 @@
 import 'package:analyzer/src/test_utilities/package_mixin.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,10 +16,19 @@
 }
 
 @reflectiveTest
-class MissingJSLibAnnotationTest extends DriverResolutionTest
-    with PackageMixin {
+class MissingJSLibAnnotationTest extends PubPackageResolutionTest {
+  @override
+  void setUp() {
+    super.setUp();
+
+    var path = '/packages/js';
+    PackagesContent.addJsPackageFiles(
+      getFolder(path),
+    );
+    writeTestPackageConfig({'js': path});
+  }
+
   test_class() async {
-    addJsPackage();
     await assertErrorsInCode('''
 library foo;
 
@@ -34,7 +43,6 @@
 
   test_externalField() async {
     // https://github.com/dart-lang/sdk/issues/26987
-    addJsPackage();
     await assertErrorsInCode('''
 import 'package:js/js.dart';
 
@@ -47,7 +55,6 @@
   }
 
   test_function() async {
-    addJsPackage();
     await assertErrorsInCode('''
 library foo;
 
@@ -62,7 +69,6 @@
   }
 
   test_method() async {
-    addJsPackage();
     await assertErrorsInCode('''
 library foo;
 
@@ -78,7 +84,6 @@
   }
 
   test_notMissing() async {
-    addJsPackage();
     await assertNoErrorsInCode('''
 @JS()
 library foo;
@@ -91,7 +96,6 @@
   }
 
   test_variable() async {
-    addJsPackage();
     await assertErrorsInCode('''
 import 'package:js/js.dart';
 
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 c040a2f..7c3510e 100644
--- a/pkg/analyzer/test/src/diagnostics/missing_required_param_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/missing_required_param_test.dart
@@ -3,12 +3,10 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/src/error/codes.dart';
-import 'package:analyzer/src/test_utilities/package_mixin.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import '../../generated/test_support.dart';
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -18,11 +16,11 @@
 }
 
 @reflectiveTest
-class MissingRequiredParamTest extends DriverResolutionTest with PackageMixin {
+class MissingRequiredParamTest extends PubPackageResolutionTest {
   @override
-  setUp() {
+  void setUp() {
     super.setUp();
-    addMetaPackage();
+    writeTestPackageConfigWithMeta();
   }
 
   test_constructor_argumentGiven() async {
@@ -190,23 +188,22 @@
   }
 
   test_method_inOtherLib() async {
-    newFile('/a_lib.dart', content: r'''
-library a_lib;
+    newFile('$testPackageLibPath/a.dart', content: r'''
 import 'package:meta/meta.dart';
 class A {
   void m({@Required('must specify an `a`') int a}) {}
 }
 ''');
-    newFile('/test.dart', content: r'''
-import "a_lib.dart";
+    newFile('$testPackageLibPath/test.dart', content: r'''
+import 'a.dart';
 f() {
   new A().m();
 }
 ''');
 
-    await _resolveFile('/a_lib.dart');
-    await _resolveFile('/test.dart', [
-      error(HintCode.MISSING_REQUIRED_PARAM_WITH_DETAILS, 37, 1),
+    await _resolveFile('$testPackageLibPath/a.dart');
+    await _resolveFile('$testPackageLibPath/test.dart', [
+      error(HintCode.MISSING_REQUIRED_PARAM_WITH_DETAILS, 33, 1),
     ]);
   }
 
@@ -245,7 +242,7 @@
 }
 
 @reflectiveTest
-class MissingRequiredParamWithNullSafetyTest extends DriverResolutionTest
+class MissingRequiredParamWithNullSafetyTest extends PubPackageResolutionTest
     with WithNullSafetyMixin {
   test_constructor_argumentGiven() async {
     await assertNoErrorsInCode(r'''
@@ -346,7 +343,7 @@
   }
 
   test_method_inOtherLib() async {
-    newFile('/test/lib/a_lib.dart', content: r'''
+    newFile('$testPackageLibPath/a_lib.dart', content: r'''
 class A {
   void m({required int a}) {}
 }
@@ -362,7 +359,7 @@
   }
 
   test_method_legacy() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   void foo({required int a}) {}
 }
diff --git a/pkg/analyzer/test/src/diagnostics/missing_return_test.dart b/pkg/analyzer/test/src/diagnostics/missing_return_test.dart
index 353bef4..4d9fec5 100644
--- a/pkg/analyzer/test/src/diagnostics/missing_return_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/missing_return_test.dart
@@ -3,11 +3,9 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/src/error/codes.dart';
-import 'package:analyzer/src/test_utilities/package_mixin.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -17,9 +15,9 @@
 }
 
 @reflectiveTest
-class MissingReturnTest extends DriverResolutionTest with PackageMixin {
+class MissingReturnTest extends PubPackageResolutionTest {
   test_alwaysThrows() async {
-    addMetaPackage();
+    writeTestPackageConfigWithMeta();
     await assertNoErrorsInCode(r'''
 import 'package:meta/meta.dart';
 
@@ -217,10 +215,10 @@
 }
 
 @reflectiveTest
-class MissingReturnWithNullSafetyTest extends DriverResolutionTest
+class MissingReturnWithNullSafetyTest extends PubPackageResolutionTest
     with WithNullSafetyMixin {
   test_returnNever() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 Never foo() {
   throw 0;
 }
diff --git a/pkg/analyzer/test/src/diagnostics/mixin_application_not_implemented_interface_test.dart b/pkg/analyzer/test/src/diagnostics/mixin_application_not_implemented_interface_test.dart
index 4e8f9a4..13fcb26 100644
--- a/pkg/analyzer/test/src/diagnostics/mixin_application_not_implemented_interface_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/mixin_application_not_implemented_interface_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,8 @@
 }
 
 @reflectiveTest
-class MixinApplicationNotImplementedInterfaceTest extends DriverResolutionTest {
+class MixinApplicationNotImplementedInterfaceTest
+    extends PubPackageResolutionTest {
   test_matchingClass_inPreviousMixin_new_syntax() async {
     await assertNoErrorsInCode('''
 abstract class A<T> {}
diff --git a/pkg/analyzer/test/src/diagnostics/mixin_class_declares_constructor_test.dart b/pkg/analyzer/test/src/diagnostics/mixin_class_declares_constructor_test.dart
index 11017b8..baece03 100644
--- a/pkg/analyzer/test/src/diagnostics/mixin_class_declares_constructor_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/mixin_class_declares_constructor_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class MixinClassDeclaresConstructorTest extends DriverResolutionTest {
+class MixinClassDeclaresConstructorTest extends PubPackageResolutionTest {
   test_classDeclaration() async {
     await assertErrorsInCode(
       r'''
diff --git a/pkg/analyzer/test/src/diagnostics/mixin_declares_constructor_test.dart b/pkg/analyzer/test/src/diagnostics/mixin_declares_constructor_test.dart
index 51f315e..e171fde 100644
--- a/pkg/analyzer/test/src/diagnostics/mixin_declares_constructor_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/mixin_declares_constructor_test.dart
@@ -7,7 +7,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,7 +16,7 @@
 }
 
 @reflectiveTest
-class MixinDeclaresConstructorTest extends DriverResolutionTest {
+class MixinDeclaresConstructorTest extends PubPackageResolutionTest {
   test_fieldFormalParameter() async {
     await assertErrorsInCode(r'''
 mixin M {
diff --git a/pkg/analyzer/test/src/diagnostics/mixin_deferred_class_test.dart b/pkg/analyzer/test/src/diagnostics/mixin_deferred_class_test.dart
index b37129a..a9bccb9 100644
--- a/pkg/analyzer/test/src/diagnostics/mixin_deferred_class_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/mixin_deferred_class_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,9 +14,9 @@
 }
 
 @reflectiveTest
-class MixinDeferredClassTest extends DriverResolutionTest {
+class MixinDeferredClassTest extends PubPackageResolutionTest {
   test_classTypeAlias() async {
-    newFile('/test/lib/lib1.dart', content: '''
+    newFile('$testPackageLibPath/lib1.dart', content: '''
 library lib1;
 class A {}
 ''');
@@ -31,7 +31,7 @@
   }
 
   test_mixin_deferred_class() async {
-    newFile('/test/lib/lib1.dart', content: '''
+    newFile('$testPackageLibPath/lib1.dart', content: '''
 library lib1;
 class A {}
 ''');
diff --git a/pkg/analyzer/test/src/diagnostics/mixin_inherits_from_not_object_test.dart b/pkg/analyzer/test/src/diagnostics/mixin_inherits_from_not_object_test.dart
index 3ca2493..7bcbe74 100644
--- a/pkg/analyzer/test/src/diagnostics/mixin_inherits_from_not_object_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/mixin_inherits_from_not_object_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class MixinInheritsFromNotObjectTest extends DriverResolutionTest {
+class MixinInheritsFromNotObjectTest extends PubPackageResolutionTest {
   test_classDeclaration_extends() async {
     await assertErrorsInCode(r'''
 class A {}
diff --git a/pkg/analyzer/test/src/diagnostics/mixin_of_disallowed_class_test.dart b/pkg/analyzer/test/src/diagnostics/mixin_of_disallowed_class_test.dart
index b22ce50..b72300b 100644
--- a/pkg/analyzer/test/src/diagnostics/mixin_of_disallowed_class_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/mixin_of_disallowed_class_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class MixinOfDisallowedClassTest extends DriverResolutionTest {
+class MixinOfDisallowedClassTest extends PubPackageResolutionTest {
   test_class_bool() async {
     await assertErrorsInCode('''
 class A extends Object with bool {}
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 bb19212..df4c58b 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
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,7 +15,7 @@
 }
 
 @reflectiveTest
-class MixinOfNonClassTest extends DriverResolutionTest {
+class MixinOfNonClassTest extends PubPackageResolutionTest {
   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 cb8bc73..cec22cb 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
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -17,7 +16,8 @@
 }
 
 @reflectiveTest
-class MixinSuperClassConstraintNonInterfaceTest extends DriverResolutionTest {}
+class MixinSuperClassConstraintNonInterfaceTest
+    extends PubPackageResolutionTest {}
 
 @reflectiveTest
 class MixinSuperClassConstraintNonInterfaceWithNullSafetyTest
diff --git a/pkg/analyzer/test/src/diagnostics/mixin_with_non_class_superclass_test.dart b/pkg/analyzer/test/src/diagnostics/mixin_with_non_class_superclass_test.dart
index aa6a3af..ea23d2e 100644
--- a/pkg/analyzer/test/src/diagnostics/mixin_with_non_class_superclass_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/mixin_with_non_class_superclass_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class MixinWithNonClassSuperclassTest extends DriverResolutionTest {
+class MixinWithNonClassSuperclassTest extends PubPackageResolutionTest {
   test_class() async {
     await assertErrorsInCode(r'''
 int A;
diff --git a/pkg/analyzer/test/src/diagnostics/mixins_super_class_test.dart b/pkg/analyzer/test/src/diagnostics/mixins_super_class_test.dart
index 88807fb..b7b7ff6 100644
--- a/pkg/analyzer/test/src/diagnostics/mixins_super_class_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/mixins_super_class_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class MixinsSuperClassTest extends DriverResolutionTest {
+class MixinsSuperClassTest extends PubPackageResolutionTest {
   test_class() async {
     await assertErrorsInCode(r'''
 class A {}
diff --git a/pkg/analyzer/test/src/diagnostics/multiple_redirecting_constructor_invocations_test.dart b/pkg/analyzer/test/src/diagnostics/multiple_redirecting_constructor_invocations_test.dart
index fbe553e..293caf5 100644
--- a/pkg/analyzer/test/src/diagnostics/multiple_redirecting_constructor_invocations_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/multiple_redirecting_constructor_invocations_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +15,7 @@
 
 @reflectiveTest
 class MultipleRedirectingConstructorInvocationsTest
-    extends DriverResolutionTest {
+    extends PubPackageResolutionTest {
   test_twoNamedConstructorInvocations() async {
     await assertErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/multiple_super_initializers_test.dart b/pkg/analyzer/test/src/diagnostics/multiple_super_initializers_test.dart
index 72669cd..dea4b59 100644
--- a/pkg/analyzer/test/src/diagnostics/multiple_super_initializers_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/multiple_super_initializers_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class MultipleSuperInitializersTest extends DriverResolutionTest {
+class MultipleSuperInitializersTest extends PubPackageResolutionTest {
   test_twoSuperInitializers() async {
     await assertErrorsInCode(r'''
 class A {}
diff --git a/pkg/analyzer/test/src/diagnostics/must_be_a_native_function_type_test.dart b/pkg/analyzer/test/src/diagnostics/must_be_a_native_function_type_test.dart
index 6c1287c..8c6ecc1 100644
--- a/pkg/analyzer/test/src/diagnostics/must_be_a_native_function_type_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/must_be_a_native_function_type_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/dart/error/ffi_code.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class MustBeANativeFunctionTypeTest extends DriverResolutionTest {
+class MustBeANativeFunctionTypeTest extends PubPackageResolutionTest {
   test_fromFunction() async {
     await assertErrorsInCode(r'''
 import 'dart:ffi';
diff --git a/pkg/analyzer/test/src/diagnostics/must_be_a_subtype_test.dart b/pkg/analyzer/test/src/diagnostics/must_be_a_subtype_test.dart
index 244a8c6..551c7ec 100644
--- a/pkg/analyzer/test/src/diagnostics/must_be_a_subtype_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/must_be_a_subtype_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/dart/error/ffi_code.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class MustBeASubtypeTest extends DriverResolutionTest {
+class MustBeASubtypeTest extends PubPackageResolutionTest {
   test_fromFunction_firstArgument() async {
     await assertErrorsInCode(r'''
 import 'dart:ffi';
diff --git a/pkg/analyzer/test/src/diagnostics/must_be_immutable_test.dart b/pkg/analyzer/test/src/diagnostics/must_be_immutable_test.dart
index ffb94a7a..4b0f2f1 100644
--- a/pkg/analyzer/test/src/diagnostics/must_be_immutable_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/must_be_immutable_test.dart
@@ -3,10 +3,9 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/src/error/codes.dart';
-import 'package:analyzer/src/test_utilities/package_mixin.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,11 +14,11 @@
 }
 
 @reflectiveTest
-class MustBeImmutableTest extends DriverResolutionTest with PackageMixin {
+class MustBeImmutableTest extends PubPackageResolutionTest {
   @override
   void setUp() {
     super.setUp();
-    addMetaPackage();
+    writeTestPackageConfigWithMeta();
   }
 
   test_directAnnotation() async {
@@ -60,7 +59,6 @@
   }
 
   test_finalField() async {
-    addMetaPackage();
     await assertNoErrorsInCode(r'''
 import 'package:meta/meta.dart';
 @immutable
diff --git a/pkg/analyzer/test/src/diagnostics/must_call_super_test.dart b/pkg/analyzer/test/src/diagnostics/must_call_super_test.dart
index d93fced..7a58e23 100644
--- a/pkg/analyzer/test/src/diagnostics/must_call_super_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/must_call_super_test.dart
@@ -3,10 +3,9 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/src/error/codes.dart';
-import 'package:analyzer/src/test_utilities/package_mixin.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,11 +14,11 @@
 }
 
 @reflectiveTest
-class MustCallSuperTest extends DriverResolutionTest with PackageMixin {
+class MustCallSuperTest extends PubPackageResolutionTest {
   @override
-  setUp() {
+  void setUp() {
     super.setUp();
-    addMetaPackage();
+    writeTestPackageConfigWithMeta();
   }
 
   test_containsSuperCall() async {
diff --git a/pkg/analyzer/test/src/diagnostics/native_clause_in_non_sdk_code_test.dart b/pkg/analyzer/test/src/diagnostics/native_clause_in_non_sdk_code_test.dart
index 878ee80..48365a7 100644
--- a/pkg/analyzer/test/src/diagnostics/native_clause_in_non_sdk_code_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/native_clause_in_non_sdk_code_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/generated/parser.dart' show ParserErrorCode;
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class NativeClauseInNonSdkCodeTest extends DriverResolutionTest {
+class NativeClauseInNonSdkCodeTest extends PubPackageResolutionTest {
   test_nativeClauseInNonSDKCode() async {
     await assertErrorsInCode('''
 class A native 'string' {}
diff --git a/pkg/analyzer/test/src/diagnostics/native_function_body_in_non_sdk_code_test.dart b/pkg/analyzer/test/src/diagnostics/native_function_body_in_non_sdk_code_test.dart
index 186022e..189f963 100644
--- a/pkg/analyzer/test/src/diagnostics/native_function_body_in_non_sdk_code_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/native_function_body_in_non_sdk_code_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/generated/parser.dart' show ParserErrorCode;
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class NativeFunctionBodyInNonSdkCodeTest extends DriverResolutionTest {
+class NativeFunctionBodyInNonSdkCodeTest extends PubPackageResolutionTest {
   test_function() async {
     await assertErrorsInCode('''
 int m(a) native 'string';
diff --git a/pkg/analyzer/test/src/diagnostics/new_with_non_type_test.dart b/pkg/analyzer/test/src/diagnostics/new_with_non_type_test.dart
index 52ea5df..5e3dce3 100644
--- a/pkg/analyzer/test/src/diagnostics/new_with_non_type_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/new_with_non_type_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class NewWithNonTypeTest extends DriverResolutionTest {
+class NewWithNonTypeTest extends PubPackageResolutionTest {
   test_functionTypeAlias() async {
     await assertErrorsInCode('''
 typedef F = void Function();
@@ -28,7 +28,7 @@
   }
 
   test_imported() async {
-    newFile("/test/lib/lib.dart", content: "class B {}");
+    newFile('$testPackageLibPath/lib.dart', content: "class B {}");
     await assertErrorsInCode('''
 import 'lib.dart' as lib;
 void f() {
diff --git a/pkg/analyzer/test/src/diagnostics/new_with_undefined_constructor_test.dart b/pkg/analyzer/test/src/diagnostics/new_with_undefined_constructor_test.dart
index 3f5f6ff..5e3e722 100644
--- a/pkg/analyzer/test/src/diagnostics/new_with_undefined_constructor_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/new_with_undefined_constructor_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class NewWithUndefinedConstructorTest extends DriverResolutionTest {
+class NewWithUndefinedConstructorTest extends PubPackageResolutionTest {
   test_default() async {
     await assertErrorsInCode('''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/no_annotation_constructor_arguments_test.dart b/pkg/analyzer/test/src/diagnostics/no_annotation_constructor_arguments_test.dart
index 8c6eebd..9a49f06 100644
--- a/pkg/analyzer/test/src/diagnostics/no_annotation_constructor_arguments_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/no_annotation_constructor_arguments_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class NoAnnotationConstructorArgumentsTest extends DriverResolutionTest {
+class NoAnnotationConstructorArgumentsTest extends PubPackageResolutionTest {
   test_missingArgumentList() async {
     await assertErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/no_combined_super_signature_test.dart b/pkg/analyzer/test/src/diagnostics/no_combined_super_signature_test.dart
index d93e2ef..218e88e 100644
--- a/pkg/analyzer/test/src/diagnostics/no_combined_super_signature_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/no_combined_super_signature_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class NoCombinedSuperSignatureTest extends DriverResolutionTest {
+class NoCombinedSuperSignatureTest extends PubPackageResolutionTest {
   test_conflictingParameter() async {
     await assertErrorsInCode('''
 abstract class A {
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 069da67..4995806 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
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class NoDefaultSuperConstructorTest extends DriverResolutionTest {
+class NoDefaultSuperConstructorTest extends PubPackageResolutionTest {
   test_explicitDefaultSuperConstructor() async {
     await assertNoErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/no_generative_constructors_in_superclass_test.dart b/pkg/analyzer/test/src/diagnostics/no_generative_constructors_in_superclass_test.dart
index 0ace42c..573f5aa 100644
--- a/pkg/analyzer/test/src/diagnostics/no_generative_constructors_in_superclass_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/no_generative_constructors_in_superclass_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,8 @@
 }
 
 @reflectiveTest
-class NoGenerativeConstructorsInSuperclassTest extends DriverResolutionTest {
+class NoGenerativeConstructorsInSuperclassTest
+    extends PubPackageResolutionTest {
   test_explicit() async {
     await assertErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/non_abstract_class_inherits_abstract_member_test.dart b/pkg/analyzer/test/src/diagnostics/non_abstract_class_inherits_abstract_member_test.dart
index 62bd7b4..1394130 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
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,8 @@
 }
 
 @reflectiveTest
-class NonAbstractClassInheritsAbstractMemberTest extends DriverResolutionTest {
+class NonAbstractClassInheritsAbstractMemberTest
+    extends PubPackageResolutionTest {
   test_abstractsDontOverrideConcretes_getter() async {
     await assertNoErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/non_bool_condition_test.dart b/pkg/analyzer/test/src/diagnostics/non_bool_condition_test.dart
index da24c7b..f7aa310 100644
--- a/pkg/analyzer/test/src/diagnostics/non_bool_condition_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_bool_condition_test.dart
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,7 +15,7 @@
 }
 
 @reflectiveTest
-class NonBoolConditionTest extends DriverResolutionTest {
+class NonBoolConditionTest extends PubPackageResolutionTest {
   test_conditional() async {
     await assertErrorsInCode('''
 f() { return 3 ? 2 : 1; }
@@ -108,7 +107,7 @@
 }
 
 @reflectiveTest
-class NonBoolConditionWithNullSafetyTest extends DriverResolutionTest
+class NonBoolConditionWithNullSafetyTest extends PubPackageResolutionTest
     with WithNullSafetyMixin {
   test_if_null() async {
     await assertErrorsInCode(r'''
diff --git a/pkg/analyzer/test/src/diagnostics/non_bool_expression_test.dart b/pkg/analyzer/test/src/diagnostics/non_bool_expression_test.dart
index 61535c7..0a12cfb 100644
--- a/pkg/analyzer/test/src/diagnostics/non_bool_expression_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_bool_expression_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class NonBoolExpressionTest extends DriverResolutionTest {
+class NonBoolExpressionTest extends PubPackageResolutionTest {
   test_functionType_bool() async {
     await assertErrorsInCode(r'''
 bool makeAssertion() => true;
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 f0c4ff3..1fdb4eb 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
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,7 +15,7 @@
 }
 
 @reflectiveTest
-class NonBoolNegationExpressionTest extends DriverResolutionTest {
+class NonBoolNegationExpressionTest extends PubPackageResolutionTest {
   test_nonBool() async {
     await assertErrorsInCode(r'''
 f() {
@@ -29,8 +28,8 @@
 }
 
 @reflectiveTest
-class NonBoolNegationExpressionWithNullSafetyTest extends DriverResolutionTest
-    with WithNullSafetyMixin {
+class NonBoolNegationExpressionWithNullSafetyTest
+    extends PubPackageResolutionTest with WithNullSafetyMixin {
   test_null() async {
     await assertErrorsInCode(r'''
 m() {
diff --git a/pkg/analyzer/test/src/diagnostics/non_bool_operand_test.dart b/pkg/analyzer/test/src/diagnostics/non_bool_operand_test.dart
index f3496ef..456e55c 100644
--- a/pkg/analyzer/test/src/diagnostics/non_bool_operand_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_bool_operand_test.dart
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,7 +15,7 @@
 }
 
 @reflectiveTest
-class NonBoolOperandTest extends DriverResolutionTest {
+class NonBoolOperandTest extends PubPackageResolutionTest {
   test_and_left() async {
     await assertErrorsInCode(r'''
 bool f(int left, bool right) {
@@ -59,7 +58,7 @@
 }
 
 @reflectiveTest
-class NonBoolOperandWithNullSafetyTest extends DriverResolutionTest
+class NonBoolOperandWithNullSafetyTest extends PubPackageResolutionTest
     with WithNullSafetyMixin {
   test_and_null() async {
     await assertErrorsInCode(r'''
diff --git a/pkg/analyzer/test/src/diagnostics/non_const_call_to_literal_constructor_test.dart b/pkg/analyzer/test/src/diagnostics/non_const_call_to_literal_constructor_test.dart
index 35ecf41..67aac2c 100644
--- a/pkg/analyzer/test/src/diagnostics/non_const_call_to_literal_constructor_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_const_call_to_literal_constructor_test.dart
@@ -3,10 +3,9 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/src/error/codes.dart';
-import 'package:analyzer/src/test_utilities/package_mixin.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,12 +14,11 @@
 }
 
 @reflectiveTest
-class NonConstCallToLiteralConstructorTest extends DriverResolutionTest
-    with PackageMixin {
+class NonConstCallToLiteralConstructorTest extends PubPackageResolutionTest {
   @override
   void setUp() {
     super.setUp();
-    addMetaPackage();
+    writeTestPackageConfigWithMeta();
   }
 
   test_constConstructor() async {
diff --git a/pkg/analyzer/test/src/diagnostics/non_const_map_as_expression_statement_test.dart b/pkg/analyzer/test/src/diagnostics/non_const_map_as_expression_statement_test.dart
index 216836c..50a4b24 100644
--- a/pkg/analyzer/test/src/diagnostics/non_const_map_as_expression_statement_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_const_map_as_expression_statement_test.dart
@@ -6,7 +6,7 @@
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +15,7 @@
 }
 
 @reflectiveTest
-class NonConstMapAsExpressionStatementTest extends DriverResolutionTest {
+class NonConstMapAsExpressionStatementTest extends PubPackageResolutionTest {
   @FailingTest(issue: 'https://github.com/dart-lang/sdk/issues/42850')
   test_beginningOfExpressiontatement() async {
     // TODO(srawlins) Fasta is not recovering well.
diff --git a/pkg/analyzer/test/src/diagnostics/non_constant_annotation_constructor_test.dart b/pkg/analyzer/test/src/diagnostics/non_constant_annotation_constructor_test.dart
index 74caf13..89f983a 100644
--- a/pkg/analyzer/test/src/diagnostics/non_constant_annotation_constructor_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_constant_annotation_constructor_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class NonConstantAnnotationConstructorTest extends DriverResolutionTest {
+class NonConstantAnnotationConstructorTest extends PubPackageResolutionTest {
   test_named() async {
     await assertErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/non_constant_case_expression_from_deferred_library_test.dart b/pkg/analyzer/test/src/diagnostics/non_constant_case_expression_from_deferred_library_test.dart
index f0de552..9c6dd7a 100644
--- a/pkg/analyzer/test/src/diagnostics/non_constant_case_expression_from_deferred_library_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_constant_case_expression_from_deferred_library_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,9 +15,9 @@
 
 @reflectiveTest
 class NonConstantCaseExpressionFromDeferredLibraryTest
-    extends DriverResolutionTest {
+    extends PubPackageResolutionTest {
   test_nested() async {
-    newFile('/test/lib/a.dart', content: '''
+    newFile('$testPackageLibPath/a.dart', content: '''
 const int c = 0;
 ''');
 
@@ -40,7 +40,7 @@
   }
 
   test_simple() async {
-    newFile('/test/lib/a.dart', content: '''
+    newFile('$testPackageLibPath/a.dart', content: '''
 const int c = 0;
 ''');
 
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 e37e3ea..0140b9e 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
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,7 +15,7 @@
 }
 
 @reflectiveTest
-class NonConstantCaseExpressionTest extends DriverResolutionTest {
+class NonConstantCaseExpressionTest extends PubPackageResolutionTest {
   test_constField() async {
     await assertNoErrorsInCode(r'''
 void f(C e) {
diff --git a/pkg/analyzer/test/src/diagnostics/non_constant_default_value_from_deferred_library_test.dart b/pkg/analyzer/test/src/diagnostics/non_constant_default_value_from_deferred_library_test.dart
index fa1d97b..bde3524 100644
--- a/pkg/analyzer/test/src/diagnostics/non_constant_default_value_from_deferred_library_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_constant_default_value_from_deferred_library_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,9 +15,9 @@
 
 @reflectiveTest
 class NonConstantDefaultValueFromDeferredLibraryTest
-    extends DriverResolutionTest {
+    extends PubPackageResolutionTest {
   test_deferred() async {
-    newFile('/test/lib/lib1.dart', content: '''
+    newFile('$testPackageLibPath/lib1.dart', content: '''
 library lib1;
 const V = 1;
 ''');
@@ -34,7 +34,7 @@
   }
 
   test_nested() async {
-    newFile('/test/lib/lib1.dart', content: '''
+    newFile('$testPackageLibPath/lib1.dart', content: '''
 library lib1;
 const V = 1;
 ''');
diff --git a/pkg/analyzer/test/src/diagnostics/non_constant_default_value_test.dart b/pkg/analyzer/test/src/diagnostics/non_constant_default_value_test.dart
index 6e01fe5..eb206cb 100644
--- a/pkg/analyzer/test/src/diagnostics/non_constant_default_value_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_constant_default_value_test.dart
@@ -6,7 +6,7 @@
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import '../../generated/test_support.dart';
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +15,7 @@
 }
 
 @reflectiveTest
-class NonConstantDefaultValueTest extends DriverResolutionTest {
+class NonConstantDefaultValueTest extends PubPackageResolutionTest {
   test_appliedTypeParameter_defaultConstructorValue() async {
     await assertErrorsInCode(r'''
 void f<T>(T t) => t;
diff --git a/pkg/analyzer/test/src/diagnostics/non_constant_list_element_from_deferred_library_test.dart b/pkg/analyzer/test/src/diagnostics/non_constant_list_element_from_deferred_library_test.dart
index 30ab020..6f0d2d7 100644
--- a/pkg/analyzer/test/src/diagnostics/non_constant_list_element_from_deferred_library_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_constant_list_element_from_deferred_library_test.dart
@@ -8,7 +8,7 @@
 import 'package:analyzer/src/generated/engine.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -20,11 +20,11 @@
 
 @reflectiveTest
 class NonConstantListElementFromDeferredLibraryTest
-    extends DriverResolutionTest {
+    extends PubPackageResolutionTest {
   @failingTest
   test_const_ifElement_thenTrue_deferredElse() async {
     // reports wrong error code (which is not crucial to fix)
-    newFile(convertPath('/test/lib/lib1.dart'), content: r'''
+    newFile(convertPath('$testPackageLibPath/lib1.dart'), content: r'''
 const int c = 1;''');
     await assertErrorsInCode(r'''
 import 'lib1.dart' deferred as a;
@@ -39,7 +39,7 @@
   }
 
   test_const_ifElement_thenTrue_deferredThen() async {
-    newFile(convertPath('/test/lib/lib1.dart'), content: r'''
+    newFile(convertPath('$testPackageLibPath/lib1.dart'), content: r'''
 const int c = 1;''');
     await assertErrorsInCode(
         r'''
@@ -61,7 +61,7 @@
   }
 
   test_const_topLevel_deferred() async {
-    newFile(convertPath('/test/lib/lib1.dart'), content: r'''
+    newFile(convertPath('$testPackageLibPath/lib1.dart'), content: r'''
 const int c = 1;''');
     await assertErrorsInCode(r'''
 import 'lib1.dart' deferred as a;
@@ -75,7 +75,7 @@
   }
 
   test_const_topLevel_deferred_nested() async {
-    newFile(convertPath('/test/lib/lib1.dart'), content: r'''
+    newFile(convertPath('$testPackageLibPath/lib1.dart'), content: r'''
 const int c = 1;''');
     await assertErrorsInCode(r'''
 import 'lib1.dart' deferred as a;
diff --git a/pkg/analyzer/test/src/diagnostics/non_constant_list_element_test.dart b/pkg/analyzer/test/src/diagnostics/non_constant_list_element_test.dart
index ac5b6917..fd0772b 100644
--- a/pkg/analyzer/test/src/diagnostics/non_constant_list_element_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_constant_list_element_test.dart
@@ -8,7 +8,7 @@
 import 'package:analyzer/src/generated/engine.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -18,7 +18,7 @@
 }
 
 @reflectiveTest
-class NonConstantListElementTest extends DriverResolutionTest {
+class NonConstantListElementTest extends PubPackageResolutionTest {
   test_const_forElement() async {
     await assertErrorsInCode(r'''
 const Set set = {};
diff --git a/pkg/analyzer/test/src/diagnostics/non_constant_map_element_test.dart b/pkg/analyzer/test/src/diagnostics/non_constant_map_element_test.dart
index b1c9035..ec30b00 100644
--- a/pkg/analyzer/test/src/diagnostics/non_constant_map_element_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_constant_map_element_test.dart
@@ -8,7 +8,7 @@
 import 'package:analyzer/src/generated/engine.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -20,7 +20,7 @@
 }
 
 @reflectiveTest
-class NonConstantMapElementTest extends DriverResolutionTest {
+class NonConstantMapElementTest extends PubPackageResolutionTest {
   test_forElement_cannotBeConst() async {
     await assertErrorsInCode('''
 void main() {
@@ -161,7 +161,7 @@
 }
 
 @reflectiveTest
-class NonConstantMapKeyTest extends DriverResolutionTest {
+class NonConstantMapKeyTest extends PubPackageResolutionTest {
   test_const_ifElement_thenElseFalse_finalElse() async {
     await assertErrorsInCode(
         '''
@@ -296,7 +296,7 @@
 }
 
 @reflectiveTest
-class NonConstantMapValueTest extends DriverResolutionTest {
+class NonConstantMapValueTest extends PubPackageResolutionTest {
   test_const_ifElement_thenElseFalse_finalElse() async {
     await assertErrorsInCode(
         '''
diff --git a/pkg/analyzer/test/src/diagnostics/non_constant_map_key_from_deferred_library_test.dart b/pkg/analyzer/test/src/diagnostics/non_constant_map_key_from_deferred_library_test.dart
index 4af3532..25504a3 100644
--- a/pkg/analyzer/test/src/diagnostics/non_constant_map_key_from_deferred_library_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_constant_map_key_from_deferred_library_test.dart
@@ -8,7 +8,7 @@
 import 'package:analyzer/src/generated/engine.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -19,11 +19,12 @@
 }
 
 @reflectiveTest
-class NonConstantMapKeyFromDeferredLibraryTest extends DriverResolutionTest {
+class NonConstantMapKeyFromDeferredLibraryTest
+    extends PubPackageResolutionTest {
   @failingTest
   test_const_ifElement_thenTrue_deferredElse() async {
 // reports wrong error code
-    newFile(convertPath('/test/lib/lib1.dart'), content: r'''
+    newFile(convertPath('$testPackageLibPath/lib1.dart'), content: r'''
 const int c = 1;''');
     await assertErrorsInCode(r'''
 import 'lib1.dart' deferred as a;
@@ -36,7 +37,7 @@
   }
 
   test_const_ifElement_thenTrue_deferredThen() async {
-    newFile(convertPath('/test/lib/lib1.dart'), content: r'''
+    newFile(convertPath('$testPackageLibPath/lib1.dart'), content: r'''
 const int c = 1;''');
     await assertErrorsInCode(
         r'''
@@ -58,7 +59,7 @@
   }
 
   test_const_topLevel_deferred() async {
-    newFile(convertPath('/test/lib/lib1.dart'), content: r'''
+    newFile(convertPath('$testPackageLibPath/lib1.dart'), content: r'''
 const int c = 1;''');
     await assertErrorsInCode(r'''
 import 'lib1.dart' deferred as a;
@@ -70,7 +71,7 @@
   }
 
   test_const_topLevel_deferred_nested() async {
-    newFile(convertPath('/test/lib/lib1.dart'), content: r'''
+    newFile(convertPath('$testPackageLibPath/lib1.dart'), content: r'''
 const int c = 1;''');
     await assertErrorsInCode(r'''
 import 'lib1.dart' deferred as a;
diff --git a/pkg/analyzer/test/src/diagnostics/non_constant_map_key_test.dart b/pkg/analyzer/test/src/diagnostics/non_constant_map_key_test.dart
index a660179..d884a44 100644
--- a/pkg/analyzer/test/src/diagnostics/non_constant_map_key_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_constant_map_key_test.dart
@@ -8,7 +8,7 @@
 import 'package:analyzer/src/generated/engine.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -18,7 +18,7 @@
 }
 
 @reflectiveTest
-class NonConstantMapKeyTest extends DriverResolutionTest {
+class NonConstantMapKeyTest extends PubPackageResolutionTest {
   test_const_ifElement_thenTrue_elseFinal() async {
     await assertErrorsInCode(
         r'''
diff --git a/pkg/analyzer/test/src/diagnostics/non_constant_map_value_from_deferred_library_test.dart b/pkg/analyzer/test/src/diagnostics/non_constant_map_value_from_deferred_library_test.dart
index 52559de..6ce36a1 100644
--- a/pkg/analyzer/test/src/diagnostics/non_constant_map_value_from_deferred_library_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_constant_map_value_from_deferred_library_test.dart
@@ -8,7 +8,7 @@
 import 'package:analyzer/src/generated/engine.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -19,11 +19,12 @@
 }
 
 @reflectiveTest
-class NonConstantMapValueFromDeferredLibraryTest extends DriverResolutionTest {
+class NonConstantMapValueFromDeferredLibraryTest
+    extends PubPackageResolutionTest {
   @failingTest
   test_const_ifElement_thenTrue_elseDeferred() async {
     // reports wrong error code
-    newFile(convertPath('/test/lib/lib1.dart'), content: r'''
+    newFile(convertPath('$testPackageLibPath/lib1.dart'), content: r'''
 const int c = 1;''');
     await assertErrorsInCode(r'''
 import 'lib1.dart' deferred as a;
@@ -36,7 +37,7 @@
   }
 
   test_const_ifElement_thenTrue_thenDeferred() async {
-    newFile(convertPath('/test/lib/lib1.dart'), content: r'''
+    newFile(convertPath('$testPackageLibPath/lib1.dart'), content: r'''
 const int c = 1;''');
     await assertErrorsInCode(
         r'''
@@ -58,7 +59,7 @@
   }
 
   test_const_topLevel_deferred() async {
-    newFile(convertPath('/test/lib/lib1.dart'), content: r'''
+    newFile(convertPath('$testPackageLibPath/lib1.dart'), content: r'''
 const int c = 1;''');
     await assertErrorsInCode(r'''
 import 'lib1.dart' deferred as a;
@@ -70,7 +71,7 @@
   }
 
   test_const_topLevel_deferred_nested() async {
-    newFile(convertPath('/test/lib/lib1.dart'), content: r'''
+    newFile(convertPath('$testPackageLibPath/lib1.dart'), content: r'''
 const int c = 1;''');
     await assertErrorsInCode(r'''
 import 'lib1.dart' deferred as a;
diff --git a/pkg/analyzer/test/src/diagnostics/non_constant_map_value_test.dart b/pkg/analyzer/test/src/diagnostics/non_constant_map_value_test.dart
index b22f1a0..edbe740 100644
--- a/pkg/analyzer/test/src/diagnostics/non_constant_map_value_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_constant_map_value_test.dart
@@ -8,7 +8,7 @@
 import 'package:analyzer/src/generated/engine.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -18,7 +18,7 @@
 }
 
 @reflectiveTest
-class NonConstantMapValueTest extends DriverResolutionTest {
+class NonConstantMapValueTest extends PubPackageResolutionTest {
   test_const_ifTrue_elseFinal() async {
     await assertErrorsInCode(
         r'''
diff --git a/pkg/analyzer/test/src/diagnostics/non_constant_set_element_test.dart b/pkg/analyzer/test/src/diagnostics/non_constant_set_element_test.dart
index 2b69d39..1f92b3d 100644
--- a/pkg/analyzer/test/src/diagnostics/non_constant_set_element_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_constant_set_element_test.dart
@@ -8,7 +8,7 @@
 import 'package:analyzer/src/generated/engine.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -18,7 +18,7 @@
 }
 
 @reflectiveTest
-class NonConstantSetElementTest extends DriverResolutionTest {
+class NonConstantSetElementTest extends PubPackageResolutionTest {
   test_const_forElement() async {
     await assertErrorsInCode(r'''
 const Set set = {};
diff --git a/pkg/analyzer/test/src/diagnostics/non_constant_type_argument_test.dart b/pkg/analyzer/test/src/diagnostics/non_constant_type_argument_test.dart
index 5754334..eee33d4 100644
--- a/pkg/analyzer/test/src/diagnostics/non_constant_type_argument_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_constant_type_argument_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/dart/error/ffi_code.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class NonConstantTypeArgumentTest extends DriverResolutionTest {
+class NonConstantTypeArgumentTest extends PubPackageResolutionTest {
   test_asFunction_R() async {
     await assertErrorsInCode(r'''
 import 'dart:ffi';
diff --git a/pkg/analyzer/test/src/diagnostics/non_generative_constructor_test.dart b/pkg/analyzer/test/src/diagnostics/non_generative_constructor_test.dart
index 4879b59..533e750 100644
--- a/pkg/analyzer/test/src/diagnostics/non_generative_constructor_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_generative_constructor_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class NonGenerativeConstructorTest extends DriverResolutionTest {
+class NonGenerativeConstructorTest extends PubPackageResolutionTest {
   test_explicit() async {
     await assertErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/non_generative_implicit_constructor_test.dart b/pkg/analyzer/test/src/diagnostics/non_generative_implicit_constructor_test.dart
index 452a436..e2d7d41 100644
--- a/pkg/analyzer/test/src/diagnostics/non_generative_implicit_constructor_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_generative_implicit_constructor_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class NonGenerativeImplicitConstructorTest extends DriverResolutionTest {
+class NonGenerativeImplicitConstructorTest extends PubPackageResolutionTest {
   test_implicit() async {
     await assertErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/non_native_function_type_argument_to_pointer_test.dart b/pkg/analyzer/test/src/diagnostics/non_native_function_type_argument_to_pointer_test.dart
index 0ec59d1..323c81b 100644
--- a/pkg/analyzer/test/src/diagnostics/non_native_function_type_argument_to_pointer_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_native_function_type_argument_to_pointer_test.dart
@@ -6,7 +6,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +15,8 @@
 }
 
 @reflectiveTest
-class NonNativeFunctionTypeArgumentToPointerTest extends DriverResolutionTest {
+class NonNativeFunctionTypeArgumentToPointerTest
+    extends PubPackageResolutionTest {
   test_asFunction_1() async {
     await assertErrorsInCode(r'''
 import 'dart:ffi';
diff --git a/pkg/analyzer/test/src/diagnostics/non_null_opt_out_test.dart b/pkg/analyzer/test/src/diagnostics/non_null_opt_out_test.dart
index 3c0f17e..856103c 100644
--- a/pkg/analyzer/test/src/diagnostics/non_null_opt_out_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_null_opt_out_test.dart
@@ -11,8 +11,7 @@
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -21,13 +20,14 @@
 }
 
 @reflectiveTest
-class NonNullOptOutTest extends DriverResolutionTest with WithNullSafetyMixin {
+class NonNullOptOutTest extends PubPackageResolutionTest
+    with WithNullSafetyMixin {
   ImportFindElement get _import_a {
     return findElement.importFind('package:test/a.dart');
   }
 
   test_assignment_indexExpression() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   void operator[]=(int a, int b) {}
 }
@@ -51,7 +51,7 @@
   }
 
   test_assignment_prefixedIdentifier_instanceTarget_class_field() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   int foo = 0;
 }
@@ -78,7 +78,7 @@
   }
 
   test_assignment_prefixedIdentifier_instanceTarget_extension_setter() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {}
 extension E on A {
   void set foo(int _) {}
@@ -106,7 +106,7 @@
   }
 
   test_assignment_prefixedIdentifier_staticTarget_class_field() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   static int foo = 0;
 }
@@ -133,7 +133,7 @@
   }
 
   test_assignment_prefixedIdentifier_staticTarget_extension_field() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 extension E on int {
   static int foo = 0;
 }
@@ -160,7 +160,7 @@
   }
 
   test_assignment_prefixedIdentifier_topLevelVariable() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 int foo = 0;
 ''');
     await assertNoErrorsInCode(r'''
@@ -182,7 +182,7 @@
   }
 
   test_assignment_propertyAccess_class_field() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   int foo = 0;
 }
@@ -206,7 +206,7 @@
   }
 
   test_assignment_propertyAccess_extension_setter() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {}
 extension E on A {
   void set foo(int a) {}
@@ -231,7 +231,7 @@
   }
 
   test_assignment_propertyAccess_extensionOverride_setter() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {}
 extension E on A {
   void set foo(int a) {}
@@ -256,7 +256,7 @@
   }
 
   test_assignment_propertyAccess_superTarget() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   int foo = 0;
 }
@@ -282,7 +282,7 @@
   }
 
   test_assignment_simpleIdentifier_topLevelVariable() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 int foo = 0;
 ''');
     await assertNoErrorsInCode(r'''
@@ -304,7 +304,7 @@
   }
 
   test_binaryExpression() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   int operator+(int a) => 0;
 }
@@ -326,7 +326,7 @@
   }
 
   test_functionExpressionInvocation() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 int Function(int, int?)? foo;
 ''');
     await assertNoErrorsInCode(r'''
@@ -349,7 +349,7 @@
   }
 
   test_functionExpressionInvocation_call() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   int call(int a, int? b) => 0;
 }
@@ -374,7 +374,7 @@
   }
 
   test_functionExpressionInvocation_extension_staticTarget() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 extension E on int {
   static int Function(int) get foo => (_) => 0;
 }
@@ -399,7 +399,7 @@
   }
 
   test_instanceCreation() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   A(int a, int? b);
 }
@@ -422,7 +422,7 @@
   }
 
   test_instanceCreation_generic() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A<T> {
   A(T a, T? b);
 }
@@ -446,7 +446,7 @@
   }
 
   test_instanceCreation_generic_instantiateToBounds() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A<T extends num> {}
 ''');
     await assertNoErrorsInCode(r'''
@@ -461,7 +461,7 @@
   }
 
   test_methodInvocation_extension_functionTarget() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 extension E on void Function() {
   int foo(int a) => 0;
 }
@@ -486,7 +486,7 @@
   }
 
   test_methodInvocation_extension_interfaceTarget() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 extension E on int {
   int foo(int a) => 0;
 }
@@ -511,7 +511,7 @@
   }
 
   test_methodInvocation_extension_nullTarget() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {}
 extension E on A {
   int foo(int a) => 0;
@@ -539,7 +539,7 @@
   }
 
   test_methodInvocation_extension_staticTarget() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 extension E on int {
   static int foo(int a) => 0;
 }
@@ -564,7 +564,7 @@
   }
 
   test_methodInvocation_extensionOverride() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 extension E on int {
   int foo(int a) => 0;
 }
@@ -589,7 +589,7 @@
   }
 
   test_methodInvocation_function() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 int foo(int a, int? b) => 0;
 ''');
     await assertNoErrorsInCode(r'''
@@ -612,7 +612,7 @@
   }
 
   test_methodInvocation_function_prefixed() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 int foo(int a, int? b) => 0;
 ''');
     await assertNoErrorsInCode(r'''
@@ -635,7 +635,7 @@
   }
 
   test_methodInvocation_method_cascade() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   int foo(int a, int? b) => 0;
 }
@@ -660,7 +660,7 @@
   }
 
   test_methodInvocation_method_interfaceTarget() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   int foo(int a, int? b) => 0;
 }
@@ -685,7 +685,7 @@
   }
 
   test_methodInvocation_method_nullTarget() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   int foo(int a, int? b) => 0;
 }
@@ -712,7 +712,7 @@
   }
 
   test_methodInvocation_method_staticTarget() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   static int foo(int a, int? b) => 0;
 }
@@ -737,7 +737,7 @@
   }
 
   test_methodInvocation_method_superTarget() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   int foo(int a, int? b) => 0;
 }
@@ -791,7 +791,7 @@
   }
 
   test_postfixExpression() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   A operator+(int a) => this;
 }
@@ -812,7 +812,7 @@
   }
 
   test_prefixExpression() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   int operator-() => 0;
 }
@@ -833,7 +833,7 @@
   }
 
   test_read_indexExpression_class() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   int operator[](int a) => 0;
 }
@@ -854,7 +854,7 @@
   }
 
   test_read_prefixedIdentifier_instanceTarget_class_field() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   int foo;
 }
@@ -878,7 +878,7 @@
   }
 
   test_read_prefixedIdentifier_instanceTarget_extension_getter() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {}
 extension E on A {
   int get foo => 0;
@@ -903,7 +903,7 @@
   }
 
   test_read_prefixedIdentifier_staticTarget_class_field() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   static int foo;
 }
@@ -927,7 +927,7 @@
   }
 
   test_read_prefixedIdentifier_staticTarget_class_method() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   static int foo(int a) => 0;
 }
@@ -951,7 +951,7 @@
   }
 
   test_read_prefixedIdentifier_staticTarget_extension_field() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 extension E {
   static int foo;
 }
@@ -975,7 +975,7 @@
   }
 
   test_read_prefixedIdentifier_staticTarget_extension_method() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 extension E {
   static int foo(int a) => 0;
 }
@@ -999,7 +999,7 @@
   }
 
   test_read_prefixedIdentifier_topLevelVariable() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 int foo = 0;
 ''');
     await assertNoErrorsInCode(r'''
@@ -1021,7 +1021,7 @@
   }
 
   test_read_propertyAccessor_class_field() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   int foo = 0;
 }
@@ -1045,7 +1045,7 @@
   }
 
   test_read_propertyAccessor_class_method() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   int foo() => 0;
 }
@@ -1069,7 +1069,7 @@
   }
 
   test_read_propertyAccessor_extensionOverride_getter() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {}
 extension E on A {
   int get foo => 0;
@@ -1094,7 +1094,7 @@
   }
 
   test_read_propertyAccessor_superTarget() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   int foo = 0;
 }
@@ -1120,7 +1120,7 @@
   }
 
   test_read_simpleIdentifier_class_field() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   int foo = 0;
 }
@@ -1143,7 +1143,7 @@
   }
 
   test_read_simpleIdentifier_class_method() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   int foo(int a) => 0;
 }
@@ -1166,7 +1166,7 @@
   }
 
   test_read_simpleIdentifier_extension_getter() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {}
 extension E on A {
   int get foo => 0;
@@ -1190,7 +1190,7 @@
   }
 
   test_read_simpleIdentifier_extension_method() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {}
 extension E on A {
   int foo(int a) => 0;
@@ -1214,7 +1214,7 @@
   }
 
   test_read_simpleIdentifier_topLevelVariable() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 int foo = 0;
 ''');
     await assertNoErrorsInCode(r'''
@@ -1233,7 +1233,7 @@
   }
 
   test_superConstructorInvocation() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   A(int a, int? b);
 }
diff --git a/pkg/analyzer/test/src/diagnostics/non_type_as_type_argument_test.dart b/pkg/analyzer/test/src/diagnostics/non_type_as_type_argument_test.dart
index cd93d58..2285127 100644
--- a/pkg/analyzer/test/src/diagnostics/non_type_as_type_argument_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_type_as_type_argument_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class NonTypeAsTypeArgumentTest extends DriverResolutionTest {
+class NonTypeAsTypeArgumentTest extends PubPackageResolutionTest {
   test_notAType() async {
     await assertErrorsInCode(r'''
 int A;
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 1ce275e..9e21e5a 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
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class NonTypeInCatchClauseTest extends DriverResolutionTest {
+class NonTypeInCatchClauseTest extends PubPackageResolutionTest {
   test_isClass() async {
     await assertErrorsInCode(r'''
 f() {
diff --git a/pkg/analyzer/test/src/diagnostics/non_void_return_for_operator_test.dart b/pkg/analyzer/test/src/diagnostics/non_void_return_for_operator_test.dart
index b0d4dd0..1055ee0 100644
--- a/pkg/analyzer/test/src/diagnostics/non_void_return_for_operator_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_void_return_for_operator_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class NonVoidReturnForOperatorTest extends DriverResolutionTest {
+class NonVoidReturnForOperatorTest extends PubPackageResolutionTest {
   test_indexSetter() async {
     await assertErrorsInCode('''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/non_void_return_for_setter_test.dart b/pkg/analyzer/test/src/diagnostics/non_void_return_for_setter_test.dart
index b35f65d..b01d127 100644
--- a/pkg/analyzer/test/src/diagnostics/non_void_return_for_setter_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_void_return_for_setter_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class NonVoidReturnForSetterTest extends DriverResolutionTest {
+class NonVoidReturnForSetterTest extends PubPackageResolutionTest {
   test_function() async {
     await assertErrorsInCode('''
 int set x(int v) {
diff --git a/pkg/analyzer/test/src/diagnostics/not_a_type_test.dart b/pkg/analyzer/test/src/diagnostics/not_a_type_test.dart
index c5280ab..c2adf0a 100644
--- a/pkg/analyzer/test/src/diagnostics/not_a_type_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/not_a_type_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class NotATypeTest extends DriverResolutionTest {
+class NotATypeTest extends PubPackageResolutionTest {
   test_class_constructor() async {
     await assertErrorsInCode('''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/not_assigned_potentially_non_nullable_local_variable_test.dart b/pkg/analyzer/test/src/diagnostics/not_assigned_potentially_non_nullable_local_variable_test.dart
index 78442d4..1caa9cc 100644
--- a/pkg/analyzer/test/src/diagnostics/not_assigned_potentially_non_nullable_local_variable_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/not_assigned_potentially_non_nullable_local_variable_test.dart
@@ -6,8 +6,7 @@
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import '../../generated/test_support.dart';
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -19,7 +18,7 @@
 
 @reflectiveTest
 class NotInitializedPotentiallyNonNullableLocalVariableTest
-    extends DriverResolutionTest with WithNullSafetyMixin {
+    extends PubPackageResolutionTest with WithNullSafetyMixin {
   test_assignment_leftExpression() async {
     await assertErrorsInCode(r'''
 void f() {
diff --git a/pkg/analyzer/test/src/diagnostics/not_enough_positional_arguments_test.dart b/pkg/analyzer/test/src/diagnostics/not_enough_positional_arguments_test.dart
index 4f2200d..b08bd58 100644
--- a/pkg/analyzer/test/src/diagnostics/not_enough_positional_arguments_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/not_enough_positional_arguments_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class NotEnoughPositionalArgumentsTest extends DriverResolutionTest {
+class NotEnoughPositionalArgumentsTest extends PubPackageResolutionTest {
   test_const() async {
     await assertErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/not_initialized_non_nullable_instance_field_test.dart b/pkg/analyzer/test/src/diagnostics/not_initialized_non_nullable_instance_field_test.dart
index c1c0a58..1b62195 100644
--- a/pkg/analyzer/test/src/diagnostics/not_initialized_non_nullable_instance_field_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/not_initialized_non_nullable_instance_field_test.dart
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,8 +14,8 @@
 }
 
 @reflectiveTest
-class NotInitializedNonNullableInstanceFieldTest extends DriverResolutionTest
-    with WithNullSafetyMixin {
+class NotInitializedNonNullableInstanceFieldTest
+    extends PubPackageResolutionTest with WithNullSafetyMixin {
   test_class_factoryConstructor() async {
     await assertNoErrorsInCode('''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/not_initialized_non_nullable_variable_test.dart b/pkg/analyzer/test/src/diagnostics/not_initialized_non_nullable_variable_test.dart
index 34a730b..d7d101e 100644
--- a/pkg/analyzer/test/src/diagnostics/not_initialized_non_nullable_variable_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/not_initialized_non_nullable_variable_test.dart
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +14,7 @@
 }
 
 @reflectiveTest
-class NotInitializedNonNullableVariableTest extends DriverResolutionTest
+class NotInitializedNonNullableVariableTest extends PubPackageResolutionTest
     with WithNullSafetyMixin {
   test_staticField_futureOr_questionArgument_none() async {
     await assertNoErrorsInCode('''
diff --git a/pkg/analyzer/test/src/diagnostics/not_instantiated_bound_test.dart b/pkg/analyzer/test/src/diagnostics/not_instantiated_bound_test.dart
index 74d5464..969205a 100644
--- a/pkg/analyzer/test/src/diagnostics/not_instantiated_bound_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/not_instantiated_bound_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class NotInstantiatedBoundTest extends DriverResolutionTest {
+class NotInstantiatedBoundTest extends PubPackageResolutionTest {
   test_argument_notInstantiated() async {
     await assertErrorsInCode(r'''
 class A<K, V extends List<K>> {}
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 bddd56a..4be6794 100644
--- a/pkg/analyzer/test/src/diagnostics/not_iterable_spread_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/not_iterable_spread_test.dart
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -29,7 +28,7 @@
 }
 
 @reflectiveTest
-class NotIterableSpreadTest extends DriverResolutionTest {
+class NotIterableSpreadTest extends PubPackageResolutionTest {
   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 be66c57..b95d6f8 100644
--- a/pkg/analyzer/test/src/diagnostics/not_map_spread_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/not_map_spread_test.dart
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -29,7 +28,7 @@
 }
 
 @reflectiveTest
-class NotMapSpreadTest extends DriverResolutionTest {
+class NotMapSpreadTest extends PubPackageResolutionTest {
   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 115ffde..f521be8 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
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class NotNullAwareNullSpreadTest extends DriverResolutionTest {
+class NotNullAwareNullSpreadTest extends PubPackageResolutionTest {
   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 6b5be07..2fb8510 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
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class NullAwareBeforeOperatorTest extends DriverResolutionTest {
+class NullAwareBeforeOperatorTest extends PubPackageResolutionTest {
   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 c057732..94daa48 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
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class NullAwareInConditionTest extends DriverResolutionTest {
+class NullAwareInConditionTest extends PubPackageResolutionTest {
   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 d445199..a64628b 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
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class NullAwareInLogicalOperatorTest extends DriverResolutionTest {
+class NullAwareInLogicalOperatorTest extends PubPackageResolutionTest {
   test_conditionalAnd_first() async {
     await assertErrorsInCode(r'''
 m(x) {
diff --git a/pkg/analyzer/test/src/diagnostics/nullable_type_in_catch_clause_test.dart b/pkg/analyzer/test/src/diagnostics/nullable_type_in_catch_clause_test.dart
index 2816817..bbd9363 100644
--- a/pkg/analyzer/test/src/diagnostics/nullable_type_in_catch_clause_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/nullable_type_in_catch_clause_test.dart
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +14,7 @@
 }
 
 @reflectiveTest
-class NullableTypeInCatchClauseTest extends DriverResolutionTest
+class NullableTypeInCatchClauseTest extends PubPackageResolutionTest
     with WithNullSafetyMixin {
   test_noOnClause() async {
     await assertNoErrorsInCode('''
diff --git a/pkg/analyzer/test/src/diagnostics/nullable_type_in_extends_clause_test.dart b/pkg/analyzer/test/src/diagnostics/nullable_type_in_extends_clause_test.dart
index 1a8847d..ccdffe5 100644
--- a/pkg/analyzer/test/src/diagnostics/nullable_type_in_extends_clause_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/nullable_type_in_extends_clause_test.dart
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +14,7 @@
 }
 
 @reflectiveTest
-class NullableTypeInExtendsClauseTest extends DriverResolutionTest
+class NullableTypeInExtendsClauseTest extends PubPackageResolutionTest
     with WithNullSafetyMixin {
   test_class_nonNullable() async {
     await assertNoErrorsInCode('''
diff --git a/pkg/analyzer/test/src/diagnostics/nullable_type_in_implements_clause_test.dart b/pkg/analyzer/test/src/diagnostics/nullable_type_in_implements_clause_test.dart
index 7bcc751..9e9d5a8 100644
--- a/pkg/analyzer/test/src/diagnostics/nullable_type_in_implements_clause_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/nullable_type_in_implements_clause_test.dart
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +14,7 @@
 }
 
 @reflectiveTest
-class NullableTypeInImplementsClauseTest extends DriverResolutionTest
+class NullableTypeInImplementsClauseTest extends PubPackageResolutionTest
     with WithNullSafetyMixin {
   test_class_nonNullable() async {
     await assertNoErrorsInCode('''
diff --git a/pkg/analyzer/test/src/diagnostics/nullable_type_in_on_clause_test.dart b/pkg/analyzer/test/src/diagnostics/nullable_type_in_on_clause_test.dart
index d4b131f..98a243c 100644
--- a/pkg/analyzer/test/src/diagnostics/nullable_type_in_on_clause_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/nullable_type_in_on_clause_test.dart
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +14,7 @@
 }
 
 @reflectiveTest
-class NullableTypeInOnClauseTest extends DriverResolutionTest
+class NullableTypeInOnClauseTest extends PubPackageResolutionTest
     with WithNullSafetyMixin {
   test_nonNullable() async {
     await assertNoErrorsInCode('''
diff --git a/pkg/analyzer/test/src/diagnostics/nullable_type_in_with_clause_test.dart b/pkg/analyzer/test/src/diagnostics/nullable_type_in_with_clause_test.dart
index e560da2..ba235ef 100644
--- a/pkg/analyzer/test/src/diagnostics/nullable_type_in_with_clause_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/nullable_type_in_with_clause_test.dart
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +14,7 @@
 }
 
 @reflectiveTest
-class NullableTypeInWithClauseTest extends DriverResolutionTest
+class NullableTypeInWithClauseTest extends PubPackageResolutionTest
     with WithNullSafetyMixin {
   test_class_nonNullable() async {
     await assertNoErrorsInCode('''
diff --git a/pkg/analyzer/test/src/diagnostics/object_cannot_extend_another_class_test.dart b/pkg/analyzer/test/src/diagnostics/object_cannot_extend_another_class_test.dart
index 66ca109..cb3965f 100644
--- a/pkg/analyzer/test/src/diagnostics/object_cannot_extend_another_class_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/object_cannot_extend_another_class_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class ObjectCannotExtendAnotherClassTest extends DriverResolutionTest {
+class ObjectCannotExtendAnotherClassTest extends PubPackageResolutionTest {
   @failingTest
   test_object_extends_class() async {
     // TODO(brianwilkerson): Implement this check.
diff --git a/pkg/analyzer/test/src/diagnostics/optional_parameter_in_operator_test.dart b/pkg/analyzer/test/src/diagnostics/optional_parameter_in_operator_test.dart
index f773af0..6f8dbb8 100644
--- a/pkg/analyzer/test/src/diagnostics/optional_parameter_in_operator_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/optional_parameter_in_operator_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class OptionalParameterInOperatorTest extends DriverResolutionTest {
+class OptionalParameterInOperatorTest extends PubPackageResolutionTest {
   test_named() async {
     await assertErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/override_equals_but_not_hashcode_test.dart b/pkg/analyzer/test/src/diagnostics/override_equals_but_not_hashcode_test.dart
index 7def0c4..6479ead 100644
--- a/pkg/analyzer/test/src/diagnostics/override_equals_but_not_hashcode_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/override_equals_but_not_hashcode_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class OverrideEqualsButNotHashCodeTest extends DriverResolutionTest {
+class OverrideEqualsButNotHashCodeTest extends PubPackageResolutionTest {
   test_overrideBoth() async {
     await assertNoErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/override_on_non_overriding_field_test.dart b/pkg/analyzer/test/src/diagnostics/override_on_non_overriding_field_test.dart
index cb18626..619cfb8 100644
--- a/pkg/analyzer/test/src/diagnostics/override_on_non_overriding_field_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/override_on_non_overriding_field_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class OverrideOnNonOverridingFieldTest extends DriverResolutionTest {
+class OverrideOnNonOverridingFieldTest extends PubPackageResolutionTest {
   test_inInterface() async {
     await assertErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/override_on_non_overriding_getter_test.dart b/pkg/analyzer/test/src/diagnostics/override_on_non_overriding_getter_test.dart
index 3a3345c..d07c28e 100644
--- a/pkg/analyzer/test/src/diagnostics/override_on_non_overriding_getter_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/override_on_non_overriding_getter_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class OverrideOnNonOverridingGetterTest extends DriverResolutionTest {
+class OverrideOnNonOverridingGetterTest extends PubPackageResolutionTest {
   test_inInterface() async {
     await assertNoErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/override_on_non_overriding_method_test.dart b/pkg/analyzer/test/src/diagnostics/override_on_non_overriding_method_test.dart
index 19a2cbd..3720caa 100644
--- a/pkg/analyzer/test/src/diagnostics/override_on_non_overriding_method_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/override_on_non_overriding_method_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class OverrideOnNonOverridingMethodTest extends DriverResolutionTest {
+class OverrideOnNonOverridingMethodTest extends PubPackageResolutionTest {
   test_inInterface() async {
     await assertNoErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/override_on_non_overriding_setter_test.dart b/pkg/analyzer/test/src/diagnostics/override_on_non_overriding_setter_test.dart
index 748aa24..b2f6683 100644
--- a/pkg/analyzer/test/src/diagnostics/override_on_non_overriding_setter_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/override_on_non_overriding_setter_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class OverrideOnNonOverridingSetterTest extends DriverResolutionTest {
+class OverrideOnNonOverridingSetterTest extends PubPackageResolutionTest {
   test_inInterface() async {
     await assertNoErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/part_of_different_library_test.dart b/pkg/analyzer/test/src/diagnostics/part_of_different_library_test.dart
index a40df04..e26ae88 100644
--- a/pkg/analyzer/test/src/diagnostics/part_of_different_library_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/part_of_different_library_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,9 +14,9 @@
 }
 
 @reflectiveTest
-class PartOfDifferentLibraryTest extends DriverResolutionTest {
+class PartOfDifferentLibraryTest extends PubPackageResolutionTest {
   test_name() async {
-    newFile("/test/lib/part.dart", content: "part of lub;");
+    newFile('$testPackageLibPath/part.dart', content: "part of lub;");
     await assertErrorsInCode('''
 library lib;
 part 'part.dart';
diff --git a/pkg/analyzer/test/src/diagnostics/part_of_non_part_test.dart b/pkg/analyzer/test/src/diagnostics/part_of_non_part_test.dart
index 89ca7ed..a03e62c 100644
--- a/pkg/analyzer/test/src/diagnostics/part_of_non_part_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/part_of_non_part_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,9 +14,9 @@
 }
 
 @reflectiveTest
-class PartOfNonPartTest extends DriverResolutionTest {
+class PartOfNonPartTest extends PubPackageResolutionTest {
   test_part_of_non_part() async {
-    newFile("/test/lib/l2.dart", content: '''
+    newFile('$testPackageLibPath/l2.dart', content: '''
 library l2;
 ''');
     await assertErrorsInCode(r'''
diff --git a/pkg/analyzer/test/src/diagnostics/prefix_collides_with_top_level_member_test.dart b/pkg/analyzer/test/src/diagnostics/prefix_collides_with_top_level_member_test.dart
index e00d0ab..0aecbd6 100644
--- a/pkg/analyzer/test/src/diagnostics/prefix_collides_with_top_level_member_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/prefix_collides_with_top_level_member_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,9 +14,9 @@
 }
 
 @reflectiveTest
-class PrefixCollidesWithTopLevelMemberTest extends DriverResolutionTest {
+class PrefixCollidesWithTopLevelMemberTest extends PubPackageResolutionTest {
   test_functionTypeAlias() async {
-    newFile("/test/lib/lib.dart", content: r'''
+    newFile('$testPackageLibPath/lib.dart', content: r'''
 library lib;
 class A{}
 ''');
@@ -30,7 +30,7 @@
   }
 
   test_no_collision() async {
-    newFile("/test/lib/lib.dart", content: r'''
+    newFile('$testPackageLibPath/lib.dart', content: r'''
 library lib;
 class A {}''');
     await assertNoErrorsInCode(r'''
@@ -44,7 +44,7 @@
   }
 
   test_topLevelFunction() async {
-    newFile("/test/lib/lib.dart", content: r'''
+    newFile('$testPackageLibPath/lib.dart', content: r'''
 library lib;
 class A{}
 ''');
@@ -58,7 +58,7 @@
   }
 
   test_topLevelVariable() async {
-    newFile("/test/lib/lib.dart", content: r'''
+    newFile('$testPackageLibPath/lib.dart', content: r'''
 library lib;
 class A{}
 ''');
@@ -72,7 +72,7 @@
   }
 
   test_type() async {
-    newFile("/test/lib/lib.dart", content: r'''
+    newFile('$testPackageLibPath/lib.dart', content: r'''
 library lib;
 class A{}
 ''');
diff --git a/pkg/analyzer/test/src/diagnostics/prefix_identifier_not_followed_by_dot_test.dart b/pkg/analyzer/test/src/diagnostics/prefix_identifier_not_followed_by_dot_test.dart
index 1f4c596..76faf80 100644
--- a/pkg/analyzer/test/src/diagnostics/prefix_identifier_not_followed_by_dot_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/prefix_identifier_not_followed_by_dot_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,9 +14,9 @@
 }
 
 @reflectiveTest
-class PrefixIdentifierNotFollowedByDotTest extends DriverResolutionTest {
+class PrefixIdentifierNotFollowedByDotTest extends PubPackageResolutionTest {
   test_assignment_compound_in_method() async {
-    newFile('/test/lib/lib.dart', content: '''
+    newFile('$testPackageLibPath/lib.dart', content: '''
 library lib;
 ''');
     await assertErrorsInCode('''
@@ -32,7 +32,7 @@
   }
 
   test_assignment_compound_not_in_method() async {
-    newFile('/test/lib/lib.dart', content: '''
+    newFile('$testPackageLibPath/lib.dart', content: '''
 library lib;
 ''');
     await assertErrorsInCode('''
@@ -46,7 +46,7 @@
   }
 
   test_assignment_in_method() async {
-    newFile('/test/lib/lib.dart', content: '''
+    newFile('$testPackageLibPath/lib.dart', content: '''
 library lib;
 ''');
     await assertErrorsInCode('''
@@ -62,7 +62,7 @@
   }
 
   test_assignment_not_in_method() async {
-    newFile('/test/lib/lib.dart', content: '''
+    newFile('$testPackageLibPath/lib.dart', content: '''
 library lib;
 ''');
     await assertErrorsInCode('''
@@ -76,7 +76,7 @@
   }
 
   test_compoundAssignment() async {
-    newFile('/test/lib/lib.dart', content: '''
+    newFile('$testPackageLibPath/lib.dart', content: '''
 library lib;
 ''');
     await assertErrorsInCode('''
@@ -90,7 +90,7 @@
   }
 
   test_conditionalMethodInvocation() async {
-    newFile('/test/lib/lib.dart', content: '''
+    newFile('$testPackageLibPath/lib.dart', content: '''
 library lib;
 g() {}
 ''');
@@ -105,7 +105,7 @@
   }
 
   test_conditionalPropertyAccess_call_loadLibrary() async {
-    newFile('/test/lib/lib.dart', content: '''
+    newFile('$testPackageLibPath/lib.dart', content: '''
 library lib;
 ''');
     await assertErrorsInCode('''
@@ -119,7 +119,7 @@
   }
 
   test_conditionalPropertyAccess_get() async {
-    newFile('/test/lib/lib.dart', content: '''
+    newFile('$testPackageLibPath/lib.dart', content: '''
 library lib;
 var x;
 ''');
@@ -134,7 +134,7 @@
   }
 
   test_conditionalPropertyAccess_get_loadLibrary() async {
-    newFile('/test/lib/lib.dart', content: '''
+    newFile('$testPackageLibPath/lib.dart', content: '''
 library lib;
 ''');
     await assertErrorsInCode('''
@@ -148,7 +148,7 @@
   }
 
   test_conditionalPropertyAccess_set() async {
-    newFile('/test/lib/lib.dart', content: '''
+    newFile('$testPackageLibPath/lib.dart', content: '''
 library lib;
 var x;
 ''');
@@ -163,7 +163,7 @@
   }
 
   test_conditionalPropertyAccess_set_loadLibrary() async {
-    newFile('/test/lib/lib.dart', content: '''
+    newFile('$testPackageLibPath/lib.dart', content: '''
 library lib;
 ''');
     await assertErrorsInCode('''
@@ -177,7 +177,7 @@
   }
 
   test_prefix_not_followed_by_dot() async {
-    newFile('/test/lib/lib.dart', content: '''
+    newFile('$testPackageLibPath/lib.dart', content: '''
 library lib;
 ''');
     await assertErrorsInCode('''
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 b70ac85..33c6cf1 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
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class PrefixShadowedByLocalDeclarationTest extends DriverResolutionTest {
+class PrefixShadowedByLocalDeclarationTest extends PubPackageResolutionTest {
   test_function_return_type_not_shadowed_by_parameter() async {
     await assertNoErrorsInCode('''
 import 'dart:async' as a;
@@ -48,7 +48,7 @@
 ''', [
       error(HintCode.UNUSED_IMPORT, 7, 12),
       error(CompileTimeErrorCode.REFERENCED_BEFORE_DECLARATION, 34, 1,
-          contextMessages: [message('/test/lib/test.dart', 59, 1)]),
+          contextMessages: [message('$testPackageLibPath/test.dart', 59, 1)]),
       error(CompileTimeErrorCode.PREFIX_SHADOWED_BY_LOCAL_DECLARATION, 34, 1),
     ]);
   }
diff --git a/pkg/analyzer/test/src/diagnostics/private_collision_in_mixin_application_test.dart b/pkg/analyzer/test/src/diagnostics/private_collision_in_mixin_application_test.dart
index 8e840e0..de4ef80 100644
--- a/pkg/analyzer/test/src/diagnostics/private_collision_in_mixin_application_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/private_collision_in_mixin_application_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,9 +14,9 @@
 }
 
 @reflectiveTest
-class PrivateCollisionInMixinApplicationTest extends DriverResolutionTest {
+class PrivateCollisionInMixinApplicationTest extends PubPackageResolutionTest {
   test_class_interfaceAndMixin_same() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   void _foo() {}
 }
@@ -31,7 +31,7 @@
   }
 
   test_class_mixinAndMixin() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   void _foo() {}
 }
@@ -51,7 +51,7 @@
   }
 
   test_class_mixinAndMixin_indirect() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   void _foo() {}
 }
@@ -72,7 +72,7 @@
   }
 
   test_class_staticAndInstanceElement() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   static void _foo() {}
 }
@@ -90,7 +90,7 @@
   }
 
   test_class_staticElements() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   static void _foo() {}
 }
@@ -108,7 +108,7 @@
   }
 
   test_class_superclassAndMixin_getter2() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   int get _foo => 0;
 }
@@ -128,7 +128,7 @@
   }
 
   test_class_superclassAndMixin_method2() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   void _foo() {}
 }
@@ -165,7 +165,7 @@
   }
 
   test_class_superclassAndMixin_setter2() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   set _foo(int _) {}
 }
@@ -185,7 +185,7 @@
   }
 
   test_classTypeAlias_mixinAndMixin() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   void _foo() {}
 }
@@ -205,7 +205,7 @@
   }
 
   test_classTypeAlias_mixinAndMixin_indirect() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   void _foo() {}
 }
@@ -226,7 +226,7 @@
   }
 
   test_classTypeAlias_superclassAndMixin() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   void _foo() {}
 }
diff --git a/pkg/analyzer/test/src/diagnostics/private_optional_parameter_test.dart b/pkg/analyzer/test/src/diagnostics/private_optional_parameter_test.dart
index 6a6812c..c8b9dbc 100644
--- a/pkg/analyzer/test/src/diagnostics/private_optional_parameter_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/private_optional_parameter_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class PrivateOptionalParameterTest extends DriverResolutionTest {
+class PrivateOptionalParameterTest extends PubPackageResolutionTest {
   test_fieldFormal() async {
     await assertErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/private_setter_test.dart b/pkg/analyzer/test/src/diagnostics/private_setter_test.dart
index 9566d3c..438630b 100644
--- a/pkg/analyzer/test/src/diagnostics/private_setter_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/private_setter_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,9 +14,9 @@
 }
 
 @reflectiveTest
-class PrivateSetterTest extends DriverResolutionTest {
+class PrivateSetterTest extends PubPackageResolutionTest {
   test_typeLiteral_privateField_differentLibrary() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   static int _foo = 0;
 }
@@ -64,7 +64,7 @@
   }
 
   test_typeLiteral_privateSetter_differentLibrary_hasGetter() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   static set _foo(int _) {}
   
@@ -89,7 +89,7 @@
   }
 
   test_typeLiteral_privateSetter_differentLibrary_noGetter() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A {
   static set _foo(int _) {}
 }
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 5e10b8c..0cfcca7 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
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,7 +15,7 @@
 }
 
 @reflectiveTest
-class InvalidUseOfNeverTest extends DriverResolutionTest
+class InvalidUseOfNeverTest extends PubPackageResolutionTest
     with WithNullSafetyMixin {
   test_binaryExpression_never_eqEq() async {
     await assertErrorsInCode(r'''
@@ -510,7 +509,7 @@
 }
 
 @reflectiveTest
-class InvalidUseOfNeverTest_Legacy extends DriverResolutionTest {
+class InvalidUseOfNeverTest_Legacy extends PubPackageResolutionTest {
   test_binaryExpression_eqEq() async {
     await assertNoErrorsInCode(r'''
 void main() {
diff --git a/pkg/analyzer/test/src/diagnostics/recursive_compile_time_constant_test.dart b/pkg/analyzer/test/src/diagnostics/recursive_compile_time_constant_test.dart
index c07784e..90d06b2 100644
--- a/pkg/analyzer/test/src/diagnostics/recursive_compile_time_constant_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/recursive_compile_time_constant_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class RecursiveCompileTimeConstantTest extends DriverResolutionTest {
+class RecursiveCompileTimeConstantTest extends PubPackageResolutionTest {
   test_cycle() async {
     await assertErrorsInCode(r'''
 const x = y + 1;
@@ -38,7 +38,7 @@
 
   test_fromMapLiteral() async {
     newFile(
-      '/test/lib/constants.dart',
+      '$testPackageLibPath/constants.dart',
       content: r'''
 const int x = y;
 const int y = x;
diff --git a/pkg/analyzer/test/src/diagnostics/recursive_constructor_redirect_test.dart b/pkg/analyzer/test/src/diagnostics/recursive_constructor_redirect_test.dart
index e1e6130..25a71a3 100644
--- a/pkg/analyzer/test/src/diagnostics/recursive_constructor_redirect_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/recursive_constructor_redirect_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class RecursiveConstructorRedirectTest extends DriverResolutionTest {
+class RecursiveConstructorRedirectTest extends PubPackageResolutionTest {
   test_directSelfReference() async {
     await assertErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/recursive_factory_redirect_test.dart b/pkg/analyzer/test/src/diagnostics/recursive_factory_redirect_test.dart
index 3a792e1..3bcab7d 100644
--- a/pkg/analyzer/test/src/diagnostics/recursive_factory_redirect_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/recursive_factory_redirect_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class RecursiveFactoryRedirectTest extends DriverResolutionTest {
+class RecursiveFactoryRedirectTest extends PubPackageResolutionTest {
   test_directSelfReference() async {
     await assertErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/recursive_interface_inheritance_test.dart b/pkg/analyzer/test/src/diagnostics/recursive_interface_inheritance_test.dart
index 8650d66..472f7914 100644
--- a/pkg/analyzer/test/src/diagnostics/recursive_interface_inheritance_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/recursive_interface_inheritance_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class RecursiveInterfaceInheritanceTest extends DriverResolutionTest {
+class RecursiveInterfaceInheritanceTest extends PubPackageResolutionTest {
   test_loop() async {
     await assertErrorsInCode('''
 class A implements B {}
diff --git a/pkg/analyzer/test/src/diagnostics/redirect_generative_to_missing_constructor_test.dart b/pkg/analyzer/test/src/diagnostics/redirect_generative_to_missing_constructor_test.dart
index a349c9a..14a4018 100644
--- a/pkg/analyzer/test/src/diagnostics/redirect_generative_to_missing_constructor_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/redirect_generative_to_missing_constructor_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +15,7 @@
 
 @reflectiveTest
 class RedirectGenerativeToNonGenerativeConstructorTest
-    extends DriverResolutionTest {
+    extends PubPackageResolutionTest {
   test_missing() async {
     await assertErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/redirect_generative_to_non_generative_constructor_test.dart b/pkg/analyzer/test/src/diagnostics/redirect_generative_to_non_generative_constructor_test.dart
index bc34b8d..5f7cf95 100644
--- a/pkg/analyzer/test/src/diagnostics/redirect_generative_to_non_generative_constructor_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/redirect_generative_to_non_generative_constructor_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +15,7 @@
 
 @reflectiveTest
 class RedirectGenerativeToNonGenerativeConstructorTest
-    extends DriverResolutionTest {
+    extends PubPackageResolutionTest {
   test_nonGenerative() async {
     await assertErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/redirect_to_abstract_class_constructor_test.dart b/pkg/analyzer/test/src/diagnostics/redirect_to_abstract_class_constructor_test.dart
index a828062..57aabd4 100644
--- a/pkg/analyzer/test/src/diagnostics/redirect_to_abstract_class_constructor_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/redirect_to_abstract_class_constructor_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class RedirectToAbstractClassConstructorTest extends DriverResolutionTest {
+class RedirectToAbstractClassConstructorTest extends PubPackageResolutionTest {
   test_abstractRedirectsToSelf() async {
     await assertErrorsInCode(r'''
 abstract class A {
diff --git a/pkg/analyzer/test/src/diagnostics/redirect_to_invalid_function_type_test.dart b/pkg/analyzer/test/src/diagnostics/redirect_to_invalid_function_type_test.dart
index ee21c3b..e76771c 100644
--- a/pkg/analyzer/test/src/diagnostics/redirect_to_invalid_function_type_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/redirect_to_invalid_function_type_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class RedirectToInvalidFunctionTypeTest extends DriverResolutionTest {
+class RedirectToInvalidFunctionTypeTest extends PubPackageResolutionTest {
   test_redirectToInvalidFunctionType() async {
     await assertErrorsInCode('''
 class A implements B {
diff --git a/pkg/analyzer/test/src/diagnostics/redirect_to_invalid_return_type_test.dart b/pkg/analyzer/test/src/diagnostics/redirect_to_invalid_return_type_test.dart
index c61ac9c..8a754d2 100644
--- a/pkg/analyzer/test/src/diagnostics/redirect_to_invalid_return_type_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/redirect_to_invalid_return_type_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class RedirectToInvalidReturnTypeTest extends DriverResolutionTest {
+class RedirectToInvalidReturnTypeTest extends PubPackageResolutionTest {
   test_redirectToInvalidReturnType() async {
     await assertErrorsInCode('''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/redirect_to_missing_constructor_test.dart b/pkg/analyzer/test/src/diagnostics/redirect_to_missing_constructor_test.dart
index e181529..058f1cc 100644
--- a/pkg/analyzer/test/src/diagnostics/redirect_to_missing_constructor_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/redirect_to_missing_constructor_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class RedirectToMissingConstructorTest extends DriverResolutionTest {
+class RedirectToMissingConstructorTest extends PubPackageResolutionTest {
   test_named() async {
     await assertErrorsInCode('''
 class A implements B{
diff --git a/pkg/analyzer/test/src/diagnostics/redirect_to_non_class_test.dart b/pkg/analyzer/test/src/diagnostics/redirect_to_non_class_test.dart
index f087599..c7610f1c 100644
--- a/pkg/analyzer/test/src/diagnostics/redirect_to_non_class_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/redirect_to_non_class_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class RedirectToNonClassTest extends DriverResolutionTest {
+class RedirectToNonClassTest extends PubPackageResolutionTest {
   test_notAType() async {
     await assertErrorsInCode('''
 class B {
diff --git a/pkg/analyzer/test/src/diagnostics/redirect_to_non_const_constructor_test.dart b/pkg/analyzer/test/src/diagnostics/redirect_to_non_const_constructor_test.dart
index 3b40aec..d5cb09a 100644
--- a/pkg/analyzer/test/src/diagnostics/redirect_to_non_const_constructor_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/redirect_to_non_const_constructor_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class RedirectToNonConstConstructorTest extends DriverResolutionTest {
+class RedirectToNonConstConstructorTest extends PubPackageResolutionTest {
   test_constRedirector_cannotResolveRedirectee() async {
     // No crash when redirectee cannot be resolved.
     await assertErrorsInCode(r'''
diff --git a/pkg/analyzer/test/src/diagnostics/referenced_before_declaration_test.dart b/pkg/analyzer/test/src/diagnostics/referenced_before_declaration_test.dart
index a3abb89..cdcd43d 100644
--- a/pkg/analyzer/test/src/diagnostics/referenced_before_declaration_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/referenced_before_declaration_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class ReferencedBeforeDeclarationTest extends DriverResolutionTest {
+class ReferencedBeforeDeclarationTest extends PubPackageResolutionTest {
   test_cascade_after_declaration() async {
     await assertNoErrorsInCode(r'''
 testRequestHandler() {}
@@ -51,7 +51,7 @@
 print(x) {}
 ''', [
       error(CompileTimeErrorCode.REFERENCED_BEFORE_DECLARATION, 28, 1,
-          contextMessages: [message('/test/lib/test.dart', 34, 1)]),
+          contextMessages: [message('$testPackageLibPath/test.dart', 34, 1)]),
     ]);
   }
 
@@ -65,7 +65,7 @@
 print(x) {}
 ''', [
       error(CompileTimeErrorCode.REFERENCED_BEFORE_DECLARATION, 28, 1,
-          contextMessages: [message('/test/lib/test.dart', 38, 1)]),
+          contextMessages: [message('$testPackageLibPath/test.dart', 38, 1)]),
     ]);
   }
 
@@ -81,7 +81,7 @@
 print(x) {}
 ''', [
       error(CompileTimeErrorCode.REFERENCED_BEFORE_DECLARATION, 34, 1,
-          contextMessages: [message('/test/lib/test.dart', 48, 1)]),
+          contextMessages: [message('$testPackageLibPath/test.dart', 48, 1)]),
     ]);
   }
 
@@ -98,7 +98,7 @@
 }
 ''', [
       error(CompileTimeErrorCode.REFERENCED_BEFORE_DECLARATION, 61, 1,
-          contextMessages: [message('/test/lib/test.dart', 75, 1)]),
+          contextMessages: [message('$testPackageLibPath/test.dart', 75, 1)]),
     ]);
 
     assertElement(findNode.simple('v;'), findElement.localFunction('v'));
@@ -117,7 +117,7 @@
 }
 ''', [
       error(CompileTimeErrorCode.REFERENCED_BEFORE_DECLARATION, 61, 1,
-          contextMessages: [message('/test/lib/test.dart', 74, 1)]),
+          contextMessages: [message('$testPackageLibPath/test.dart', 74, 1)]),
     ]);
 
     assertElement(findNode.simple('v;'), findElement.localVar('v'));
@@ -136,7 +136,7 @@
 }
 ''', [
       error(CompileTimeErrorCode.REFERENCED_BEFORE_DECLARATION, 62, 1,
-          contextMessages: [message('/test/lib/test.dart', 76, 1)]),
+          contextMessages: [message('$testPackageLibPath/test.dart', 76, 1)]),
     ]);
 
     assertElement(findNode.simple('v;'), findElement.localFunction('v'));
@@ -155,7 +155,7 @@
 }
 ''', [
       error(CompileTimeErrorCode.REFERENCED_BEFORE_DECLARATION, 62, 1,
-          contextMessages: [message('/test/lib/test.dart', 75, 1)]),
+          contextMessages: [message('$testPackageLibPath/test.dart', 75, 1)]),
     ]);
 
     assertElement(findNode.simple('v;'), findElement.localVar('v'));
@@ -168,7 +168,7 @@
 }
 ''', [
       error(CompileTimeErrorCode.REFERENCED_BEFORE_DECLARATION, 25, 1,
-          contextMessages: [message('/test/lib/test.dart', 15, 1)]),
+          contextMessages: [message('$testPackageLibPath/test.dart', 15, 1)]),
     ]);
   }
 
@@ -179,7 +179,7 @@
 }
 ''', [
       error(CompileTimeErrorCode.REFERENCED_BEFORE_DECLARATION, 19, 1,
-          contextMessages: [message('/test/lib/test.dart', 15, 1)]),
+          contextMessages: [message('$testPackageLibPath/test.dart', 15, 1)]),
     ]);
   }
 
@@ -216,7 +216,7 @@
 }
 ''', [
       error(CompileTimeErrorCode.REFERENCED_BEFORE_DECLARATION, 23, 6,
-          contextMessages: [message('/test/lib/test.dart', 44, 6)]),
+          contextMessages: [message('$testPackageLibPath/test.dart', 44, 6)]),
     ]);
   }
 
@@ -229,7 +229,7 @@
 }
 ''', [
       error(CompileTimeErrorCode.REFERENCED_BEFORE_DECLARATION, 23, 6,
-          contextMessages: [message('/test/lib/test.dart', 44, 6)]),
+          contextMessages: [message('$testPackageLibPath/test.dart', 44, 6)]),
     ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/rethrow_outside_catch_test.dart b/pkg/analyzer/test/src/diagnostics/rethrow_outside_catch_test.dart
index a42d2d6..ee8c262 100644
--- a/pkg/analyzer/test/src/diagnostics/rethrow_outside_catch_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/rethrow_outside_catch_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class RethrowOutsideCatchTest extends DriverResolutionTest {
+class RethrowOutsideCatchTest extends PubPackageResolutionTest {
   test_insideCatch() async {
     await assertNoErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/return_in_generative_constructor_test.dart b/pkg/analyzer/test/src/diagnostics/return_in_generative_constructor_test.dart
index 9b0d9de..55ee4b1 100644
--- a/pkg/analyzer/test/src/diagnostics/return_in_generative_constructor_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/return_in_generative_constructor_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class ReturnInGenerativeConstructorTest extends DriverResolutionTest {
+class ReturnInGenerativeConstructorTest extends PubPackageResolutionTest {
   test_blockBody() async {
     await assertErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/return_in_generator_test.dart b/pkg/analyzer/test/src/diagnostics/return_in_generator_test.dart
index 5cfd8b3..bdc49f3 100644
--- a/pkg/analyzer/test/src/diagnostics/return_in_generator_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/return_in_generator_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class ReturnInGeneratorTest extends DriverResolutionTest {
+class ReturnInGeneratorTest extends PubPackageResolutionTest {
   test_async() async {
     await assertNoErrorsInCode(r'''
 f() async {
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 cc19734..986bd56 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
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,7 +15,7 @@
 }
 
 @reflectiveTest
-class ReturnOfInvalidTypeTest extends DriverResolutionTest {
+class ReturnOfInvalidTypeTest extends PubPackageResolutionTest {
   test_closure() async {
     await assertErrorsInCode('''
 typedef Td = int Function();
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 93bed68..6d33a0d 100644
--- a/pkg/analyzer/test/src/diagnostics/return_without_value_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/return_without_value_test.dart
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,7 +15,7 @@
 }
 
 @reflectiveTest
-class ReturnWithoutValueTest extends DriverResolutionTest {
+class ReturnWithoutValueTest extends PubPackageResolutionTest {
   test_async_futureInt() async {
     await assertErrorsInCode('''
 Future<int> f() async {
diff --git a/pkg/analyzer/test/src/diagnostics/set_element_from_deferred_library_test.dart b/pkg/analyzer/test/src/diagnostics/set_element_from_deferred_library_test.dart
index daa180b..c5af2c7 100644
--- a/pkg/analyzer/test/src/diagnostics/set_element_from_deferred_library_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/set_element_from_deferred_library_test.dart
@@ -8,7 +8,7 @@
 import 'package:analyzer/src/generated/engine.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -18,11 +18,11 @@
 }
 
 @reflectiveTest
-class SetElementFromDeferredLibraryTest extends DriverResolutionTest {
+class SetElementFromDeferredLibraryTest extends PubPackageResolutionTest {
   @failingTest
   test_const_ifElement_thenTrue_elseDeferred() async {
     // reports wrong error code
-    newFile(convertPath('/test/lib/lib1.dart'), content: r'''
+    newFile(convertPath('$testPackageLibPath/lib1.dart'), content: r'''
 const int c = 1;''');
     await assertErrorsInCode(r'''
 import 'lib1.dart' deferred as a;
@@ -34,7 +34,7 @@
   }
 
   test_const_ifElement_thenTrue_thenDeferred() async {
-    newFile(convertPath('/test/lib/lib1.dart'), content: r'''
+    newFile(convertPath('$testPackageLibPath/lib1.dart'), content: r'''
 const int c = 1;''');
     await assertErrorsInCode(
         r'''
@@ -53,7 +53,7 @@
   }
 
   test_const_topLevel_deferred() async {
-    newFile(convertPath('/test/lib/lib1.dart'), content: r'''
+    newFile(convertPath('$testPackageLibPath/lib1.dart'), content: r'''
 const int c = 1;''');
     await assertErrorsInCode(r'''
 import 'lib1.dart' deferred as a;
@@ -64,7 +64,7 @@
   }
 
   test_const_topLevel_deferred_nested() async {
-    newFile(convertPath('/test/lib/lib1.dart'), content: r'''
+    newFile(convertPath('$testPackageLibPath/lib1.dart'), content: r'''
 const int c = 1;''');
     await assertErrorsInCode(r'''
 import 'lib1.dart' deferred as a;
diff --git a/pkg/analyzer/test/src/diagnostics/set_element_type_not_assignable_test.dart b/pkg/analyzer/test/src/diagnostics/set_element_type_not_assignable_test.dart
index 08957ff..6fcc0ed 100644
--- a/pkg/analyzer/test/src/diagnostics/set_element_type_not_assignable_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/set_element_type_not_assignable_test.dart
@@ -8,7 +8,7 @@
 import 'package:analyzer/src/generated/engine.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -18,7 +18,7 @@
 }
 
 @reflectiveTest
-class SetElementTypeNotAssignableTest extends DriverResolutionTest {
+class SetElementTypeNotAssignableTest extends PubPackageResolutionTest {
   test_const_ifElement_thenElseFalse_intInt() async {
     await assertErrorsInCode(
         '''
diff --git a/pkg/analyzer/test/src/diagnostics/shared_deferred_prefix_test.dart b/pkg/analyzer/test/src/diagnostics/shared_deferred_prefix_test.dart
index fc41cc6..9574bc5 100644
--- a/pkg/analyzer/test/src/diagnostics/shared_deferred_prefix_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/shared_deferred_prefix_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,13 +14,13 @@
 }
 
 @reflectiveTest
-class SharedDeferredPrefixTest extends DriverResolutionTest {
+class SharedDeferredPrefixTest extends PubPackageResolutionTest {
   test_hasSharedDeferredPrefix() async {
-    newFile('/test/lib/lib1.dart', content: '''
+    newFile('$testPackageLibPath/lib1.dart', content: '''
 library lib1;
 f1() {}
 ''');
-    newFile('/test/lib/lib2.dart', content: '''
+    newFile('$testPackageLibPath/lib2.dart', content: '''
 library lib2;
 f2() {}
 ''');
diff --git a/pkg/analyzer/test/src/diagnostics/spread_expression_from_deferred_library_test.dart b/pkg/analyzer/test/src/diagnostics/spread_expression_from_deferred_library_test.dart
index 3f20714..d62d6ba 100644
--- a/pkg/analyzer/test/src/diagnostics/spread_expression_from_deferred_library_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/spread_expression_from_deferred_library_test.dart
@@ -8,7 +8,7 @@
 import 'package:analyzer/src/generated/engine.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -18,9 +18,9 @@
 }
 
 @reflectiveTest
-class SpreadExpressionFromDeferredLibraryTest extends DriverResolutionTest {
+class SpreadExpressionFromDeferredLibraryTest extends PubPackageResolutionTest {
   test_inList_deferred() async {
-    newFile(convertPath('/test/lib/lib1.dart'), content: r'''
+    newFile(convertPath('$testPackageLibPath/lib1.dart'), content: r'''
 const List c = [];''');
     await assertErrorsInCode(
         r'''
@@ -42,7 +42,7 @@
   }
 
   test_inList_deferred_notConst() async {
-    newFile(convertPath('/test/lib/lib1.dart'), content: r'''
+    newFile(convertPath('$testPackageLibPath/lib1.dart'), content: r'''
 const List c = [];''');
     await assertNoErrorsInCode(r'''
 import 'lib1.dart' deferred as a;
@@ -52,7 +52,7 @@
   }
 
   test_inList_notDeferred() async {
-    newFile(convertPath('/test/lib/lib1.dart'), content: r'''
+    newFile(convertPath('$testPackageLibPath/lib1.dart'), content: r'''
 const List c = [];''');
     await assertErrorsInCode(
         r'''
@@ -68,7 +68,7 @@
   }
 
   test_inMap_deferred() async {
-    newFile(convertPath('/test/lib/lib1.dart'), content: r'''
+    newFile(convertPath('$testPackageLibPath/lib1.dart'), content: r'''
 const Map c = <int, int>{};''');
     await assertErrorsInCode(
         r'''
@@ -90,7 +90,7 @@
   }
 
   test_inMap_notConst() async {
-    newFile(convertPath('/test/lib/lib1.dart'), content: r'''
+    newFile(convertPath('$testPackageLibPath/lib1.dart'), content: r'''
 const Map c = <int, int>{};''');
     await assertNoErrorsInCode(r'''
 import 'lib1.dart' deferred as a;
@@ -100,7 +100,7 @@
   }
 
   test_inMap_notDeferred() async {
-    newFile(convertPath('/test/lib/lib1.dart'), content: r'''
+    newFile(convertPath('$testPackageLibPath/lib1.dart'), content: r'''
 const Map c = <int, int>{};''');
     await assertErrorsInCode(
         r'''
@@ -116,7 +116,7 @@
   }
 
   test_inSet_deferred() async {
-    newFile(convertPath('/test/lib/lib1.dart'), content: r'''
+    newFile(convertPath('$testPackageLibPath/lib1.dart'), content: r'''
 const Set c = <int>{};''');
     await assertErrorsInCode(
         r'''
@@ -138,7 +138,7 @@
   }
 
   test_inSet_notConst() async {
-    newFile(convertPath('/test/lib/lib1.dart'), content: r'''
+    newFile(convertPath('$testPackageLibPath/lib1.dart'), content: r'''
 const Set c = <int>{};''');
     await assertNoErrorsInCode(r'''
 import 'lib1.dart' deferred as a;
@@ -148,7 +148,7 @@
   }
 
   test_inSet_notDeferred() async {
-    newFile(convertPath('/test/lib/lib1.dart'), content: r'''
+    newFile(convertPath('$testPackageLibPath/lib1.dart'), content: r'''
 const Set c = <int>{};''');
     await assertErrorsInCode(
         r'''
diff --git a/pkg/analyzer/test/src/diagnostics/static_access_to_instance_member_test.dart b/pkg/analyzer/test/src/diagnostics/static_access_to_instance_member_test.dart
index 2e14499..3ae9041 100644
--- a/pkg/analyzer/test/src/diagnostics/static_access_to_instance_member_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/static_access_to_instance_member_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class StaticAccessToInstanceMemberTest extends DriverResolutionTest {
+class StaticAccessToInstanceMemberTest extends PubPackageResolutionTest {
   test_annotation() async {
     await assertNoErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/strict_raw_type_test.dart b/pkg/analyzer/test/src/diagnostics/strict_raw_type_test.dart
index ed4670e..238ed5a 100644
--- a/pkg/analyzer/test/src/diagnostics/strict_raw_type_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/strict_raw_type_test.dart
@@ -3,11 +3,9 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/src/error/codes.dart';
-import 'package:analyzer/src/generated/engine.dart';
-import 'package:analyzer/src/test_utilities/package_mixin.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,10 +14,16 @@
 }
 
 @reflectiveTest
-class StrictRawTypeTest extends DriverResolutionTest with PackageMixin {
+class StrictRawTypeTest extends PubPackageResolutionTest {
   @override
-  AnalysisOptionsImpl get analysisOptions =>
-      AnalysisOptionsImpl()..strictRawTypes = true;
+  void setUp() {
+    super.setUp();
+    writeTestPackageAnalysisOptionsFile(
+      AnalysisOptionsFileConfig(
+        strictRawTypes: true,
+      ),
+    );
+  }
 
   test_asExpression() async {
     await assertNoErrorsInCode(r'''
@@ -32,7 +36,7 @@
   }
 
   test_functionParts_optionalTypeArg() async {
-    addMetaPackage();
+    writeTestPackageConfigWithMeta();
     await assertNoErrorsInCode(r'''
 import 'package:meta/meta.dart';
 @optionalTypeArgs
@@ -140,7 +144,7 @@
   }
 
   test_topLevelField_optionalTypeArg() async {
-    addMetaPackage();
+    writeTestPackageConfigWithMeta();
     await assertNoErrorsInCode(r'''
 import 'package:meta/meta.dart';
 @optionalTypeArgs
@@ -186,7 +190,7 @@
   }
 
   test_typedef_modern_optionalTypeArgs() async {
-    addMetaPackage();
+    writeTestPackageConfigWithMeta();
     await assertNoErrorsInCode(r'''
 import 'package:meta/meta.dart';
 @optionalTypeArgs
@@ -210,7 +214,7 @@
   }
 
   test_TypeOnClassDeclaration_optionalTypeArgs() async {
-    addMetaPackage();
+    writeTestPackageConfigWithMeta();
     await assertNoErrorsInCode(r'''
 import 'package:meta/meta.dart';
 @optionalTypeArgs
@@ -247,7 +251,7 @@
   }
 
   test_typeOnExtendedType_optionalTypeArgs() async {
-    addMetaPackage();
+    writeTestPackageConfigWithMeta();
     await assertNoErrorsInCode(r'''
 import 'package:meta/meta.dart';
 @optionalTypeArgs
diff --git a/pkg/analyzer/test/src/diagnostics/subtype_of_ffi_class_test.dart b/pkg/analyzer/test/src/diagnostics/subtype_of_ffi_class_test.dart
index 504a6f1..a5aed99 100644
--- a/pkg/analyzer/test/src/diagnostics/subtype_of_ffi_class_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/subtype_of_ffi_class_test.dart
@@ -6,7 +6,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -17,7 +17,7 @@
 }
 
 @reflectiveTest
-class SubtypeOfFfiClassInExtendsTest extends DriverResolutionTest {
+class SubtypeOfFfiClassInExtendsTest extends PubPackageResolutionTest {
   test_Double() async {
     await assertErrorsInCode(r'''
 import 'dart:ffi';
@@ -135,7 +135,7 @@
 }
 
 @reflectiveTest
-class SubtypeOfFfiClassInImplementsTest extends DriverResolutionTest {
+class SubtypeOfFfiClassInImplementsTest extends PubPackageResolutionTest {
   test_Double() async {
     await assertErrorsInCode(r'''
 import 'dart:ffi';
@@ -255,7 +255,7 @@
 }
 
 @reflectiveTest
-class SubtypeOfFfiClassInWithTest extends DriverResolutionTest {
+class SubtypeOfFfiClassInWithTest extends PubPackageResolutionTest {
   test_Double() async {
     await assertErrorsInCode(r'''
 import 'dart:ffi';
diff --git a/pkg/analyzer/test/src/diagnostics/subtype_of_struct_class_test.dart b/pkg/analyzer/test/src/diagnostics/subtype_of_struct_class_test.dart
index 0c5b17e..66f4192 100644
--- a/pkg/analyzer/test/src/diagnostics/subtype_of_struct_class_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/subtype_of_struct_class_test.dart
@@ -6,7 +6,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -17,7 +17,7 @@
 }
 
 @reflectiveTest
-class SubtypeOfStructClassInExtendsTest extends DriverResolutionTest {
+class SubtypeOfStructClassInExtendsTest extends PubPackageResolutionTest {
   test_extends() async {
     await assertErrorsInCode(r'''
 import 'dart:ffi';
@@ -30,7 +30,7 @@
 }
 
 @reflectiveTest
-class SubtypeOfStructClassInImplementsTest extends DriverResolutionTest {
+class SubtypeOfStructClassInImplementsTest extends PubPackageResolutionTest {
   test_implements() async {
     await assertErrorsInCode(r'''
 import 'dart:ffi';
@@ -43,7 +43,7 @@
 }
 
 @reflectiveTest
-class SubtypeOfStructClassInWithTest extends DriverResolutionTest {
+class SubtypeOfStructClassInWithTest extends PubPackageResolutionTest {
   test_with() async {
     await assertErrorsInCode(r'''
 import 'dart:ffi';
diff --git a/pkg/analyzer/test/src/diagnostics/super_in_extension_test.dart b/pkg/analyzer/test/src/diagnostics/super_in_extension_test.dart
index e28a9eb..1e7f624 100644
--- a/pkg/analyzer/test/src/diagnostics/super_in_extension_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/super_in_extension_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class SuperInExtensionTest extends DriverResolutionTest {
+class SuperInExtensionTest extends PubPackageResolutionTest {
   test_binaryOperator_inMethod() async {
     await assertErrorsInCode('''
 extension E on int {
diff --git a/pkg/analyzer/test/src/diagnostics/super_in_invalid_context_test.dart b/pkg/analyzer/test/src/diagnostics/super_in_invalid_context_test.dart
index 561613b..3a326ae 100644
--- a/pkg/analyzer/test/src/diagnostics/super_in_invalid_context_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/super_in_invalid_context_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class SuperInInvalidContextTest extends DriverResolutionTest {
+class SuperInInvalidContextTest extends PubPackageResolutionTest {
   test_binaryExpression() async {
     await assertErrorsInCode('''
 var v = super + 0;
diff --git a/pkg/analyzer/test/src/diagnostics/super_in_redirecting_constructor_test.dart b/pkg/analyzer/test/src/diagnostics/super_in_redirecting_constructor_test.dart
index 98b93d9..cbd6cdd 100644
--- a/pkg/analyzer/test/src/diagnostics/super_in_redirecting_constructor_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/super_in_redirecting_constructor_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class SuperInRedirectingConstructorTest extends DriverResolutionTest {
+class SuperInRedirectingConstructorTest extends PubPackageResolutionTest {
   test_redirectionSuper() async {
     await assertErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/super_initializer_in_object_test.dart b/pkg/analyzer/test/src/diagnostics/super_initializer_in_object_test.dart
index c5e11c2..171e542 100644
--- a/pkg/analyzer/test/src/diagnostics/super_initializer_in_object_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/super_initializer_in_object_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class SuperInitializerInObjectTest extends DriverResolutionTest {
+class SuperInitializerInObjectTest extends PubPackageResolutionTest {
   @failingTest
   test_superInitializerInObject() async {
     await assertErrorsInCode(r'''
diff --git a/pkg/analyzer/test/src/diagnostics/switch_case_completes_normally_test.dart b/pkg/analyzer/test/src/diagnostics/switch_case_completes_normally_test.dart
index 6209d99..cdde582 100644
--- a/pkg/analyzer/test/src/diagnostics/switch_case_completes_normally_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/switch_case_completes_normally_test.dart
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +14,7 @@
 }
 
 @reflectiveTest
-class SwitchCaseCompletesNormallyTest extends DriverResolutionTest
+class SwitchCaseCompletesNormallyTest extends PubPackageResolutionTest
     with WithNullSafetyMixin {
   test_break() async {
     await assertNoErrorsInCode(r'''
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 0e9f2b5..60f0a17 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
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class SwitchExpressionNotAssignableTest extends DriverResolutionTest {
+class SwitchExpressionNotAssignableTest extends PubPackageResolutionTest {
   test_simple() async {
     await assertErrorsInCode('''
 f(int p) {
diff --git a/pkg/analyzer/test/src/diagnostics/throw_of_invalid_type_test.dart b/pkg/analyzer/test/src/diagnostics/throw_of_invalid_type_test.dart
index 388aa99..d1ec82c 100644
--- a/pkg/analyzer/test/src/diagnostics/throw_of_invalid_type_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/throw_of_invalid_type_test.dart
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +14,7 @@
 }
 
 @reflectiveTest
-class ThrowOfInvalidTypeTest extends DriverResolutionTest
+class ThrowOfInvalidTypeTest extends PubPackageResolutionTest
     with WithNullSafetyMixin {
   test_dynamic() async {
     await assertNoErrorsInCode('''
@@ -26,7 +25,7 @@
   }
 
   test_legacy() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 // @dart = 2.7
 int a = 0;
 ''');
diff --git a/pkg/analyzer/test/src/diagnostics/todo_test.dart b/pkg/analyzer/test/src/diagnostics/todo_test.dart
index 03ed766..1a540df 100644
--- a/pkg/analyzer/test/src/diagnostics/todo_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/todo_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class TodoTest extends DriverResolutionTest {
+class TodoTest extends PubPackageResolutionTest {
   test_todo_multiLineComment() async {
     await assertErrorsInCode(r'''
 main() {
diff --git a/pkg/analyzer/test/src/diagnostics/top_level_cycle_test.dart b/pkg/analyzer/test/src/diagnostics/top_level_cycle_test.dart
index e0732c8..0f72b33 100644
--- a/pkg/analyzer/test/src/diagnostics/top_level_cycle_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/top_level_cycle_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class TopLevelCycleTest extends DriverResolutionTest {
+class TopLevelCycleTest extends PubPackageResolutionTest {
   test_cycle() async {
     await assertErrorsInCode(r'''
 var x = y + 1;
diff --git a/pkg/analyzer/test/src/diagnostics/top_level_instance_getter_test.dart b/pkg/analyzer/test/src/diagnostics/top_level_instance_getter_test.dart
index 6eae0be..185c80f 100644
--- a/pkg/analyzer/test/src/diagnostics/top_level_instance_getter_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/top_level_instance_getter_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class TopLevelInstanceGetterTest extends DriverResolutionTest {
+class TopLevelInstanceGetterTest extends PubPackageResolutionTest {
   test_call() async {
     await assertNoErrorsInCode('''
 class A {
@@ -48,7 +48,7 @@
   }
 
   test_field_imported() async {
-    newFile('/test/lib/a.dart', content: '''
+    newFile('$testPackageLibPath/a.dart', content: '''
 class A {
   int f;
 }
@@ -322,7 +322,7 @@
   test_implicitlyTyped_new_explicit_type_params_prefixed() async {
     // The reference to a.x does not trigger TOP_LEVEL_INSTANCE_GETTER because
     // it can't possibly affect the type of b.
-    newFile('/test/lib/lib1.dart', content: '''
+    newFile('$testPackageLibPath/lib1.dart', content: '''
 class B<T> {
   B(x);
 }
@@ -385,7 +385,7 @@
   }
 
   test_implicitlyTyped_new_not_generic_prefixed() async {
-    newFile('/test/lib/lib1.dart', content: '''
+    newFile('$testPackageLibPath/lib1.dart', content: '''
 class B {
   B(x);
 }
@@ -403,7 +403,7 @@
   }
 
   test_implicitlyTyped_new_prefixed() async {
-    newFile('/test/lib/lib1.dart', content: '''
+    newFile('$testPackageLibPath/lib1.dart', content: '''
 class B<T> {
   B(x);
 }
diff --git a/pkg/analyzer/test/src/diagnostics/top_level_instance_method_test.dart b/pkg/analyzer/test/src/diagnostics/top_level_instance_method_test.dart
index 00a78e1..b71dd5b 100644
--- a/pkg/analyzer/test/src/diagnostics/top_level_instance_method_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/top_level_instance_method_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class TopLevelInstanceMethodTest extends DriverResolutionTest {
+class TopLevelInstanceMethodTest extends PubPackageResolutionTest {
   test_noParameter() async {
     await assertErrorsInCode('''
 class A {
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 873b884..c8b634c 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
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class TypeAliasCannotReferenceItselfTest extends DriverResolutionTest {
+class TypeAliasCannotReferenceItselfTest extends PubPackageResolutionTest {
   test_functionTypedParameter_returnType() async {
     await assertErrorsInCode('''
 typedef A(A b());
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 e1aebac..3f2504ee 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
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,9 +14,9 @@
 }
 
 @reflectiveTest
-class TypeAnnotationDeferredClassTest extends DriverResolutionTest {
+class TypeAnnotationDeferredClassTest extends PubPackageResolutionTest {
   test_asExpression() async {
-    newFile("/test/lib/lib1.dart", content: '''
+    newFile('$testPackageLibPath/lib1.dart', content: '''
 library lib1;
 class A {}''');
     await assertErrorsInCode('''
@@ -30,7 +30,7 @@
   }
 
   test_catchClause() async {
-    newFile("/test/lib/lib1.dart", content: '''
+    newFile('$testPackageLibPath/lib1.dart', content: '''
 library lib1;
 class A {}''');
     await assertErrorsInCode('''
@@ -46,7 +46,7 @@
   }
 
   test_fieldFormalParameter() async {
-    newFile("/test/lib/lib1.dart", content: '''
+    newFile('$testPackageLibPath/lib1.dart', content: '''
 library lib1;
 class A {}''');
     await assertErrorsInCode('''
@@ -61,7 +61,7 @@
   }
 
   test_functionDeclaration_returnType() async {
-    newFile("/test/lib/lib1.dart", content: '''
+    newFile('$testPackageLibPath/lib1.dart', content: '''
 library lib1;
 class A {}''');
     await assertErrorsInCode('''
@@ -73,7 +73,7 @@
   }
 
   test_functionTypedFormalParameter_returnType() async {
-    newFile("/test/lib/lib1.dart", content: '''
+    newFile('$testPackageLibPath/lib1.dart', content: '''
 library lib1;
 class A {}''');
     await assertErrorsInCode('''
@@ -85,7 +85,7 @@
   }
 
   test_isExpression() async {
-    newFile("/test/lib/lib1.dart", content: '''
+    newFile('$testPackageLibPath/lib1.dart', content: '''
 library lib1;
 class A {}''');
     await assertErrorsInCode('''
@@ -100,7 +100,7 @@
   }
 
   test_methodDeclaration_returnType() async {
-    newFile("/test/lib/lib1.dart", content: '''
+    newFile('$testPackageLibPath/lib1.dart', content: '''
 library lib1;
 class A {}''');
     await assertErrorsInCode('''
@@ -114,7 +114,7 @@
   }
 
   test_simpleFormalParameter() async {
-    newFile("/test/lib/lib1.dart", content: '''
+    newFile('$testPackageLibPath/lib1.dart', content: '''
 library lib1;
 class A {}''');
     await assertErrorsInCode('''
@@ -126,7 +126,7 @@
   }
 
   test_typeArgumentList() async {
-    newFile("/test/lib/lib1.dart", content: '''
+    newFile('$testPackageLibPath/lib1.dart', content: '''
 library lib1;
 class A {}''');
     await assertErrorsInCode('''
@@ -139,7 +139,7 @@
   }
 
   test_typeArgumentList2() async {
-    newFile("/test/lib/lib1.dart", content: '''
+    newFile('$testPackageLibPath/lib1.dart', content: '''
 library lib1;
 class A {}''');
     await assertErrorsInCode('''
@@ -153,7 +153,7 @@
   }
 
   test_typeParameter_bound() async {
-    newFile("/test/lib/lib1.dart", content: '''
+    newFile('$testPackageLibPath/lib1.dart', content: '''
 library lib1;
 class A {}''');
     await assertErrorsInCode('''
@@ -165,7 +165,7 @@
   }
 
   test_variableDeclarationList() async {
-    newFile("/test/lib/lib1.dart", content: '''
+    newFile('$testPackageLibPath/lib1.dart', content: '''
 library lib1;
 class A {}''');
     await assertErrorsInCode('''
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 d1daeaf..da813a8 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
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -18,7 +17,7 @@
 }
 
 @reflectiveTest
-class TypeArgumentNotMatchingBoundsTest extends DriverResolutionTest {
+class TypeArgumentNotMatchingBoundsTest extends PubPackageResolutionTest {
   test_classTypeAlias() async {
     await assertErrorsInCode(r'''
 class A {}
@@ -417,7 +416,7 @@
 class TypeArgumentNotMatchingBoundsWithNullSafetyTest
     extends TypeArgumentNotMatchingBoundsTest with WithNullSafetyMixin {
   test_extends_optIn_fromOptOut_Null() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 class A<X extends int> {}
 ''');
 
@@ -430,7 +429,7 @@
   }
 
   test_extends_optIn_fromOptOut_otherTypeParameter() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 void foo<T extends U, U>() {
 }
 ''');
diff --git a/pkg/analyzer/test/src/diagnostics/type_check_is_not_null_test.dart b/pkg/analyzer/test/src/diagnostics/type_check_is_not_null_test.dart
index e5e14a3..9834ad5 100644
--- a/pkg/analyzer/test/src/diagnostics/type_check_is_not_null_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/type_check_is_not_null_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class TypeCheckIsNotNullTest extends DriverResolutionTest {
+class TypeCheckIsNotNullTest extends PubPackageResolutionTest {
   test_not_Null() async {
     await assertErrorsInCode(r'''
 bool m(i) {
diff --git a/pkg/analyzer/test/src/diagnostics/type_check_is_null_test.dart b/pkg/analyzer/test/src/diagnostics/type_check_is_null_test.dart
index 19d804b..4df1afb 100644
--- a/pkg/analyzer/test/src/diagnostics/type_check_is_null_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/type_check_is_null_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class TypeCheckIsNullTest extends DriverResolutionTest {
+class TypeCheckIsNullTest extends PubPackageResolutionTest {
   test_is_Null() async {
     await assertErrorsInCode(r'''
 bool m(i) {
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 a1701e8..96fb733 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
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class TypeParameterReferencedByStaticTest extends DriverResolutionTest {
+class TypeParameterReferencedByStaticTest extends PubPackageResolutionTest {
   test_expression_method() async {
     await assertErrorsInCode('''
 class A<T> {
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 c199feb..54192759 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
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,7 +15,7 @@
 }
 
 @reflectiveTest
-class TypeParameterSupertypeOfItsBoundTest extends DriverResolutionTest {
+class TypeParameterSupertypeOfItsBoundTest extends PubPackageResolutionTest {
   test_1of1() async {
     await assertErrorsInCode(r'''
 class A<T extends T> {
diff --git a/pkg/analyzer/test/src/diagnostics/type_test_with_non_type_test.dart b/pkg/analyzer/test/src/diagnostics/type_test_with_non_type_test.dart
index 97bb854..dc65285 100644
--- a/pkg/analyzer/test/src/diagnostics/type_test_with_non_type_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/type_test_with_non_type_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class TypeTestWithNonTypeTest extends DriverResolutionTest {
+class TypeTestWithNonTypeTest extends PubPackageResolutionTest {
   test_parameter() async {
     await assertErrorsInCode('''
 var A = 0;
diff --git a/pkg/analyzer/test/src/diagnostics/type_test_with_undefined_name_test.dart b/pkg/analyzer/test/src/diagnostics/type_test_with_undefined_name_test.dart
index 0183ea6..ba1fb17 100644
--- a/pkg/analyzer/test/src/diagnostics/type_test_with_undefined_name_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/type_test_with_undefined_name_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class TypeTestWithUndefinedNameTest extends DriverResolutionTest {
+class TypeTestWithUndefinedNameTest extends PubPackageResolutionTest {
   test_undefined() async {
     await assertErrorsInCode('''
 f(var p) {
diff --git a/pkg/analyzer/test/src/diagnostics/undefined_annotation_test.dart b/pkg/analyzer/test/src/diagnostics/undefined_annotation_test.dart
index 8d862d4..779d2d2 100644
--- a/pkg/analyzer/test/src/diagnostics/undefined_annotation_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/undefined_annotation_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class UndefinedAnnotationTest extends DriverResolutionTest {
+class UndefinedAnnotationTest extends PubPackageResolutionTest {
   test_unresolved_identifier() async {
     await assertErrorsInCode(r'''
 @unresolved
diff --git a/pkg/analyzer/test/src/diagnostics/undefined_class_boolean_test.dart b/pkg/analyzer/test/src/diagnostics/undefined_class_boolean_test.dart
index 5940836..58f17ba 100644
--- a/pkg/analyzer/test/src/diagnostics/undefined_class_boolean_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/undefined_class_boolean_test.dart
@@ -6,7 +6,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +15,7 @@
 }
 
 @reflectiveTest
-class UndefinedClassBooleanTest extends DriverResolutionTest {
+class UndefinedClassBooleanTest extends PubPackageResolutionTest {
   test_variableDeclaration() async {
     await assertErrorsInCode('''
 f() { boolean v; }
diff --git a/pkg/analyzer/test/src/diagnostics/undefined_class_test.dart b/pkg/analyzer/test/src/diagnostics/undefined_class_test.dart
index cc2fd47..518e957 100644
--- a/pkg/analyzer/test/src/diagnostics/undefined_class_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/undefined_class_test.dart
@@ -6,7 +6,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +15,7 @@
 }
 
 @reflectiveTest
-class UndefinedClassTest extends DriverResolutionTest {
+class UndefinedClassTest extends PubPackageResolutionTest {
   test_const() async {
     await assertErrorsInCode(r'''
 f() {
diff --git a/pkg/analyzer/test/src/diagnostics/undefined_constructor_in_initializer_default_test.dart b/pkg/analyzer/test/src/diagnostics/undefined_constructor_in_initializer_default_test.dart
index d54d2cf..206da60 100644
--- a/pkg/analyzer/test/src/diagnostics/undefined_constructor_in_initializer_default_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/undefined_constructor_in_initializer_default_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +15,7 @@
 
 @reflectiveTest
 class UndefinedConstructorInInitializerDefaultTest
-    extends DriverResolutionTest {
+    extends PubPackageResolutionTest {
   test_hasOptionalParameters_defined() async {
     await assertNoErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/undefined_constructor_in_initializer_test.dart b/pkg/analyzer/test/src/diagnostics/undefined_constructor_in_initializer_test.dart
index 0a21c5f..b951089 100644
--- a/pkg/analyzer/test/src/diagnostics/undefined_constructor_in_initializer_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/undefined_constructor_in_initializer_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class UndefinedConstructorInInitializerTest extends DriverResolutionTest {
+class UndefinedConstructorInInitializerTest extends PubPackageResolutionTest {
   test_explicit_named() async {
     await assertErrorsInCode(r'''
 class A {}
diff --git a/pkg/analyzer/test/src/diagnostics/undefined_enum_constant_test.dart b/pkg/analyzer/test/src/diagnostics/undefined_enum_constant_test.dart
index 866d3ce..c3e537b 100644
--- a/pkg/analyzer/test/src/diagnostics/undefined_enum_constant_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/undefined_enum_constant_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class UndefinedEnumConstantTest extends DriverResolutionTest {
+class UndefinedEnumConstantTest extends PubPackageResolutionTest {
   test_defined() async {
     await assertNoErrorsInCode(r'''
 enum E { ONE }
diff --git a/pkg/analyzer/test/src/diagnostics/undefined_extension_getter_test.dart b/pkg/analyzer/test/src/diagnostics/undefined_extension_getter_test.dart
index b6a5b55..7e44f91 100644
--- a/pkg/analyzer/test/src/diagnostics/undefined_extension_getter_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/undefined_extension_getter_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class UndefinedExtensionGetterTest extends DriverResolutionTest {
+class UndefinedExtensionGetterTest extends PubPackageResolutionTest {
   test_override_defined() async {
     await assertNoErrorsInCode('''
 extension E on String {
diff --git a/pkg/analyzer/test/src/diagnostics/undefined_extension_method_test.dart b/pkg/analyzer/test/src/diagnostics/undefined_extension_method_test.dart
index 24a6445..07b1785 100644
--- a/pkg/analyzer/test/src/diagnostics/undefined_extension_method_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/undefined_extension_method_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class UndefinedExtensionMethodTest extends DriverResolutionTest {
+class UndefinedExtensionMethodTest extends PubPackageResolutionTest {
   test_method_defined() async {
     await assertNoErrorsInCode('''
 extension E on String {
diff --git a/pkg/analyzer/test/src/diagnostics/undefined_extension_operator_test.dart b/pkg/analyzer/test/src/diagnostics/undefined_extension_operator_test.dart
index b03a1f1..4859442 100644
--- a/pkg/analyzer/test/src/diagnostics/undefined_extension_operator_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/undefined_extension_operator_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class UndefinedExtensionOperatorTest extends DriverResolutionTest {
+class UndefinedExtensionOperatorTest extends PubPackageResolutionTest {
   test_binary_defined() async {
     await assertNoErrorsInCode('''
 extension E on String {
diff --git a/pkg/analyzer/test/src/diagnostics/undefined_extension_setter_test.dart b/pkg/analyzer/test/src/diagnostics/undefined_extension_setter_test.dart
index 7b798b7c..551e4cb 100644
--- a/pkg/analyzer/test/src/diagnostics/undefined_extension_setter_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/undefined_extension_setter_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class UndefinedExtensionSetterTest extends DriverResolutionTest {
+class UndefinedExtensionSetterTest extends PubPackageResolutionTest {
   test_override_defined() async {
     await assertNoErrorsInCode('''
 extension E on int {
diff --git a/pkg/analyzer/test/src/diagnostics/undefined_getter_test.dart b/pkg/analyzer/test/src/diagnostics/undefined_getter_test.dart
index 4ba550f..a914c3c 100644
--- a/pkg/analyzer/test/src/diagnostics/undefined_getter_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/undefined_getter_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class UndefinedGetterTest extends DriverResolutionTest {
+class UndefinedGetterTest extends PubPackageResolutionTest {
   test_compoundAssignment_hasSetter_instance() async {
     await assertErrorsInCode('''
 class C {
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 8de5d0b..57fbdfc 100644
--- a/pkg/analyzer/test/src/diagnostics/undefined_hidden_name_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/undefined_hidden_name_test.dart
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,9 +15,9 @@
 }
 
 @reflectiveTest
-class UndefinedHiddenNameTest extends DriverResolutionTest {
+class UndefinedHiddenNameTest extends PubPackageResolutionTest {
   test_export() async {
-    newFile('/test/lib/lib1.dart');
+    newFile('$testPackageLibPath/lib1.dart');
     await assertErrorsInCode(r'''
 export 'lib1.dart' hide a;
 ''', [
@@ -27,7 +26,7 @@
   }
 
   test_import() async {
-    newFile('/test/lib/lib1.dart');
+    newFile('$testPackageLibPath/lib1.dart');
     await assertErrorsInCode(r'''
 import 'lib1.dart' hide a;
 ''', [
diff --git a/pkg/analyzer/test/src/diagnostics/undefined_identifier_await_test.dart b/pkg/analyzer/test/src/diagnostics/undefined_identifier_await_test.dart
index 088d627..2610fc5 100644
--- a/pkg/analyzer/test/src/diagnostics/undefined_identifier_await_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/undefined_identifier_await_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class UndefinedIdentifierAwaitTest extends DriverResolutionTest {
+class UndefinedIdentifierAwaitTest extends PubPackageResolutionTest {
   test_function() async {
     await assertErrorsInCode('''
 void a() { await; }
diff --git a/pkg/analyzer/test/src/diagnostics/undefined_identifier_test.dart b/pkg/analyzer/test/src/diagnostics/undefined_identifier_test.dart
index 26a8915..06400e6 100644
--- a/pkg/analyzer/test/src/diagnostics/undefined_identifier_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/undefined_identifier_test.dart
@@ -6,8 +6,7 @@
 import 'package:analyzer/src/generated/parser.dart' show ParserErrorCode;
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -17,7 +16,7 @@
 }
 
 @reflectiveTest
-class UndefinedIdentifierTest extends DriverResolutionTest {
+class UndefinedIdentifierTest extends PubPackageResolutionTest {
   @failingTest
   test_commentReference() async {
     await assertErrorsInCode('''
@@ -116,7 +115,7 @@
   }
 
   test_private_getter() async {
-    newFile("/test/lib/lib.dart", content: '''
+    newFile('$testPackageLibPath/lib.dart', content: '''
 library lib;
 class A {
   var _foo;
@@ -134,7 +133,7 @@
   }
 
   test_private_setter() async {
-    newFile("/test/lib/lib.dart", content: '''
+    newFile('$testPackageLibPath/lib.dart', content: '''
 library lib;
 class A {
   var _foo;
diff --git a/pkg/analyzer/test/src/diagnostics/undefined_method_test.dart b/pkg/analyzer/test/src/diagnostics/undefined_method_test.dart
index c99c251..8767c86 100644
--- a/pkg/analyzer/test/src/diagnostics/undefined_method_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/undefined_method_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class UndefinedMethodTest extends DriverResolutionTest {
+class UndefinedMethodTest extends PubPackageResolutionTest {
   test_constructor_defined() async {
     await assertNoErrorsInCode(r'''
 class C {
@@ -25,7 +25,7 @@
   }
 
   test_definedInPrivateExtension() async {
-    newFile('/test/lib/lib.dart', content: '''
+    newFile('$testPackageLibPath/lib.dart', content: '''
 class B {}
 
 extension _ on B {
@@ -44,7 +44,7 @@
   }
 
   test_definedInUnnamedExtension() async {
-    newFile('/test/lib/lib.dart', content: '''
+    newFile('$testPackageLibPath/lib.dart', content: '''
 class C {}
 
 extension on C {
diff --git a/pkg/analyzer/test/src/diagnostics/undefined_named_parameter_test.dart b/pkg/analyzer/test/src/diagnostics/undefined_named_parameter_test.dart
index a03bbb2..96bbf01 100644
--- a/pkg/analyzer/test/src/diagnostics/undefined_named_parameter_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/undefined_named_parameter_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class UndefinedNamedParameterTest extends DriverResolutionTest {
+class UndefinedNamedParameterTest extends PubPackageResolutionTest {
   test_constConstructor() async {
     await assertErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/undefined_operator_test.dart b/pkg/analyzer/test/src/diagnostics/undefined_operator_test.dart
index b52b9dd..45bc660 100644
--- a/pkg/analyzer/test/src/diagnostics/undefined_operator_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/undefined_operator_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class UndefinedOperatorTest extends DriverResolutionTest {
+class UndefinedOperatorTest extends PubPackageResolutionTest {
   test_assignmentExpression_undefined() async {
     await assertErrorsInCode(r'''
 class A {}
diff --git a/pkg/analyzer/test/src/diagnostics/undefined_prefixed_name_test.dart b/pkg/analyzer/test/src/diagnostics/undefined_prefixed_name_test.dart
index 0dbe857..87cafbf 100644
--- a/pkg/analyzer/test/src/diagnostics/undefined_prefixed_name_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/undefined_prefixed_name_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,9 +14,9 @@
 }
 
 @reflectiveTest
-class UndefinedPrefixedNameTest extends DriverResolutionTest {
+class UndefinedPrefixedNameTest extends PubPackageResolutionTest {
   test_getterContext() async {
-    newFile('/test/lib/lib.dart');
+    newFile('$testPackageLibPath/lib.dart');
     await assertErrorsInCode('''
 import 'lib.dart' as p;
 f() => p.c;
@@ -26,7 +26,7 @@
   }
 
   test_setterContext() async {
-    newFile('/test/lib/lib.dart');
+    newFile('$testPackageLibPath/lib.dart');
     await assertErrorsInCode('''
 import 'lib.dart' as p;
 f() {
diff --git a/pkg/analyzer/test/src/diagnostics/undefined_setter_test.dart b/pkg/analyzer/test/src/diagnostics/undefined_setter_test.dart
index 72afe6f..d0d2315 100644
--- a/pkg/analyzer/test/src/diagnostics/undefined_setter_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/undefined_setter_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,9 +14,9 @@
 }
 
 @reflectiveTest
-class UndefinedSetterTest extends DriverResolutionTest {
+class UndefinedSetterTest extends PubPackageResolutionTest {
   test_importWithPrefix_defined() async {
-    newFile("/test/lib/lib.dart", content: r'''
+    newFile('$testPackageLibPath/lib.dart', content: r'''
 library lib;
 set y(int value) {}''');
     await assertNoErrorsInCode(r'''
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 0c57c5d..4fba9ed 100644
--- a/pkg/analyzer/test/src/diagnostics/undefined_shown_name_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/undefined_shown_name_test.dart
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,9 +15,9 @@
 }
 
 @reflectiveTest
-class UndefinedShownNameTest extends DriverResolutionTest {
+class UndefinedShownNameTest extends PubPackageResolutionTest {
   test_export() async {
-    newFile('/test/lib/lib1.dart');
+    newFile('$testPackageLibPath/lib1.dart');
     await assertErrorsInCode(r'''
 export 'lib1.dart' show a;
 ''', [
@@ -27,7 +26,7 @@
   }
 
   test_import() async {
-    newFile('/test/lib/lib1.dart');
+    newFile('$testPackageLibPath/lib1.dart');
     await assertErrorsInCode(r'''
 import 'lib1.dart' show a;
 ''', [
diff --git a/pkg/analyzer/test/src/diagnostics/unnecessary_cast_test.dart b/pkg/analyzer/test/src/diagnostics/unnecessary_cast_test.dart
index 2ca0bb1..d927ad5 100644
--- a/pkg/analyzer/test/src/diagnostics/unnecessary_cast_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/unnecessary_cast_test.dart
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,7 +15,7 @@
 }
 
 @reflectiveTest
-class UnnecessaryCastTest extends DriverResolutionTest {
+class UnnecessaryCastTest extends PubPackageResolutionTest {
   test_conditionalExpression_changesResultType_left() async {
     await assertNoErrorsInCode(r'''
 class A {}
@@ -219,7 +218,7 @@
 class UnnecessaryCastTestWithNullSafety extends UnnecessaryCastTest
     with WithNullSafetyMixin {
   test_interfaceType_star_toNone() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 // @dart = 2.7
 int a = 0;
 ''');
@@ -237,7 +236,7 @@
   }
 
   test_interfaceType_star_toQuestion() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 // @dart = 2.7
 int a = 0;
 ''');
diff --git a/pkg/analyzer/test/src/diagnostics/unnecessary_no_such_method_test.dart b/pkg/analyzer/test/src/diagnostics/unnecessary_no_such_method_test.dart
index d443e12..705ab75 100644
--- a/pkg/analyzer/test/src/diagnostics/unnecessary_no_such_method_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/unnecessary_no_such_method_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/dart/error/hint_codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class UnnecessaryNoSuchMethodTest extends DriverResolutionTest {
+class UnnecessaryNoSuchMethodTest extends PubPackageResolutionTest {
   test_blockBody() async {
     await assertErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/unnecessary_non_null_assertion_test.dart b/pkg/analyzer/test/src/diagnostics/unnecessary_non_null_assertion_test.dart
index 715f033..a72ca9d 100644
--- a/pkg/analyzer/test/src/diagnostics/unnecessary_non_null_assertion_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/unnecessary_non_null_assertion_test.dart
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,10 +14,10 @@
 }
 
 @reflectiveTest
-class UnnecessaryNonNullAssertionTest extends DriverResolutionTest
+class UnnecessaryNonNullAssertionTest extends PubPackageResolutionTest
     with WithNullSafetyMixin {
   test_legacy() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 // @dart = 2.5
 var x = 0;
 ''');
diff --git a/pkg/analyzer/test/src/diagnostics/unnecessary_null_comparison_test.dart b/pkg/analyzer/test/src/diagnostics/unnecessary_null_comparison_test.dart
index a7b5d7c..e48a345 100644
--- a/pkg/analyzer/test/src/diagnostics/unnecessary_null_comparison_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/unnecessary_null_comparison_test.dart
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,7 +15,7 @@
 }
 
 @reflectiveTest
-class UnnecessaryNullComparisonFalseTest extends DriverResolutionTest
+class UnnecessaryNullComparisonFalseTest extends PubPackageResolutionTest
     with WithNullSafetyMixin {
   test_equal_intLiteral() async {
     await assertNoErrorsInCode('''
@@ -30,7 +29,7 @@
   }
 
   test_equal_legacy() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 // @dart = 2.5
 var a = 0;
 ''');
@@ -78,7 +77,7 @@
 }
 
 @reflectiveTest
-class UnnecessaryNullComparisonTrueTest extends DriverResolutionTest
+class UnnecessaryNullComparisonTrueTest extends PubPackageResolutionTest
     with WithNullSafetyMixin {
   test_notEqual_intLiteral() async {
     await assertNoErrorsInCode('''
@@ -92,7 +91,7 @@
   }
 
   test_notEqual_legacy() async {
-    newFile('/test/lib/a.dart', content: r'''
+    newFile('$testPackageLibPath/a.dart', content: r'''
 // @dart = 2.5
 var a = 0;
 ''');
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 8121ec5..4c277a3 100644
--- a/pkg/analyzer/test/src/diagnostics/unnecessary_type_check_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/unnecessary_type_check_test.dart
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/dart/error/hint_codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -18,7 +17,7 @@
 }
 
 @reflectiveTest
-class UnnecessaryTypeCheckFalseTest extends DriverResolutionTest {
+class UnnecessaryTypeCheckFalseTest extends PubPackageResolutionTest {
   test_null_not_Null() async {
     await assertErrorsInCode(r'''
 var b = null is! Null;
@@ -72,7 +71,7 @@
 }
 
 @reflectiveTest
-class UnnecessaryTypeCheckTrueTest extends DriverResolutionTest {
+class UnnecessaryTypeCheckTrueTest extends PubPackageResolutionTest {
   test_null_is_Null() async {
     await assertErrorsInCode(r'''
 var b = null is Null;
diff --git a/pkg/analyzer/test/src/diagnostics/unqualified_reference_to_non_local_static_member_test.dart b/pkg/analyzer/test/src/diagnostics/unqualified_reference_to_non_local_static_member_test.dart
index f142a15..56a6482 100644
--- a/pkg/analyzer/test/src/diagnostics/unqualified_reference_to_non_local_static_member_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/unqualified_reference_to_non_local_static_member_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +15,7 @@
 
 @reflectiveTest
 class UnqualifiedReferenceToNonLocalStaticMemberTest
-    extends DriverResolutionTest {
+    extends PubPackageResolutionTest {
   test_getter() async {
     await assertErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/unqualified_reference_to_static_member_of_extended_type_test.dart b/pkg/analyzer/test/src/diagnostics/unqualified_reference_to_static_member_of_extended_type_test.dart
index 5e5860f..18a9304 100644
--- a/pkg/analyzer/test/src/diagnostics/unqualified_reference_to_static_member_of_extended_type_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/unqualified_reference_to_static_member_of_extended_type_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +15,7 @@
 
 @reflectiveTest
 class UnqualifiedReferenceToStaticMemberOfExtendedTypeTest
-    extends DriverResolutionTest {
+    extends PubPackageResolutionTest {
   test_getter() async {
     await assertErrorsInCode('''
 class MyClass {
diff --git a/pkg/analyzer/test/src/diagnostics/unused_catch_clause_test.dart b/pkg/analyzer/test/src/diagnostics/unused_catch_clause_test.dart
index 9eefe4c..c64c00e 100644
--- a/pkg/analyzer/test/src/diagnostics/unused_catch_clause_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/unused_catch_clause_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/dart/error/hint_codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class UnusedCatchClauseTest extends DriverResolutionTest {
+class UnusedCatchClauseTest extends PubPackageResolutionTest {
   @override
   bool get enableUnusedLocalVariable => true;
 
diff --git a/pkg/analyzer/test/src/diagnostics/unused_catch_stack_test.dart b/pkg/analyzer/test/src/diagnostics/unused_catch_stack_test.dart
index 9ee0541..4a71c72 100644
--- a/pkg/analyzer/test/src/diagnostics/unused_catch_stack_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/unused_catch_stack_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/dart/error/hint_codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class UnusedCatchStackTest extends DriverResolutionTest {
+class UnusedCatchStackTest extends PubPackageResolutionTest {
   @override
   bool get enableUnusedLocalVariable => true;
 
diff --git a/pkg/analyzer/test/src/diagnostics/unused_element_test.dart b/pkg/analyzer/test/src/diagnostics/unused_element_test.dart
index 1033aad..4a1a652 100644
--- a/pkg/analyzer/test/src/diagnostics/unused_element_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/unused_element_test.dart
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/dart/error/hint_codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,7 +15,7 @@
 }
 
 @reflectiveTest
-class UnusedElementTest extends DriverResolutionTest {
+class UnusedElementTest extends PubPackageResolutionTest {
   @override
   bool get enableUnusedElement => true;
 
@@ -1424,7 +1423,7 @@
 }
 
 @reflectiveTest
-class UnusedElementWithNullSafetyTest extends DriverResolutionTest
+class UnusedElementWithNullSafetyTest extends PubPackageResolutionTest
     with WithNullSafetyMixin {
   test_optionalParameter_isUsed_overrideRequiredNamed() async {
     await assertNoErrorsInCode(r'''
diff --git a/pkg/analyzer/test/src/diagnostics/unused_field_test.dart b/pkg/analyzer/test/src/diagnostics/unused_field_test.dart
index 045edd4..e274e91 100644
--- a/pkg/analyzer/test/src/diagnostics/unused_field_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/unused_field_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class UnusedFieldTest extends DriverResolutionTest {
+class UnusedFieldTest extends PubPackageResolutionTest {
   @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 b1a0884..f574819 100644
--- a/pkg/analyzer/test/src/diagnostics/unused_import_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/unused_import_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,9 +14,9 @@
 }
 
 @reflectiveTest
-class UnusedImportTest extends DriverResolutionTest {
+class UnusedImportTest extends PubPackageResolutionTest {
   test_annotationOnDirective() async {
-    newFile('/test/lib/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 class A {
   const A() {}
 }
@@ -28,7 +28,7 @@
   }
 
   test_as() async {
-    newFile('/test/lib/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 class A {}
 ''');
     await assertErrorsInCode(r'''
@@ -42,10 +42,10 @@
 
   test_as_equalPrefixes_referenced() async {
     // 18818
-    newFile('/test/lib/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 class A {}
 ''');
-    newFile('/test/lib/lib2.dart', content: r'''
+    newFile('$testPackageLibPath/lib2.dart', content: r'''
 class B {}
 ''');
     await assertNoErrorsInCode(r'''
@@ -59,10 +59,10 @@
   @failingTest
   test_as_equalPrefixes_unreferenced() async {
     // See todo at ImportsVerifier.prefixElementMap.
-    newFile('/test/lib/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 class A {}
 ''');
-    newFile('/test/lib/lib2.dart', content: r'''
+    newFile('$testPackageLibPath/lib2.dart', content: r'''
 class B {}
 ''');
     await assertErrorsInCode(r'''
@@ -81,11 +81,11 @@
   }
 
   test_export() async {
-    newFile('/test/lib/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 export 'lib2.dart';
 class One {}
 ''');
-    newFile('/test/lib/lib2.dart', content: r'''
+    newFile('$testPackageLibPath/lib2.dart', content: r'''
 class Two {}
 ''');
     await assertNoErrorsInCode(r'''
@@ -95,15 +95,15 @@
   }
 
   test_export2() async {
-    newFile('/test/lib/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 export 'lib2.dart';
 class One {}
 ''');
-    newFile('/test/lib/lib2.dart', content: r'''
+    newFile('$testPackageLibPath/lib2.dart', content: r'''
 export 'lib3.dart';
 class Two {}
 ''');
-    newFile('/test/lib/lib3.dart', content: r'''
+    newFile('$testPackageLibPath/lib3.dart', content: r'''
 class Three {}
 ''');
     await assertNoErrorsInCode(r'''
@@ -113,15 +113,15 @@
   }
 
   test_export_infiniteLoop() async {
-    newFile('/test/lib/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 export 'lib2.dart';
 class One {}
 ''');
-    newFile('/test/lib/lib2.dart', content: r'''
+    newFile('$testPackageLibPath/lib2.dart', content: r'''
 export 'lib3.dart';
 class Two {}
 ''');
-    newFile('/test/lib/lib3.dart', content: r'''
+    newFile('$testPackageLibPath/lib3.dart', content: r'''
 export 'lib2.dart';
 class Three {}
 ''');
@@ -132,7 +132,7 @@
   }
 
   test_extension_instance_call() async {
-    newFile('/test/lib/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 extension E on int {
   int call(int x) => 0;
 }
@@ -147,7 +147,7 @@
   }
 
   test_extension_instance_getter() async {
-    newFile('/test/lib/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 extension E on String {
   String get empty => '';
 }
@@ -162,7 +162,7 @@
   }
 
   test_extension_instance_method() async {
-    newFile('/test/lib/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 extension E on String {
   String empty() => '';
 }
@@ -177,7 +177,7 @@
   }
 
   test_extension_instance_operator_binary() async {
-    newFile('/test/lib/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 extension E on String {
   String operator -(String s) => this;
 }
@@ -192,7 +192,7 @@
   }
 
   test_extension_instance_operator_index() async {
-    newFile('/test/lib/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 extension E on int {
   int operator [](int i) => 0;
 }
@@ -207,7 +207,7 @@
   }
 
   test_extension_instance_operator_unary() async {
-    newFile('/test/lib/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 extension E on String {
   void operator -() {}
 }
@@ -222,7 +222,7 @@
   }
 
   test_extension_instance_setter() async {
-    newFile('/test/lib/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 extension E on String {
   void set foo(int i) {}
 }
@@ -237,7 +237,7 @@
   }
 
   test_extension_override_getter() async {
-    newFile('/test/lib/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 extension E on String {
   String get empty => '';
 }
@@ -252,7 +252,7 @@
   }
 
   test_extension_static_field() async {
-    newFile('/test/lib/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 extension E on String {
   static const String empty = '';
 }
@@ -267,7 +267,7 @@
   }
 
   test_hide() async {
-    newFile('/test/lib/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 class A {}
 ''');
     await assertErrorsInCode(r'''
@@ -287,7 +287,7 @@
   }
 
   test_metadata() async {
-    newFile('/test/lib/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 const x = 0;
 ''');
     await assertNoErrorsInCode(r'''
@@ -301,12 +301,12 @@
   }
 
   test_multipleExtensions() async {
-    newFile('/test/lib/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 extension E on String {
   String a() => '';
 }
 ''');
-    newFile('/test/lib/lib2.dart', content: r'''
+    newFile('$testPackageLibPath/lib2.dart', content: r'''
 extension E on String {
   String b() => '';
 }
@@ -324,7 +324,7 @@
   }
 
   test_prefix_topLevelFunction() async {
-    newFile('/test/lib/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 class One {}
 topLevelFunction() {}
 ''');
@@ -343,7 +343,7 @@
   }
 
   test_prefix_topLevelFunction2() async {
-    newFile('/test/lib/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 class One {}
 topLevelFunction() {}
 ''');
@@ -364,7 +364,7 @@
   }
 
   test_show() async {
-    newFile('/test/lib/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 class A {}
 class B {}
 ''');
@@ -378,7 +378,7 @@
   }
 
   test_unusedImport() async {
-    newFile('/test/lib/lib1.dart');
+    newFile('$testPackageLibPath/lib1.dart');
     await assertErrorsInCode(r'''
 import 'lib1.dart';
 ''', [
diff --git a/pkg/analyzer/test/src/diagnostics/unused_label_test.dart b/pkg/analyzer/test/src/diagnostics/unused_label_test.dart
index 4d1c338..dbc6fb1 100644
--- a/pkg/analyzer/test/src/diagnostics/unused_label_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/unused_label_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class UnusedLabelTest extends DriverResolutionTest {
+class UnusedLabelTest extends PubPackageResolutionTest {
   test_unused_inSwitch() async {
     await assertErrorsInCode(r'''
 f(x) {
diff --git a/pkg/analyzer/test/src/diagnostics/unused_local_variable_test.dart b/pkg/analyzer/test/src/diagnostics/unused_local_variable_test.dart
index 5bf524c..58c7b44 100644
--- a/pkg/analyzer/test/src/diagnostics/unused_local_variable_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/unused_local_variable_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/dart/error/hint_codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class UnusedLocalVariableTest extends DriverResolutionTest {
+class UnusedLocalVariableTest extends PubPackageResolutionTest {
   @override
   bool get enableUnusedLocalVariable => true;
 
diff --git a/pkg/analyzer/test/src/diagnostics/unused_shown_name_test.dart b/pkg/analyzer/test/src/diagnostics/unused_shown_name_test.dart
index 6e43f10..787c6841 100644
--- a/pkg/analyzer/test/src/diagnostics/unused_shown_name_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/unused_shown_name_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,9 +14,9 @@
 }
 
 @reflectiveTest
-class UnusedShownNameTest extends DriverResolutionTest {
+class UnusedShownNameTest extends PubPackageResolutionTest {
   test_extension_instance_method_unused() async {
-    newFile('/test/lib/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 extension E on String {
   String empty() => '';
 }
@@ -34,7 +34,7 @@
   }
 
   test_extension_instance_method_used() async {
-    newFile('/test/lib/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 extension E on String {
   String empty() => '';
 }
@@ -49,7 +49,7 @@
   }
 
   test_unreferenced() async {
-    newFile('/test/lib/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 class A {}
 class B {}
 ''');
@@ -73,7 +73,7 @@
   }
 
   test_unusedShownName_as() async {
-    newFile('/test/lib/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 class A {}
 class B {}
 ''');
@@ -86,7 +86,7 @@
   }
 
   test_unusedShownName_duplicates() async {
-    newFile('/test/lib/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 class A {}
 class B {}
 class C {}
@@ -104,7 +104,7 @@
   }
 
   test_unusedShownName_topLevelVariable() async {
-    newFile('/test/lib/lib1.dart', content: r'''
+    newFile('$testPackageLibPath/lib1.dart', content: r'''
 const int var1 = 1;
 const int var2 = 2;
 const int var3 = 3;
diff --git a/pkg/analyzer/test/src/diagnostics/uri_with_interpolation_test.dart b/pkg/analyzer/test/src/diagnostics/uri_with_interpolation_test.dart
index bf316a5..f637890 100644
--- a/pkg/analyzer/test/src/diagnostics/uri_with_interpolation_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/uri_with_interpolation_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class UriWithInterpolationTest extends DriverResolutionTest {
+class UriWithInterpolationTest extends PubPackageResolutionTest {
   test_constant() async {
     await assertErrorsInCode('''
 import 'stuff_\$platform.dart';
diff --git a/pkg/analyzer/test/src/diagnostics/use_of_nullable_value_test.dart b/pkg/analyzer/test/src/diagnostics/use_of_nullable_value_test.dart
index 13e3cd2..6e71b13 100644
--- a/pkg/analyzer/test/src/diagnostics/use_of_nullable_value_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/use_of_nullable_value_test.dart
@@ -6,8 +6,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -18,7 +17,7 @@
 }
 
 @reflectiveTest
-class InvalidUseOfNullValueTest extends DriverResolutionTest
+class InvalidUseOfNullValueTest extends PubPackageResolutionTest
     with WithNullSafetyMixin {
   test_as() async {
     await assertNoErrorsInCode(r'''
@@ -125,7 +124,7 @@
 
 @reflectiveTest
 class UncheckedUseOfNullableValueInsideExtensionTest
-    extends DriverResolutionTest with WithNullSafetyMixin {
+    extends PubPackageResolutionTest with WithNullSafetyMixin {
   test_indexExpression_nonNullable() async {
     await assertNoErrorsInCode(r'''
 class A {
@@ -330,7 +329,7 @@
 }
 
 @reflectiveTest
-class UncheckedUseOfNullableValueTest extends DriverResolutionTest
+class UncheckedUseOfNullableValueTest extends PubPackageResolutionTest
     with WithNullSafetyMixin {
   test_and_nonNullable() async {
     await assertNoErrorsInCode(r'''
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 f5b79b4..bb87ff3 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
@@ -6,8 +6,7 @@
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import '../../generated/test_support.dart';
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -17,7 +16,7 @@
 }
 
 @reflectiveTest
-class UseOfVoidResultTest extends DriverResolutionTest {
+class UseOfVoidResultTest extends PubPackageResolutionTest {
   test_andVoidLhsError() async {
     await assertErrorsInCode('''
 void main() {
@@ -727,7 +726,7 @@
 }
 
 @reflectiveTest
-class UseOfVoidResultTest_NonNullable extends DriverResolutionTest
+class UseOfVoidResultTest_NonNullable extends PubPackageResolutionTest
     with WithNullSafetyMixin {
   test_await() async {
     await assertErrorsInCode('''
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 e624794..155020e 100644
--- a/pkg/analyzer/test/src/diagnostics/variable_type_mismatch_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/variable_type_mismatch_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class VariableTypeMismatchTest extends DriverResolutionTest {
+class VariableTypeMismatchTest extends PubPackageResolutionTest {
   test_assignNullToInt() async {
     await assertNoErrorsInCode('''
 const int x = null;
diff --git a/pkg/analyzer/test/src/diagnostics/void_with_type_arguments_test.dart b/pkg/analyzer/test/src/diagnostics/void_with_type_arguments_test.dart
index bc3d754..7615279 100644
--- a/pkg/analyzer/test/src/diagnostics/void_with_type_arguments_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/void_with_type_arguments_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/dart/error/syntactic_errors.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class VoidWithTypeArgumentsTest extends DriverResolutionTest {
+class VoidWithTypeArgumentsTest extends PubPackageResolutionTest {
   test_noArguments() async {
     await assertNoErrorsInCode('''
 void f() {}
diff --git a/pkg/analyzer/test/src/diagnostics/wrong_number_of_parameters_for_operator_test.dart b/pkg/analyzer/test/src/diagnostics/wrong_number_of_parameters_for_operator_test.dart
index 9a22787..cb48547 100644
--- a/pkg/analyzer/test/src/diagnostics/wrong_number_of_parameters_for_operator_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/wrong_number_of_parameters_for_operator_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class WrongNumberOfParametersForOperatorTest extends DriverResolutionTest {
+class WrongNumberOfParametersForOperatorTest extends PubPackageResolutionTest {
   test_binaryOperators() async {
     await _checkTooFewAndTooMany('<');
     await _checkTooFewAndTooMany('>');
diff --git a/pkg/analyzer/test/src/diagnostics/wrong_number_of_parameters_for_setter_test.dart b/pkg/analyzer/test/src/diagnostics/wrong_number_of_parameters_for_setter_test.dart
index 9797798..48d73c1 100644
--- a/pkg/analyzer/test/src/diagnostics/wrong_number_of_parameters_for_setter_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/wrong_number_of_parameters_for_setter_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class WrongNumberOfParametersForSetterTest extends DriverResolutionTest {
+class WrongNumberOfParametersForSetterTest extends PubPackageResolutionTest {
   test_correct_number_of_parameters() async {
     await assertNoErrorsInCode(r'''
 class A {
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 3d53d64..2faef5e 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
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class WrongNumberOfTypeArgumentsTest extends DriverResolutionTest {
+class WrongNumberOfTypeArgumentsTest extends PubPackageResolutionTest {
   test_class_tooFew() async {
     await assertErrorsInCode(r'''
 class A<E, F> {}
diff --git a/pkg/analyzer/test/src/diagnostics/wrong_type_parameter_variance_in_superinterface_test.dart b/pkg/analyzer/test/src/diagnostics/wrong_type_parameter_variance_in_superinterface_test.dart
index 840791c..71e8ff7 100644
--- a/pkg/analyzer/test/src/diagnostics/wrong_type_parameter_variance_in_superinterface_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/wrong_type_parameter_variance_in_superinterface_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,7 +15,7 @@
 
 @reflectiveTest
 class WrongTypeParameterVarianceInSuperinterfaceTest
-    extends DriverResolutionTest {
+    extends PubPackageResolutionTest {
   test_class_extends_function_parameterType() async {
     await assertErrorsInCode(r'''
 typedef F<X> = void Function(X);
diff --git a/pkg/analyzer/test/src/diagnostics/yield_each_in_non_generator_test.dart b/pkg/analyzer/test/src/diagnostics/yield_each_in_non_generator_test.dart
index 5843555..d17e43c 100644
--- a/pkg/analyzer/test/src/diagnostics/yield_each_in_non_generator_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/yield_each_in_non_generator_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class YieldEachInNonGeneratorTest extends DriverResolutionTest {
+class YieldEachInNonGeneratorTest extends PubPackageResolutionTest {
   @FailingTest(
       reason: 'We are currently trying to parse the yield statement as a '
           'binary expression.')
diff --git a/pkg/analyzer/test/src/diagnostics/yield_in_non_generator_test.dart b/pkg/analyzer/test/src/diagnostics/yield_in_non_generator_test.dart
index e180713..8f72f46 100644
--- a/pkg/analyzer/test/src/diagnostics/yield_in_non_generator_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/yield_in_non_generator_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class YieldInNonGeneratorTest extends DriverResolutionTest {
+class YieldInNonGeneratorTest extends PubPackageResolutionTest {
   @FailingTest(
       reason: 'We are currently trying to parse the yield statement as a '
           'binary expression.')
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 53b3bfe..862460e 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
@@ -5,8 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../dart/resolution/driver_resolution.dart';
-import '../dart/resolution/with_null_safety_mixin.dart';
+import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,7 +15,7 @@
 }
 
 @reflectiveTest
-class YieldOfInvalidTypeTest extends DriverResolutionTest {
+class YieldOfInvalidTypeTest extends PubPackageResolutionTest {
   test_none_asyncStar_dynamic_to_streamInt() async {
     await assertErrorsInCode(
         '''
diff --git a/pkg/analyzer/tool/diagnostics/diagnostics.md b/pkg/analyzer/tool/diagnostics/diagnostics.md
index baec4b4..c6ef942 100644
--- a/pkg/analyzer/tool/diagnostics/diagnostics.md
+++ b/pkg/analyzer/tool/diagnostics/diagnostics.md
@@ -17,6 +17,9 @@
 
 This page uses the following terms.
 
+[constant context]: #constant-context
+[potentially non-nullable]: #potentially-non-nullable
+
 ### Constant context
 
 A _constant context_ is a region of code in which it isn't necessary to include
@@ -581,9 +584,8 @@
 #### Description
 
 The analyzer produces this diagnostic when a method or function has a
-return type that's <a href=”#potentially-non-nullable”>potentially
-non-nullable</a> but would implicitly return `null` if control reached the
-end of the function.
+return type that's [potentially non-nullable][] but would implicitly return
+`null` if control reached the end of the function.
 
 #### Example
 
@@ -862,7 +864,8 @@
 
 ### const_constructor_param_type_mismatch
 
-_A value of type '{0}' can't be assigned to a parameter of type '{1}'._
+_A value of type '{0}' can't be assigned to a parameter of type '{1}' in a const
+constructor._
 
 #### Description
 
@@ -3977,11 +3980,11 @@
 #### Description
 
 The analyzer produces this diagnostic when an optional parameter, whether
-positional or named, has a <a href=”#potentially-non-nullable”>potentially
-non-nullable</a> type and doesn't specify a default value. Optional
-parameters that have no explicit default value have an implicit default
-value of `null`. If the type of the parameter doesn't allow the parameter
-to have a value of `null`, then the implicit default value isn't valid.
+positional or named, has a [potentially non-nullable][] type and doesn't
+specify a default value. Optional parameters that have no explicit default
+value have an implicit default value of `null`. If the type of the
+parameter doesn't allow the parameter to have a value of `null`, then the
+implicit default value isn't valid.
 
 #### Example
 
@@ -4754,7 +4757,7 @@
 The analyzer produces this diagnostic when an element in a constant list
 literal isn't a constant value. The list literal can be constant either
 explicitly (because it's prefixed by the `const` keyword) or implicitly
-(because it appears in a [constant context](#constant-context)).
+(because it appears in a [constant context][]).
 
 #### Examples
 
@@ -5060,8 +5063,7 @@
 
 The analyzer produces this diagnostic when a local variable is referenced
 and has all these characteristics:
-- Has a type that's <a href=”#potentially-non-nullable”>potentially
-  non-nullable</a>.
+- Has a type that's [potentially non-nullable][].
 - Doesn't have an initializer.
 - Isn't marked as `late`.
 - The analyzer can't prove that the local variable will be assigned before
@@ -5233,8 +5235,7 @@
 
 The analyzer produces this diagnostic when a field is declared and has all
 these characteristics:
-- Has a type that's <a href=”#potentially-non-nullable”>potentially
-  non-nullable</a>
+- Has a type that's [potentially non-nullable][]
 - Doesn't have an initializer
 - Isn't marked as `late`
 
@@ -6220,11 +6221,10 @@
 #### Description
 
 The analyzer produces this diagnostic when an `as` expression inside a
-[constant context](#constant-context) is found in code that has an SDK
-constraint whose lower bound is less than 2.3.2. Using an `as` expression
-in a [constant context](#constant-context) wasn't supported in earlier
-versions, so this code won't be able to run against earlier versions of the
-SDK.
+[constant context][] is found in code that has an SDK constraint whose
+lower bound is less than 2.3.2. Using an `as` expression in a
+[constant context][] wasn't supported in earlier versions, so this code
+won't be able to run against earlier versions of the SDK.
 
 #### Examples
 
@@ -6256,7 +6256,7 @@
 
 If you need to support older versions of the SDK, then either rewrite the
 code to not use an `as` expression, or change the code so that the `as`
-expression isn't in a [constant context](#constant-context):
+expression isn't in a [constant context][]:
 
 {% prettify dart tag=pre+code %}
 num x = 3;
@@ -6271,11 +6271,11 @@
 #### Description
 
 The analyzer produces this diagnostic when any use of the `&`, `|`, or `^`
-operators on the class `bool` inside a
-[constant context](#constant-context) is found in code that has an SDK
-constraint whose lower bound is less than 2.3.2. Using these operators in a
-[constant context](#constant-context) wasn't supported in earlier versions,
-so this code won't be able to run against earlier versions of the SDK.
+operators on the class `bool` inside a [constant context][] is found in
+code that has an SDK constraint whose lower bound is less than 2.3.2. Using
+these operators in a [constant context][] wasn't supported in earlier
+versions, so this code won't be able to run against earlier versions of the
+SDK.
 
 #### Examples
 
@@ -6308,7 +6308,7 @@
 
 If you need to support older versions of the SDK, then either rewrite the
 code to not use these operators, or change the code so that the expression
-isn't in a [constant context](#constant-context):
+isn't in a [constant context][]:
 
 {% prettify dart tag=pre+code %}
 const bool a = true;
@@ -6324,11 +6324,10 @@
 #### Description
 
 The analyzer produces this diagnostic when the operator `==` is used on a
-non-primitive type inside a [constant context](#constant-context) is found
-in code that has an SDK constraint whose lower bound is less than 2.3.2.
-Using this operator in a [constant context](#constant-context) wasn't
-supported in earlier versions, so this code won't be able to run against
-earlier versions of the SDK.
+non-primitive type inside a [constant context][] is found in code that has
+an SDK constraint whose lower bound is less than 2.3.2. Using this operator
+in a [constant context][] wasn't supported in earlier versions, so this
+code won't be able to run against earlier versions of the SDK.
 
 #### Examples
 
@@ -6362,7 +6361,7 @@
 
 If you need to support older versions of the SDK, then either rewrite the
 code to not use the `==` operator, or change the code so that the
-expression isn't in a [constant context](#constant-context):
+expression isn't in a [constant context][]:
 
 {% prettify dart tag=pre+code %}
 class C {}
@@ -6434,11 +6433,10 @@
 #### Description
 
 The analyzer produces this diagnostic when an `is` expression inside a
-[constant context](#constant-context) is found in code that has an SDK
-constraint whose lower bound is less than 2.3.2. Using an `is` expression
-in a [constant context](#constant-context) wasn't supported in earlier
-versions, so this code won't be able to run against earlier versions of the
-SDK.
+[constant context][] is found in code that has an SDK constraint whose
+lower bound is less than 2.3.2. Using an `is` expression in a
+[constant context][] wasn't supported in earlier versions, so this code
+won't be able to run against earlier versions of the SDK.
 
 #### Examples
 
@@ -6471,7 +6469,7 @@
 If you need to support older versions of the SDK, then either rewrite the
 code to not use the `is` operator, or, if that isn't possible, change the
 code so that the `is` expression isn't in a
-[constant context](#constant-context):
+[constant context][]:
 
 {% prettify dart tag=pre+code %}
 const x = 4;
@@ -6587,11 +6585,10 @@
 #### Description
 
 The analyzer produces this diagnostic when an if or spread element inside
-a [constant context](#constant-context) is found in code that has an
-SDK constraint whose lower bound is less than 2.5.0. Using an if or
-spread element inside a [constant context](#constant-context) wasn't
-supported in earlier versions, so this code won't be able to run against
-earlier versions of the SDK.
+a [constant context][] is found in code that has an SDK constraint whose
+lower bound is less than 2.5.0. Using an if or spread element inside a
+[constant context][] wasn't supported in earlier versions, so this code
+won't be able to run against earlier versions of the SDK.
 
 #### Examples
 
@@ -6630,7 +6627,7 @@
 {% endprettify %}
 
 If that isn't possible, change the code so that the element isn't in a
-[constant context](#constant-context):
+[constant context][]:
 
 {% prettify dart tag=pre+code %}
 const a = [1, 2];
@@ -6900,8 +6897,8 @@
 #### Description
 
 The analyzer produces this diagnostic when an expression whose type is
-<a href=”#potentially-non-nullable”>potentially non-nullable</a> is
-dereferenced without first verifying that the value isn't `null`.
+[potentially non-nullable][] is dereferenced without first verifying that
+the value isn't `null`.
 
 #### Example
 
@@ -8374,7 +8371,7 @@
 
 ### variable_type_mismatch
 
-_A value of type '{0}' can't be assigned to a variable of type '{1}'._
+_A value of type '{0}' can't be assigned to a const variable of type '{1}'._
 
 #### Description
 
diff --git a/pkg/analyzer/tool/diagnostics/generate.dart b/pkg/analyzer/tool/diagnostics/generate.dart
index 6a0c2f3..bc4fb24 100644
--- a/pkg/analyzer/tool/diagnostics/generate.dart
+++ b/pkg/analyzer/tool/diagnostics/generate.dart
@@ -390,6 +390,9 @@
 
 This page uses the following terms.
 
+[constant context]: #constant-context
+[potentially non-nullable]: #potentially-non-nullable
+
 ### Constant context
 
 A _constant context_ is a region of code in which it isn't necessary to include
diff --git a/pkg/analyzer_cli/lib/src/driver.dart b/pkg/analyzer_cli/lib/src/driver.dart
index de97117..702c73a 100644
--- a/pkg/analyzer_cli/lib/src/driver.dart
+++ b/pkg/analyzer_cli/lib/src/driver.dart
@@ -441,7 +441,11 @@
 
     // Setup embedding.
     if (includeSdkResolver) {
-      var embedderSdk = EmbedderSdk(resourceProvider, embedderMap);
+      var embedderSdk = EmbedderSdk(
+        resourceProvider,
+        embedderMap,
+        languageVersion: sdk.languageVersion,
+      );
       if (embedderSdk.libraryMap.size() == 0) {
         // The embedder uri resolver has no mappings. Use the default Dart SDK
         // uri resolver.
diff --git a/pkg/compiler/lib/src/diagnostics/messages.dart b/pkg/compiler/lib/src/diagnostics/messages.dart
index 151df1e..e148654 100644
--- a/pkg/compiler/lib/src/diagnostics/messages.dart
+++ b/pkg/compiler/lib/src/diagnostics/messages.dart
@@ -210,7 +210,8 @@
       MessageKind.JS_INTEROP_CLASS_NON_EXTERNAL_MEMBER: const MessageTemplate(
           MessageKind.JS_INTEROP_CLASS_NON_EXTERNAL_MEMBER,
           "Member '#{member}' in js-interop class '#{cls}' is not external.",
-          howToFix: "Try adding the 'external' to '#{member}'.",
+          howToFix: "Try adding 'external' to '#{member}'. If #{member} is a "
+              "`late` field, use an `external` getter/setter instead.",
           examples: const [
             """
               import 'package:js/js.dart';
diff --git a/pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart b/pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart
index 5bd1eab..0bd06bf 100644
--- a/pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart
+++ b/pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart
@@ -158,20 +158,11 @@
   var uninitializedSentinel = holder;
   holder[name] = uninitializedSentinel;
   holder[getterName] = function() {
-    var result;
-    try {
-      if (holder[name] === uninitializedSentinel) {
-        result = holder[name] = initializer();
-      } else {
-        result = holder[name];
-      }
-    } finally {
-      // Use try-finally, not try-catch/throw as it destroys the stack trace.
-      // TODO(floitsch): for performance reasons the function should probably
-      // be unique for each static.
-      holder[getterName] = function() { return this[name]; };
+    if (holder[name] === uninitializedSentinel) {
+      holder[name] = initializer();
     }
-    return result;
+    holder[getterName] = function() { return this[name]; };
+    return holder[name];
   };
 }
 
diff --git a/pkg/compiler/lib/src/ssa/nodes.dart b/pkg/compiler/lib/src/ssa/nodes.dart
index cc52e28..9e5cdc5 100644
--- a/pkg/compiler/lib/src/ssa/nodes.dart
+++ b/pkg/compiler/lib/src/ssa/nodes.dart
@@ -4054,7 +4054,7 @@
 /// depend on type variables and complex types.
 class HIsTest extends HInstruction {
   final AbstractValueWithPrecision checkedAbstractValue;
-  final DartType dartType;
+  DartType dartType;
 
   HIsTest(this.dartType, this.checkedAbstractValue, HInstruction checked,
       HInstruction rti, AbstractValue type)
@@ -4066,9 +4066,9 @@
   HInstruction get typeInput => inputs[0];
   HInstruction get checkedInput => inputs[1];
 
-  AbstractBool evaluate(JClosedWorld closedWorld, bool useNullSafety) =>
-      _isTestResult(checkedInput, dartType, checkedAbstractValue, closedWorld,
-          useNullSafety);
+  AbstractBool evaluate(JClosedWorld closedWorld, {bool useNullSafety}) =>
+      _typeTest(checkedInput, dartType, checkedAbstractValue, closedWorld,
+          isCast: false, useNullSafety: useNullSafety);
 
   @override
   accept(HVisitor visitor) => visitor.visitIsTest(this);
@@ -4101,9 +4101,9 @@
 
   HInstruction get checkedInput => inputs[0];
 
-  AbstractBool evaluate(JClosedWorld closedWorld, bool useNullSafety) =>
-      _isTestResult(checkedInput, dartType, checkedAbstractValue, closedWorld,
-          useNullSafety);
+  AbstractBool evaluate(JClosedWorld closedWorld, {bool useNullSafety}) =>
+      _typeTest(checkedInput, dartType, checkedAbstractValue, closedWorld,
+          isCast: false, useNullSafety: useNullSafety);
 
   @override
   accept(HVisitor visitor) => visitor.visitIsTestSimple(this);
@@ -4121,18 +4121,15 @@
   String toString() => 'HIsTestSimple()';
 }
 
-AbstractBool _isTestResult(
-    HInstruction expression,
-    DartType dartType,
-    AbstractValueWithPrecision checkedAbstractValue,
-    JClosedWorld closedWorld,
-    bool useNullSafety) {
+AbstractBool _typeTest(HInstruction expression, DartType dartType,
+    AbstractValueWithPrecision checkedAbstractValue, JClosedWorld closedWorld,
+    {bool isCast, bool useNullSafety}) {
   AbstractValueDomain abstractValueDomain = closedWorld.abstractValueDomain;
   AbstractValue subsetType = expression.instructionType;
   AbstractValue supersetType = checkedAbstractValue.abstractValue;
   AbstractBool expressionIsNull = expression.isNull(abstractValueDomain);
 
-  if (useNullSafety) {
+  if (!isCast && useNullSafety) {
     if (expressionIsNull.isDefinitelyTrue) {
       if (dartType.isObject) return AbstractBool.False;
       if (closedWorld.dartTypes.isTopType(dartType) ||
@@ -4234,7 +4231,7 @@
 /// Type cast or type check using Rti form of type expression.
 class HAsCheck extends HCheck {
   final AbstractValueWithPrecision checkedType;
-  final DartType checkedTypeExpression;
+  DartType checkedTypeExpression;
   final bool isTypeError;
 
   HAsCheck(
@@ -4269,14 +4266,10 @@
     return isTypeError == other.isTypeError;
   }
 
-  bool isRedundant(JClosedWorld closedWorld) {
-    if (!checkedType.isPrecise) return false;
-    AbstractValueDomain abstractValueDomain = closedWorld.abstractValueDomain;
-    AbstractValue inputType = checkedInput.instructionType;
-    return abstractValueDomain
-        .isIn(inputType, checkedType.abstractValue)
-        .isDefinitelyTrue;
-  }
+  bool isRedundant(JClosedWorld closedWorld, {bool useNullSafety}) =>
+      _typeTest(checkedInput, checkedTypeExpression, checkedType, closedWorld,
+              isCast: true, useNullSafety: useNullSafety)
+          .isDefinitelyTrue;
 
   @override
   String toString() {
@@ -4307,14 +4300,10 @@
   @override
   accept(HVisitor visitor) => visitor.visitAsCheckSimple(this);
 
-  bool isRedundant(JClosedWorld closedWorld) {
-    if (!checkedType.isPrecise) return false;
-    AbstractValueDomain abstractValueDomain = closedWorld.abstractValueDomain;
-    AbstractValue inputType = checkedInput.instructionType;
-    return abstractValueDomain
-        .isIn(inputType, checkedType.abstractValue)
-        .isDefinitelyTrue;
-  }
+  bool isRedundant(JClosedWorld closedWorld, {bool useNullSafety}) =>
+      _typeTest(checkedInput, dartType, checkedType, closedWorld,
+              isCast: true, useNullSafety: useNullSafety)
+          .isDefinitelyTrue;
 
   @override
   int typeCode() => HInstruction.AS_CHECK_SIMPLE_TYPECODE;
diff --git a/pkg/compiler/lib/src/ssa/optimize.dart b/pkg/compiler/lib/src/ssa/optimize.dart
index a410a55..9ff7388 100644
--- a/pkg/compiler/lib/src/ssa/optimize.dart
+++ b/pkg/compiler/lib/src/ssa/optimize.dart
@@ -1845,37 +1845,54 @@
     // TODO(fishythefish): Correctly constant fold `null as T` (also in
     // [visitAsCheckSimple]) when running with strong NNBD. We might get this
     // for free if nullability is precisely propagated to the typemasks.
-    if (node.isRedundant(_closedWorld)) return node.checkedInput;
 
-    // See if this check can be lowered to a simple one.
     HInstruction typeInput = node.typeInput;
     if (typeInput is HLoadType) {
       TypeExpressionRecipe recipe = typeInput.typeExpression;
-      DartType dartType = recipe.type;
-      MemberEntity specializedCheck = SpecializedChecks.findAsCheck(
-          dartType, _closedWorld.commonElements, _options.useLegacySubtyping);
-      if (specializedCheck != null) {
-        AbstractValueWithPrecision checkedType =
-            _abstractValueDomain.createFromStaticType(dartType, nullable: true);
-        return HAsCheckSimple(node.checkedInput, dartType, checkedType,
-            node.isTypeError, specializedCheck, node.instructionType);
-      }
-      if (_closedWorld.dartTypes.isTopType(dartType)) {
-        return node.checkedInput;
-      }
+      node.checkedTypeExpression = recipe.type;
+    }
+
+    if (node.isRedundant(_closedWorld, useNullSafety: _options.useNullSafety)) {
+      return node.checkedInput;
+    }
+
+    // See if this check can be lowered to a simple one.
+    MemberEntity specializedCheck = SpecializedChecks.findAsCheck(
+        node.checkedTypeExpression,
+        _closedWorld.commonElements,
+        _options.useLegacySubtyping);
+    if (specializedCheck != null) {
+      AbstractValueWithPrecision checkedType = _abstractValueDomain
+          .createFromStaticType(node.checkedTypeExpression, nullable: true);
+      return HAsCheckSimple(
+          node.checkedInput,
+          node.checkedTypeExpression,
+          checkedType,
+          node.isTypeError,
+          specializedCheck,
+          node.instructionType);
     }
     return node;
   }
 
   @override
   HInstruction visitAsCheckSimple(HAsCheckSimple node) {
-    if (node.isRedundant(_closedWorld)) return node.checkedInput;
+    if (node.isRedundant(_closedWorld, useNullSafety: _options.useNullSafety)) {
+      return node.checkedInput;
+    }
     return node;
   }
 
   @override
   HInstruction visitIsTest(HIsTest node) {
-    AbstractBool result = node.evaluate(_closedWorld, _options.useNullSafety);
+    HInstruction typeInput = node.typeInput;
+    if (typeInput is HLoadType) {
+      TypeExpressionRecipe recipe = typeInput.typeExpression;
+      node.dartType = recipe.type;
+    }
+
+    AbstractBool result =
+        node.evaluate(_closedWorld, useNullSafety: _options.useNullSafety);
     if (result.isDefinitelyFalse) {
       return _graph.addConstantBool(false, _closedWorld);
     }
@@ -1883,32 +1900,25 @@
       return _graph.addConstantBool(true, _closedWorld);
     }
 
-    HInstruction typeInput = node.typeInput;
-    if (typeInput is HLoadType) {
-      TypeExpressionRecipe recipe = typeInput.typeExpression;
-      DartType dartType = recipe.type;
-      IsTestSpecialization specialization =
-          SpecializedChecks.findIsTestSpecialization(
-              dartType, _graph, _closedWorld);
+    IsTestSpecialization specialization =
+        SpecializedChecks.findIsTestSpecialization(
+            node.dartType, _graph, _closedWorld);
 
-      if (specialization == IsTestSpecialization.isNull ||
-          specialization == IsTestSpecialization.notNull) {
-        HInstruction nullTest = HIdentity(
-            node.checkedInput,
-            _graph.addConstantNull(_closedWorld),
-            _abstractValueDomain.boolType);
-        if (specialization == IsTestSpecialization.isNull) return nullTest;
-        nullTest.sourceInformation = node.sourceInformation;
-        node.block.addBefore(node, nullTest);
-        return HNot(nullTest, _abstractValueDomain.boolType);
-      }
+    if (specialization == IsTestSpecialization.isNull ||
+        specialization == IsTestSpecialization.notNull) {
+      HInstruction nullTest = HIdentity(node.checkedInput,
+          _graph.addConstantNull(_closedWorld), _abstractValueDomain.boolType);
+      if (specialization == IsTestSpecialization.isNull) return nullTest;
+      nullTest.sourceInformation = node.sourceInformation;
+      node.block.addBefore(node, nullTest);
+      return HNot(nullTest, _abstractValueDomain.boolType);
+    }
 
-      if (specialization != null) {
-        AbstractValueWithPrecision checkedType = _abstractValueDomain
-            .createFromStaticType(dartType, nullable: false);
-        return HIsTestSimple(dartType, checkedType, specialization,
-            node.checkedInput, _abstractValueDomain.boolType);
-      }
+    if (specialization != null) {
+      AbstractValueWithPrecision checkedType = _abstractValueDomain
+          .createFromStaticType(node.dartType, nullable: false);
+      return HIsTestSimple(node.dartType, checkedType, specialization,
+          node.checkedInput, _abstractValueDomain.boolType);
     }
 
     // TODO(fishythefish): Prune now-unneeded is-tests from the metadata.
@@ -1918,7 +1928,8 @@
 
   @override
   HInstruction visitIsTestSimple(HIsTestSimple node) {
-    AbstractBool result = node.evaluate(_closedWorld, _options.useNullSafety);
+    AbstractBool result =
+        node.evaluate(_closedWorld, useNullSafety: _options.useNullSafety);
     if (result.isDefinitelyFalse) {
       return _graph.addConstantBool(false, _closedWorld);
     }
diff --git a/pkg/compiler/test/rti/emission/optimized_is_check.dart b/pkg/compiler/test/rti/emission/optimized_is_check.dart
index ca84289..e652518 100644
--- a/pkg/compiler/test/rti/emission/optimized_is_check.dart
+++ b/pkg/compiler/test/rti/emission/optimized_is_check.dart
@@ -10,7 +10,7 @@
 // This test verifies is-checks work with simple classes that have various
 // degrees of instantiation.
 
-/*class: Instantiated:checkedInstance,checks=[],instance,typeArgument*/
+/*class: Instantiated:checks=[],instance,typeArgument*/
 class Instantiated {} // instantiated and used in many ways
 
 /*class: Deferred:checks=[],instance*/
@@ -24,10 +24,10 @@
 /*class: DeferredAndRemoved:checks=[],onlyForConstructor*/
 class DeferredAndRemoved {} // allocated after first check and removed
 
-/*class: UsedAsTypeParameter:checkedInstance,checks=[],onlyForRti,typeArgument*/
+/*class: UsedAsTypeParameter:checks=[],onlyForRti,typeArgument*/
 class UsedAsTypeParameter {} // only used as a type parameter
 
-/*class: UsedAsTestedTypeParameter:checkedInstance,checks=[],onlyForRti,typeArgument*/
+/*class: UsedAsTestedTypeParameter:checks=[],onlyForRti,typeArgument*/
 class UsedAsTestedTypeParameter {} // only used as a type parameter
 
 /*class: Check:checks=[],instance*/
diff --git a/pkg/dartdev/lib/src/commands/compile.dart b/pkg/dartdev/lib/src/commands/compile.dart
index 1a804bd..e4d67bd 100644
--- a/pkg/dartdev/lib/src/commands/compile.dart
+++ b/pkg/dartdev/lib/src/commands/compile.dart
@@ -243,6 +243,12 @@
       fileExt: 'jit',
       formatName: 'app-jit',
     ));
+    addSubcommand(CompileSnapshotCommand(
+      commandName: 'kernel',
+      help: 'to a kernel snapshot',
+      fileExt: 'dill',
+      formatName: 'kernel',
+    ));
     addSubcommand(CompileNativeCommand(
       commandName: 'exe',
       help: 'to a self-contained executable',
diff --git a/pkg/dartdev/lib/src/commands/run.dart b/pkg/dartdev/lib/src/commands/run.dart
index 218d905..c6333f5 100644
--- a/pkg/dartdev/lib/src/commands/run.dart
+++ b/pkg/dartdev/lib/src/commands/run.dart
@@ -217,11 +217,14 @@
       }
     }
 
-    final path = args.firstWhere((e) => !e.startsWith('-'));
+    var path = args.firstWhere((e) => !e.startsWith('-'));
     final pathIndex = args.indexOf(path);
     final runArgs = (pathIndex + 1 == args.length)
         ? <String>[]
         : args.sublist(pathIndex + 1);
+    try {
+      path = Uri.parse(path).toFilePath();
+    } catch (_) {}
     VmInteropHandler.run(path, runArgs);
     return 0;
   }
diff --git a/pkg/dartdev/test/commands/compile_test.dart b/pkg/dartdev/test/commands/compile_test.dart
index 489181d..2daa5f2 100644
--- a/pkg/dartdev/test/commands/compile_test.dart
+++ b/pkg/dartdev/test/commands/compile_test.dart
@@ -159,6 +159,29 @@
     expect(result.exitCode, 0);
   });
 
+  test('Compile and run kernel snapshot', () {
+    final p = project(mainSrc: 'void main() { print("I love kernel"); }');
+    final outFile = path.join(p.dirPath, 'main.dill');
+    var result = p.runSync(
+      'compile',
+      [
+        'kernel',
+        '-o',
+        outFile,
+        p.relativeFilePath,
+      ],
+    );
+    expect(File(outFile).existsSync(), true,
+        reason: 'File not found: $outFile');
+    expect(result.stderr, isEmpty);
+    expect(result.exitCode, 0);
+
+    result = p.runSync('run', ['main.dill']);
+    expect(result.stdout, contains('I love kernel'));
+    expect(result.stderr, isEmpty);
+    expect(result.exitCode, 0);
+  });
+
   test('Compile JS', () {
     final p = project(mainSrc: "void main() { print('Hello from JS'); }");
     final inFile = path.canonicalize(path.join(p.dirPath, p.relativeFilePath));
diff --git a/pkg/dartdev/test/commands/run_test.dart b/pkg/dartdev/test/commands/run_test.dart
index 1d71286..ba7d746 100644
--- a/pkg/dartdev/test/commands/run_test.dart
+++ b/pkg/dartdev/test/commands/run_test.dart
@@ -4,6 +4,7 @@
 
 import 'dart:io';
 
+import 'package:path/path.dart' as path;
 import 'package:test/test.dart';
 
 import '../utils.dart';
@@ -90,7 +91,43 @@
       '--enable-experiment=non-nullable',
       'main.dart',
       'argument1',
-      'argument2'
+      'argument2',
+    ]);
+
+    // --enable-experiment and main.dart should not be passed.
+    expect(result.stdout, equals('[argument1, argument2]\n'));
+    expect(result.stderr, isEmpty);
+    expect(result.exitCode, 0);
+  });
+
+  test('with absolute file path', () async {
+    p = project();
+    p.file('main.dart', 'void main(args) { print(args); }');
+    // Test with absolute path
+    final name = path.join(p.dirPath, 'main.dart');
+    final result = p.runSync('run', [
+      '--enable-experiment=non-nullable',
+      name,
+      'argument1',
+      'argument2',
+    ]);
+
+    // --enable-experiment and main.dart should not be passed.
+    expect(result.stdout, equals('[argument1, argument2]\n'));
+    expect(result.stderr, isEmpty);
+    expect(result.exitCode, 0);
+  });
+
+  test('with file uri', () async {
+    p = project();
+    p.file('main.dart', 'void main(args) { print(args); }');
+    // Test with File uri
+    final name = path.join(p.dirPath, 'main.dart');
+    final result = p.runSync('run', [
+      '--enable-experiment=non-nullable',
+      Uri.file(name).toString(),
+      'argument1',
+      'argument2',
     ]);
 
     // --enable-experiment and main.dart should not be passed.
diff --git a/pkg/dev_compiler/lib/src/js_ast/printer.dart b/pkg/dev_compiler/lib/src/js_ast/printer.dart
index c7891b4..ccf3275 100644
--- a/pkg/dev_compiler/lib/src/js_ast/printer.dart
+++ b/pkg/dev_compiler/lib/src/js_ast/printer.dart
@@ -1326,11 +1326,11 @@
     if (node.isStar) {
       out('*');
     } else {
-      var name = node.name.name;
+      var localName = localNamer.getName(node.name);
       if (node.asName == null) {
         // If our local was renamed, generate an implicit "as".
         // This is a convenience feature so imports and exports can be renamed.
-        var localName = localNamer.getName(node.name);
+        var name = node.name.name;
         if (localName != name) {
           out(export ? localName : name);
           out(' as ');
@@ -1338,7 +1338,7 @@
           return;
         }
       }
-      out(name);
+      out(localName);
     }
     if (node.asName != null) {
       out(' as ');
diff --git a/pkg/dev_compiler/tool/ddb b/pkg/dev_compiler/tool/ddb
index 90b58e9..b2cd5ce 100755
--- a/pkg/dev_compiler/tool/ddb
+++ b/pkg/dev_compiler/tool/ddb
@@ -308,6 +308,8 @@
 } catch(e) {
 }
 let sdk = require(\"dart_sdk\");
+// Create a self reference for JS interop tests that set fields on self.
+sdk.dart.global.self = sdk.dart.global;
 let main = require(\"./$basename\").$libname.main;
 try {
   if ($nnbd) {
@@ -342,6 +344,8 @@
       var runjs = '''
 import { dart, _isolate_helper } from '$sdkJsPath/dart_sdk.js';
 import { $libname } from '$basename.js';
+// Create a self reference for JS interop tests that set fields on self.
+dart.global.self = dart.global;
 let main = $libname.main;
 try {
   if ($nnbd) {
diff --git a/pkg/dev_compiler/tool/patch_sdk.dart b/pkg/dev_compiler/tool/patch_sdk.dart
index 06c87db..74b3ec5 100755
--- a/pkg/dev_compiler/tool/patch_sdk.dart
+++ b/pkg/dev_compiler/tool/patch_sdk.dart
@@ -40,7 +40,7 @@
   var outDir = resolveInputUri(outPath.endsWith('/') ? outPath : '$outPath/');
   var outLibRoot = outDir.resolve('lib/');
 
-  var inputVersion = Platform.script.resolve('../../../tools/VERSION');
+  var inputVersion = Uri.file(Platform.executable).resolve('../version');
   var outVersion = outDir.resolve('version');
 
   var specification = LibrariesSpecification.parse(
diff --git a/pkg/front_end/lib/src/api_prototype/experimental_flags_generated.dart b/pkg/front_end/lib/src/api_prototype/experimental_flags_generated.dart
index 0696d1c..bd92018b 100644
--- a/pkg/front_end/lib/src/api_prototype/experimental_flags_generated.dart
+++ b/pkg/front_end/lib/src/api_prototype/experimental_flags_generated.dart
@@ -129,6 +129,9 @@
   "fake_async": {
     ExperimentalFlag.nonNullable,
   },
+  "file": {
+    ExperimentalFlag.nonNullable,
+  },
   "fixnum": {
     ExperimentalFlag.nonNullable,
   },
@@ -138,6 +141,12 @@
   "flutter_test": {
     ExperimentalFlag.nonNullable,
   },
+  "flutter_goldens": {
+    ExperimentalFlag.nonNullable,
+  },
+  "flutter_goldens_client": {
+    ExperimentalFlag.nonNullable,
+  },
   "js": {
     ExperimentalFlag.nonNullable,
   },
@@ -153,9 +162,15 @@
   "pedantic": {
     ExperimentalFlag.nonNullable,
   },
+  "platform": {
+    ExperimentalFlag.nonNullable,
+  },
   "pool": {
     ExperimentalFlag.nonNullable,
   },
+  "process": {
+    ExperimentalFlag.nonNullable,
+  },
   "sky_engine": {
     ExperimentalFlag.nonNullable,
   },
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart
index 12cbd54..2940119 100644
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart
@@ -55,6 +55,8 @@
 import 'package:kernel/type_environment.dart' show TypeEnvironment;
 import 'package:kernel/verifier.dart' show verifyGetStaticType;
 
+import 'package:kernel/transformations/value_class.dart' as valueClass;
+
 import 'package:package_config/package_config.dart';
 
 import '../../api_prototype/file_system.dart' show FileSystem;
@@ -1086,6 +1088,12 @@
         errorOnUnevaluatedConstant: errorOnUnevaluatedConstant);
     ticker.logMs("Evaluated constants");
 
+    if (loader.target.context.options
+        .isExperimentEnabledGlobally(ExperimentalFlag.valueClass)) {
+      valueClass.transformComponent(component);
+      ticker.logMs("Lowered value classes");
+    }
+
     backendTarget.performModularTransformationsOnLibraries(
         component,
         loader.coreTypes,
diff --git a/pkg/front_end/test/fasta/testing/suite.dart b/pkg/front_end/test/fasta/testing/suite.dart
index a9a355b..99af171 100644
--- a/pkg/front_end/test/fasta/testing/suite.dart
+++ b/pkg/front_end/test/fasta/testing/suite.dart
@@ -681,6 +681,24 @@
         if (fullCompile) {
           p = await sourceTarget.buildComponent(verify: context.verify);
         }
+
+        // To avoid possible crash in mixin transformation in the transformation
+        // of the user of this linked dependency we have to transform this too.
+        // We do that now.
+        Target backendTarget = sourceTarget.backendTarget;
+        if (backendTarget is TestVmTarget) {
+          backendTarget.enabled = true;
+        }
+        try {
+          if (sourceTarget.loader.coreTypes != null) {
+            sourceTarget.runBuildTransformations();
+          }
+        } finally {
+          if (backendTarget is TestVmTarget) {
+            backendTarget.enabled = false;
+          }
+        }
+
         linkDependenciesOptions.component = p;
         List<Library> keepLibraries = new List<Library>();
         for (Library lib in p.libraries) {
@@ -696,9 +714,13 @@
     }
 
     return await CompilerContext.runWithOptions(options, (_) async {
+      Component alsoAppend = linkDependenciesOptions.component;
+      if (description.uri.pathSegments.last.endsWith(".no_link.dart")) {
+        alsoAppend = null;
+      }
       KernelTarget sourceTarget = await outlineInitialization(
           context, description, testOptions, <Uri>[description.uri],
-          alsoAppend: linkDependenciesOptions.component);
+          alsoAppend: alsoAppend);
       ValidatingInstrumentation instrumentation =
           new ValidatingInstrumentation();
       await instrumentation.loadExpectations(description.uri);
diff --git a/pkg/front_end/test/spell_checking_list_code.txt b/pkg/front_end/test/spell_checking_list_code.txt
index 341f7ce..a29800c 100644
--- a/pkg/front_end/test/spell_checking_list_code.txt
+++ b/pkg/front_end/test/spell_checking_list_code.txt
@@ -458,6 +458,7 @@
 globally
 glyph
 gn
+goldens
 googlesource
 goto
 gotos
diff --git a/pkg/front_end/test/spell_checking_list_tests.txt b/pkg/front_end/test/spell_checking_list_tests.txt
index 4a4024c..cad7625 100644
--- a/pkg/front_end/test/spell_checking_list_tests.txt
+++ b/pkg/front_end/test/spell_checking_list_tests.txt
@@ -456,6 +456,7 @@
 py
 python
 quot
+quux
 qux
 r"
 r"\s
diff --git a/pkg/front_end/testcases/general/issue41210b/issue41210.dart.outline.expect b/pkg/front_end/testcases/general/issue41210b/issue41210.dart.outline.expect
index d371a15..7c3edaa 100644
--- a/pkg/front_end/testcases/general/issue41210b/issue41210.dart.outline.expect
+++ b/pkg/front_end/testcases/general/issue41210b/issue41210.dart.outline.expect
@@ -88,7 +88,7 @@
   abstract member-signature get runtimeType() → core::Type*;
 }
 abstract class A extends core::Object implements iss::Interface /*isMixinDeclaration*/  {
-  method method(core::num* i, {core::String* s = "hello"}) → core::String*
+  method method(core::num* i, {core::String* s = #C1}) → core::String*
     ;
   abstract member-signature get _identityHashCode() → core::int*;
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
@@ -131,3 +131,7 @@
   abstract member-signature get runtimeType() → core::Type*;
   abstract forwarding-stub method method(covariant core::num* i) → core::String*;
 }
+
+constants  {
+  #C1 = "hello"
+}
diff --git a/pkg/front_end/testcases/general/with_dependencies/abstract_members_from_dill/main.dart.outline.expect b/pkg/front_end/testcases/general/with_dependencies/abstract_members_from_dill/main.dart.outline.expect
index ab86f3d..9e34fc2 100644
--- a/pkg/front_end/testcases/general/with_dependencies/abstract_members_from_dill/main.dart.outline.expect
+++ b/pkg/front_end/testcases/general/with_dependencies/abstract_members_from_dill/main.dart.outline.expect
@@ -18,7 +18,7 @@
 class A extends core::Object {
   synthetic constructor •() → mai::A*
     ;
-  @core::override
+  @#C1
   abstract method noSuchMethod(core::Invocation* invocation) → dynamic;
   abstract member-signature get _identityHashCode() → core::int*;
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
@@ -30,3 +30,7 @@
   abstract member-signature method toString() → core::String*;
   abstract member-signature get runtimeType() → core::Type*;
 }
+
+constants  {
+  #C1 = core::_Override {}
+}
diff --git a/pkg/front_end/testcases/general/with_dependencies/mixin_from_dill/mixin_from_dill.dart.outline.expect b/pkg/front_end/testcases/general/with_dependencies/mixin_from_dill/mixin_from_dill.dart.outline.expect
index 5fecce1..4d03c6d 100644
--- a/pkg/front_end/testcases/general/with_dependencies/mixin_from_dill/mixin_from_dill.dart.outline.expect
+++ b/pkg/front_end/testcases/general/with_dependencies/mixin_from_dill/mixin_from_dill.dart.outline.expect
@@ -73,10 +73,23 @@
 import self as self3;
 import "dart:core" as core;
 
-abstract class _Foo&B&D = self3::B with self3::D /*isAnonymousMixin*/  {
+abstract class _Foo&B&D extends self3::B implements self3::D /*isAnonymousMixin,isEliminatedMixin*/  {
   synthetic constructor •() → self3::_Foo&B&D*
     : super self3::B::•()
     ;
+  operator ==(dynamic dynamic) → core::bool*
+    ;
+  method x() → void
+    ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Foo extends self3::_Foo&B&D {
   synthetic constructor •() → self3::Foo*
diff --git a/pkg/front_end/testcases/general/with_dependencies/mixin_from_dill/mixin_from_dill.dart.strong.expect b/pkg/front_end/testcases/general/with_dependencies/mixin_from_dill/mixin_from_dill.dart.strong.expect
index b8e0c04..7ee0498 100644
--- a/pkg/front_end/testcases/general/with_dependencies/mixin_from_dill/mixin_from_dill.dart.strong.expect
+++ b/pkg/front_end/testcases/general/with_dependencies/mixin_from_dill/mixin_from_dill.dart.strong.expect
@@ -8,11 +8,11 @@
 
 static method main() → dynamic {
   mix::Foo* foo1 = new mix::Foo::•();
-  if(foo1.{mix::D::==}(null))
+  if(foo1.{mix::_Foo&B&D::==}(null))
     throw "what?";
-  if(!foo1.{mix::D::==}(foo1))
+  if(!foo1.{mix::_Foo&B&D::==}(foo1))
     throw "what?";
-  foo1.{mix::D::x}();
+  foo1.{mix::_Foo&B&D::x}();
   mix2::Foo* foo2 = new mix2::Foo::•();
   if(foo2.{mix2::D::==}(null))
     throw "what?";
@@ -97,10 +97,26 @@
 import self as mix;
 import "dart:core" as core;
 
-abstract class _Foo&B&D = mix::B with mix::D /*isAnonymousMixin*/  {
+abstract class _Foo&B&D extends mix::B implements mix::D /*isAnonymousMixin,isEliminatedMixin*/  {
   synthetic constructor •() → mix::_Foo&B&D*
     : super mix::B::•()
     ;
+  operator ==(dynamic dynamic) → core::bool* {
+    core::print("D.==");
+    return true;
+  }
+  method x() → void {
+    core::print("D.x");
+  }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Foo extends mix::_Foo&B&D {
   synthetic constructor •() → mix::Foo*
diff --git a/pkg/front_end/testcases/general/with_dependencies/mixin_from_dill/mixin_from_dill.dart.strong.transformed.expect b/pkg/front_end/testcases/general/with_dependencies/mixin_from_dill/mixin_from_dill.dart.strong.transformed.expect
index 15b0ec5..133d5d8 100644
--- a/pkg/front_end/testcases/general/with_dependencies/mixin_from_dill/mixin_from_dill.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/with_dependencies/mixin_from_dill/mixin_from_dill.dart.strong.transformed.expect
@@ -8,11 +8,11 @@
 
 static method main() → dynamic {
   mix::Foo* foo1 = new mix::Foo::•();
-  if(foo1.{mix::D::==}(null))
+  if(foo1.{mix::_Foo&B&D::==}(null))
     throw "what?";
-  if(!foo1.{mix::D::==}(foo1))
+  if(!foo1.{mix::_Foo&B&D::==}(foo1))
     throw "what?";
-  foo1.{mix::D::x}();
+  foo1.{mix::_Foo&B&D::x}();
   mix2::Foo* foo2 = new mix2::Foo::•();
   if(foo2.{mix2::D::==}(null))
     throw "what?";
@@ -113,10 +113,26 @@
 import self as mix;
 import "dart:core" as core;
 
-abstract class _Foo&B&D = mix::B with mix::D /*isAnonymousMixin*/  {
+abstract class _Foo&B&D extends mix::B implements mix::D /*isAnonymousMixin,isEliminatedMixin*/  {
   synthetic constructor •() → mix::_Foo&B&D*
     : super mix::B::•()
     ;
+  operator ==(dynamic dynamic) → core::bool* {
+    core::print("D.==");
+    return true;
+  }
+  method x() → void {
+    core::print("D.x");
+  }
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
 }
 class Foo extends mix::_Foo&B&D {
   synthetic constructor •() → mix::Foo*
diff --git a/pkg/front_end/testcases/general/with_dependencies/stub_or_not/link.options b/pkg/front_end/testcases/general/with_dependencies/stub_or_not/link.options
new file mode 100644
index 0000000..dae3436
--- /dev/null
+++ b/pkg/front_end/testcases/general/with_dependencies/stub_or_not/link.options
@@ -0,0 +1,2 @@
+stub_or_not_lib1.dart
+stub_or_not_lib2.dart
\ No newline at end of file
diff --git a/pkg/front_end/testcases/general/with_dependencies/stub_or_not/stub_or_not.dart b/pkg/front_end/testcases/general/with_dependencies/stub_or_not/stub_or_not.dart
new file mode 100644
index 0000000..5a443a4
--- /dev/null
+++ b/pkg/front_end/testcases/general/with_dependencies/stub_or_not/stub_or_not.dart
@@ -0,0 +1,9 @@
+// Copyright (c) 2020, 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 'stub_or_not_lib1.dart';
+
+class ProblemClass extends Foo {}
+
+main() {}
\ No newline at end of file
diff --git a/pkg/front_end/testcases/general/with_dependencies/stub_or_not/stub_or_not.dart.outline.expect b/pkg/front_end/testcases/general/with_dependencies/stub_or_not/stub_or_not.dart.outline.expect
new file mode 100644
index 0000000..35b37a6
--- /dev/null
+++ b/pkg/front_end/testcases/general/with_dependencies/stub_or_not/stub_or_not.dart.outline.expect
@@ -0,0 +1,85 @@
+library;
+import self as self;
+import "stub_or_not_lib1.dart" as stu;
+
+import "org-dartlang-testcase:///stub_or_not_lib1.dart";
+
+class ProblemClass extends stu::Foo {
+  synthetic constructor •() → self::ProblemClass*
+    ;
+}
+static method main() → dynamic
+  ;
+
+library;
+import self as stu;
+import "dart:core" as core;
+import "stub_or_not_lib2.dart" as stu2;
+
+import "org-dartlang-testcase:///stub_or_not_lib2.dart";
+
+abstract class Qux extends core::Object implements stu2::EventFileA {
+  synthetic constructor •() → stu::Qux*
+    ;
+  method handleEvent(covariant stu2::EvenFileB* entry) → void
+    ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
+}
+class EvenFileBPrime extends stu2::EvenFileB {
+  synthetic constructor •() → stu::EvenFileBPrime*
+    ;
+}
+abstract class Baz extends stu::Qux {
+  synthetic constructor •() → stu::Baz*
+    ;
+  method handleEvent(covariant stu::EvenFileBPrime* entry) → void
+    ;
+}
+abstract class Foo extends stu::Baz implements stu::Qux {
+  synthetic constructor •() → stu::Foo*
+    ;
+  abstract forwarding-stub method handleEvent(covariant stu2::EvenFileB* entry) → void;
+}
+
+library;
+import self as stu2;
+import "dart:core" as core;
+
+abstract class EventFileA extends core::Object {
+  synthetic constructor •() → stu2::EventFileA*
+    ;
+  abstract method handleEvent(stu2::EvenFileB* entry) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
+}
+class EvenFileB extends core::Object {
+  synthetic constructor •() → stu2::EvenFileB*
+    ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
+}
diff --git a/pkg/front_end/testcases/general/with_dependencies/stub_or_not/stub_or_not.dart.strong.expect b/pkg/front_end/testcases/general/with_dependencies/stub_or_not/stub_or_not.dart.strong.expect
new file mode 100644
index 0000000..e5802ab
--- /dev/null
+++ b/pkg/front_end/testcases/general/with_dependencies/stub_or_not/stub_or_not.dart.strong.expect
@@ -0,0 +1,89 @@
+library;
+import self as self;
+import "stub_or_not_lib1.dart" as stu;
+
+import "org-dartlang-testcase:///stub_or_not_lib1.dart";
+
+class ProblemClass extends stu::Foo {
+  synthetic constructor •() → self::ProblemClass*
+    : super stu::Foo::•()
+    ;
+}
+static method main() → dynamic {}
+
+library;
+import self as stu;
+import "dart:core" as core;
+import "stub_or_not_lib2.dart" as stu2;
+
+import "org-dartlang-testcase:///stub_or_not_lib2.dart";
+
+abstract class Qux extends core::Object implements stu2::EventFileA {
+  synthetic constructor •() → stu::Qux*
+    : super core::Object::•()
+    ;
+  method handleEvent(covariant stu2::EvenFileB* entry) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
+}
+class EvenFileBPrime extends stu2::EvenFileB {
+  synthetic constructor •() → stu::EvenFileBPrime*
+    : super stu2::EvenFileB::•()
+    ;
+}
+abstract class Baz extends stu::Qux {
+  synthetic constructor •() → stu::Baz*
+    : super stu::Qux::•()
+    ;
+  method handleEvent(covariant stu::EvenFileBPrime* entry) → void {}
+}
+abstract class Foo extends stu::Baz implements stu::Qux {
+  synthetic constructor •() → stu::Foo*
+    : super stu::Baz::•()
+    ;
+  abstract forwarding-stub method handleEvent(covariant stu2::EvenFileB* entry) → void;
+}
+
+library;
+import self as stu2;
+import "dart:core" as core;
+
+abstract class EventFileA extends core::Object {
+  synthetic constructor •() → stu2::EventFileA*
+    : super core::Object::•()
+    ;
+  abstract method handleEvent(stu2::EvenFileB* entry) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
+}
+class EvenFileB extends core::Object {
+  synthetic constructor •() → stu2::EvenFileB*
+    : super core::Object::•()
+    ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
+}
diff --git a/pkg/front_end/testcases/general/with_dependencies/stub_or_not/stub_or_not.dart.strong.transformed.expect b/pkg/front_end/testcases/general/with_dependencies/stub_or_not/stub_or_not.dart.strong.transformed.expect
new file mode 100644
index 0000000..e5802ab
--- /dev/null
+++ b/pkg/front_end/testcases/general/with_dependencies/stub_or_not/stub_or_not.dart.strong.transformed.expect
@@ -0,0 +1,89 @@
+library;
+import self as self;
+import "stub_or_not_lib1.dart" as stu;
+
+import "org-dartlang-testcase:///stub_or_not_lib1.dart";
+
+class ProblemClass extends stu::Foo {
+  synthetic constructor •() → self::ProblemClass*
+    : super stu::Foo::•()
+    ;
+}
+static method main() → dynamic {}
+
+library;
+import self as stu;
+import "dart:core" as core;
+import "stub_or_not_lib2.dart" as stu2;
+
+import "org-dartlang-testcase:///stub_or_not_lib2.dart";
+
+abstract class Qux extends core::Object implements stu2::EventFileA {
+  synthetic constructor •() → stu::Qux*
+    : super core::Object::•()
+    ;
+  method handleEvent(covariant stu2::EvenFileB* entry) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
+}
+class EvenFileBPrime extends stu2::EvenFileB {
+  synthetic constructor •() → stu::EvenFileBPrime*
+    : super stu2::EvenFileB::•()
+    ;
+}
+abstract class Baz extends stu::Qux {
+  synthetic constructor •() → stu::Baz*
+    : super stu::Qux::•()
+    ;
+  method handleEvent(covariant stu::EvenFileBPrime* entry) → void {}
+}
+abstract class Foo extends stu::Baz implements stu::Qux {
+  synthetic constructor •() → stu::Foo*
+    : super stu::Baz::•()
+    ;
+  abstract forwarding-stub method handleEvent(covariant stu2::EvenFileB* entry) → void;
+}
+
+library;
+import self as stu2;
+import "dart:core" as core;
+
+abstract class EventFileA extends core::Object {
+  synthetic constructor •() → stu2::EventFileA*
+    : super core::Object::•()
+    ;
+  abstract method handleEvent(stu2::EvenFileB* entry) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
+}
+class EvenFileB extends core::Object {
+  synthetic constructor •() → stu2::EvenFileB*
+    : super core::Object::•()
+    ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
+}
diff --git a/pkg/front_end/testcases/general/with_dependencies/stub_or_not/stub_or_not.dart.textual_outline.expect b/pkg/front_end/testcases/general/with_dependencies/stub_or_not/stub_or_not.dart.textual_outline.expect
new file mode 100644
index 0000000..33ce9da
--- /dev/null
+++ b/pkg/front_end/testcases/general/with_dependencies/stub_or_not/stub_or_not.dart.textual_outline.expect
@@ -0,0 +1,5 @@
+import 'stub_or_not_lib1.dart';
+
+class ProblemClass extends Foo {}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/with_dependencies/stub_or_not/stub_or_not.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/with_dependencies/stub_or_not/stub_or_not.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..33ce9da
--- /dev/null
+++ b/pkg/front_end/testcases/general/with_dependencies/stub_or_not/stub_or_not.dart.textual_outline_modelled.expect
@@ -0,0 +1,5 @@
+import 'stub_or_not_lib1.dart';
+
+class ProblemClass extends Foo {}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/with_dependencies/stub_or_not/stub_or_not.no_link.dart b/pkg/front_end/testcases/general/with_dependencies/stub_or_not/stub_or_not.no_link.dart
new file mode 100644
index 0000000..5a443a4
--- /dev/null
+++ b/pkg/front_end/testcases/general/with_dependencies/stub_or_not/stub_or_not.no_link.dart
@@ -0,0 +1,9 @@
+// Copyright (c) 2020, 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 'stub_or_not_lib1.dart';
+
+class ProblemClass extends Foo {}
+
+main() {}
\ No newline at end of file
diff --git a/pkg/front_end/testcases/general/with_dependencies/stub_or_not/stub_or_not.no_link.dart.outline.expect b/pkg/front_end/testcases/general/with_dependencies/stub_or_not/stub_or_not.no_link.dart.outline.expect
new file mode 100644
index 0000000..2d74190
--- /dev/null
+++ b/pkg/front_end/testcases/general/with_dependencies/stub_or_not/stub_or_not.no_link.dart.outline.expect
@@ -0,0 +1,87 @@
+library;
+import self as self;
+import "stub_or_not_lib1.dart" as stu;
+import "stub_or_not_lib2.dart" as stu2;
+
+import "org-dartlang-testcase:///stub_or_not_lib1.dart";
+
+class ProblemClass extends stu::Foo {
+  synthetic constructor •() → self::ProblemClass*
+    ;
+  abstract forwarding-stub method handleEvent(covariant stu2::EvenFileB* entry) → void;
+}
+static method main() → dynamic
+  ;
+
+library;
+import self as stu;
+import "dart:core" as core;
+import "stub_or_not_lib2.dart" as stu2;
+
+import "org-dartlang-testcase:///stub_or_not_lib2.dart";
+
+abstract class Qux extends core::Object implements stu2::EventFileA {
+  synthetic constructor •() → stu::Qux*
+    ;
+  method handleEvent(covariant stu2::EvenFileB* entry) → void
+    ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
+}
+class EvenFileBPrime extends stu2::EvenFileB {
+  synthetic constructor •() → stu::EvenFileBPrime*
+    ;
+}
+abstract class Baz extends stu::Qux {
+  synthetic constructor •() → stu::Baz*
+    ;
+  method handleEvent(covariant stu::EvenFileBPrime* entry) → void
+    ;
+}
+abstract class Foo extends stu::Baz implements stu::Qux {
+  synthetic constructor •() → stu::Foo*
+    ;
+  abstract forwarding-stub method handleEvent(covariant stu2::EvenFileB* entry) → void;
+}
+
+library;
+import self as stu2;
+import "dart:core" as core;
+
+abstract class EventFileA extends core::Object {
+  synthetic constructor •() → stu2::EventFileA*
+    ;
+  abstract method handleEvent(stu2::EvenFileB* entry) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
+}
+class EvenFileB extends core::Object {
+  synthetic constructor •() → stu2::EvenFileB*
+    ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
+}
diff --git a/pkg/front_end/testcases/general/with_dependencies/stub_or_not/stub_or_not.no_link.dart.strong.expect b/pkg/front_end/testcases/general/with_dependencies/stub_or_not/stub_or_not.no_link.dart.strong.expect
new file mode 100644
index 0000000..077097a
--- /dev/null
+++ b/pkg/front_end/testcases/general/with_dependencies/stub_or_not/stub_or_not.no_link.dart.strong.expect
@@ -0,0 +1,91 @@
+library;
+import self as self;
+import "stub_or_not_lib1.dart" as stu;
+import "stub_or_not_lib2.dart" as stu2;
+
+import "org-dartlang-testcase:///stub_or_not_lib1.dart";
+
+class ProblemClass extends stu::Foo {
+  synthetic constructor •() → self::ProblemClass*
+    : super stu::Foo::•()
+    ;
+  abstract forwarding-stub method handleEvent(covariant stu2::EvenFileB* entry) → void;
+}
+static method main() → dynamic {}
+
+library;
+import self as stu;
+import "dart:core" as core;
+import "stub_or_not_lib2.dart" as stu2;
+
+import "org-dartlang-testcase:///stub_or_not_lib2.dart";
+
+abstract class Qux extends core::Object implements stu2::EventFileA {
+  synthetic constructor •() → stu::Qux*
+    : super core::Object::•()
+    ;
+  method handleEvent(covariant stu2::EvenFileB* entry) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
+}
+class EvenFileBPrime extends stu2::EvenFileB {
+  synthetic constructor •() → stu::EvenFileBPrime*
+    : super stu2::EvenFileB::•()
+    ;
+}
+abstract class Baz extends stu::Qux {
+  synthetic constructor •() → stu::Baz*
+    : super stu::Qux::•()
+    ;
+  method handleEvent(covariant stu::EvenFileBPrime* entry) → void {}
+}
+abstract class Foo extends stu::Baz implements stu::Qux {
+  synthetic constructor •() → stu::Foo*
+    : super stu::Baz::•()
+    ;
+  abstract forwarding-stub method handleEvent(covariant stu2::EvenFileB* entry) → void;
+}
+
+library;
+import self as stu2;
+import "dart:core" as core;
+
+abstract class EventFileA extends core::Object {
+  synthetic constructor •() → stu2::EventFileA*
+    : super core::Object::•()
+    ;
+  abstract method handleEvent(stu2::EvenFileB* entry) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
+}
+class EvenFileB extends core::Object {
+  synthetic constructor •() → stu2::EvenFileB*
+    : super core::Object::•()
+    ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
+}
diff --git a/pkg/front_end/testcases/general/with_dependencies/stub_or_not/stub_or_not.no_link.dart.strong.transformed.expect b/pkg/front_end/testcases/general/with_dependencies/stub_or_not/stub_or_not.no_link.dart.strong.transformed.expect
new file mode 100644
index 0000000..077097a
--- /dev/null
+++ b/pkg/front_end/testcases/general/with_dependencies/stub_or_not/stub_or_not.no_link.dart.strong.transformed.expect
@@ -0,0 +1,91 @@
+library;
+import self as self;
+import "stub_or_not_lib1.dart" as stu;
+import "stub_or_not_lib2.dart" as stu2;
+
+import "org-dartlang-testcase:///stub_or_not_lib1.dart";
+
+class ProblemClass extends stu::Foo {
+  synthetic constructor •() → self::ProblemClass*
+    : super stu::Foo::•()
+    ;
+  abstract forwarding-stub method handleEvent(covariant stu2::EvenFileB* entry) → void;
+}
+static method main() → dynamic {}
+
+library;
+import self as stu;
+import "dart:core" as core;
+import "stub_or_not_lib2.dart" as stu2;
+
+import "org-dartlang-testcase:///stub_or_not_lib2.dart";
+
+abstract class Qux extends core::Object implements stu2::EventFileA {
+  synthetic constructor •() → stu::Qux*
+    : super core::Object::•()
+    ;
+  method handleEvent(covariant stu2::EvenFileB* entry) → void {}
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
+}
+class EvenFileBPrime extends stu2::EvenFileB {
+  synthetic constructor •() → stu::EvenFileBPrime*
+    : super stu2::EvenFileB::•()
+    ;
+}
+abstract class Baz extends stu::Qux {
+  synthetic constructor •() → stu::Baz*
+    : super stu::Qux::•()
+    ;
+  method handleEvent(covariant stu::EvenFileBPrime* entry) → void {}
+}
+abstract class Foo extends stu::Baz implements stu::Qux {
+  synthetic constructor •() → stu::Foo*
+    : super stu::Baz::•()
+    ;
+  abstract forwarding-stub method handleEvent(covariant stu2::EvenFileB* entry) → void;
+}
+
+library;
+import self as stu2;
+import "dart:core" as core;
+
+abstract class EventFileA extends core::Object {
+  synthetic constructor •() → stu2::EventFileA*
+    : super core::Object::•()
+    ;
+  abstract method handleEvent(stu2::EvenFileB* entry) → void;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
+}
+class EvenFileB extends core::Object {
+  synthetic constructor •() → stu2::EvenFileB*
+    : super core::Object::•()
+    ;
+  abstract member-signature get _identityHashCode() → core::int*;
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*;
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*;
+  abstract member-signature operator ==(dynamic other) → core::bool*;
+  abstract member-signature get hashCode() → core::int*;
+  abstract member-signature method toString() → core::String*;
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic;
+  abstract member-signature get runtimeType() → core::Type*;
+}
diff --git a/pkg/front_end/testcases/general/with_dependencies/stub_or_not/stub_or_not.no_link.dart.textual_outline.expect b/pkg/front_end/testcases/general/with_dependencies/stub_or_not/stub_or_not.no_link.dart.textual_outline.expect
new file mode 100644
index 0000000..33ce9da
--- /dev/null
+++ b/pkg/front_end/testcases/general/with_dependencies/stub_or_not/stub_or_not.no_link.dart.textual_outline.expect
@@ -0,0 +1,5 @@
+import 'stub_or_not_lib1.dart';
+
+class ProblemClass extends Foo {}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/with_dependencies/stub_or_not/stub_or_not.no_link.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/with_dependencies/stub_or_not/stub_or_not.no_link.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..33ce9da
--- /dev/null
+++ b/pkg/front_end/testcases/general/with_dependencies/stub_or_not/stub_or_not.no_link.dart.textual_outline_modelled.expect
@@ -0,0 +1,5 @@
+import 'stub_or_not_lib1.dart';
+
+class ProblemClass extends Foo {}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/with_dependencies/stub_or_not/stub_or_not_lib1.dart b/pkg/front_end/testcases/general/with_dependencies/stub_or_not/stub_or_not_lib1.dart
new file mode 100644
index 0000000..ae62042
--- /dev/null
+++ b/pkg/front_end/testcases/general/with_dependencies/stub_or_not/stub_or_not_lib1.dart
@@ -0,0 +1,17 @@
+// Copyright (c) 2020, 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 'stub_or_not_lib2.dart';
+
+abstract class Qux implements EventFileA {
+  void handleEvent(covariant EvenFileB entry) {}
+}
+
+class EvenFileBPrime extends EvenFileB {}
+
+abstract class Baz extends Qux {
+  void handleEvent(EvenFileBPrime entry) {}
+}
+
+abstract class Foo extends Baz implements Qux {}
diff --git a/pkg/front_end/testcases/general/with_dependencies/stub_or_not/stub_or_not_lib2.dart b/pkg/front_end/testcases/general/with_dependencies/stub_or_not/stub_or_not_lib2.dart
new file mode 100644
index 0000000..9a30c0e
--- /dev/null
+++ b/pkg/front_end/testcases/general/with_dependencies/stub_or_not/stub_or_not_lib2.dart
@@ -0,0 +1,9 @@
+// Copyright (c) 2020, 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.
+
+abstract class EventFileA {
+  void handleEvent(EvenFileB entry);
+}
+
+class EvenFileB {}
diff --git a/pkg/front_end/testcases/nnbd/from_agnostic/from_agnostic.dart.outline.expect b/pkg/front_end/testcases/nnbd/from_agnostic/from_agnostic.dart.outline.expect
index 9aa640b..decf707 100644
--- a/pkg/front_end/testcases/nnbd/from_agnostic/from_agnostic.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/from_agnostic/from_agnostic.dart.outline.expect
@@ -17,5 +17,10 @@
 import self as fro;
 import "dart:core" as core;
 
-static const field core::List<core::int> a = const <core::int>[];
-static const field core::List<core::int?> b = const <core::int?>[];
+static const field core::List<core::int> a = #C1;
+static const field core::List<core::int?> b = #C2;
+
+constants  {
+  #C1 = <core::int>[]
+  #C2 = <core::int?>[]
+}
diff --git a/pkg/test_runner/lib/src/fuchsia.dart b/pkg/test_runner/lib/src/fuchsia.dart
index 004350b..874ded5 100644
--- a/pkg/test_runner/lib/src/fuchsia.dart
+++ b/pkg/test_runner/lib/src/fuchsia.dart
@@ -28,10 +28,11 @@
   Process _server;
   String _deviceName;
 
-  static Future<void> publishPackage(String buildDir, String mode) async {
+  static Future<void> publishPackage(
+      int emuCpus, String buildDir, String mode) async {
     if (_inst == null) {
       _inst = FuchsiaEmulator();
-      await _inst._start();
+      await _inst._start(emuCpus);
     }
     await _inst._publishPackage(buildDir, mode);
   }
@@ -47,11 +48,18 @@
             arg.replaceAll(Repository.uri.toFilePath(), '/pkg/data/')));
   }
 
-  Future<void> _start() async {
+  Future<void> _start(int emuCpus) async {
     // Start the emulator.
-    DebugLogger.info('Starting Fuchsia emulator');
-    _emu = await Process.start(
-        'xvfb-run', [femuTool, '--image', 'qemu-x64', '-N', '--headless']);
+    DebugLogger.info('Starting Fuchsia emulator with $emuCpus CPUs');
+    _emu = await Process.start('xvfb-run', [
+      femuTool,
+      '--image',
+      'qemu-x64',
+      '-N',
+      '--headless',
+      '-s',
+      '$emuCpus'
+    ]);
 
     // Wait until the emulator is ready and has a valid device name.
     var deviceNameFuture = Completer<String>();
diff --git a/pkg/test_runner/lib/src/test_configurations.dart b/pkg/test_runner/lib/src/test_configurations.dart
index 93de210..32201e8 100644
--- a/pkg/test_runner/lib/src/test_configurations.dart
+++ b/pkg/test_runner/lib/src/test_configurations.dart
@@ -155,7 +155,7 @@
     }
 
     if (configuration.system == System.fuchsia) {
-      await FuchsiaEmulator.publishPackage(
+      await FuchsiaEmulator.publishPackage(configuration.taskCount,
           configuration.buildDirectory, configuration.mode.name);
     }
   }
diff --git a/pkg/testing/lib/src/analyze.dart b/pkg/testing/lib/src/analyze.dart
index fd4d17f..0faf99f 100644
--- a/pkg/testing/lib/src/analyze.dart
+++ b/pkg/testing/lib/src/analyze.dart
@@ -218,7 +218,7 @@
   List<String> arguments = <String>[
     "--packages=${toFilePath(packages)}",
     "--format=machine",
-    "--dart-sdk=${Uri.base.resolve('sdk/').toFilePath()}",
+    "--dart-sdk=${_findSdkPath()}",
   ];
   if (analysisOptions != null) {
     arguments.add("--options=${toFilePath(analysisOptions)}");
@@ -274,6 +274,18 @@
   }
 }
 
+String _findSdkPath() {
+  var executableUri = Uri.file(Platform.executable);
+  if (File.fromUri(executableUri.resolve('../version')).existsSync()) {
+    return executableUri.resolve('..').toFilePath();
+  } else if (File.fromUri(executableUri.resolve('dart-sdk/version'))
+      .existsSync()) {
+    return executableUri.resolve('dart-sdk').toFilePath();
+  } else {
+    throw StateError('Cannot find dart-sdk for $executableUri');
+  }
+}
+
 Future<String> git(String command, Iterable<String> arguments,
     {String workingDirectory}) async {
   ProcessResult result = await Process.run(
diff --git a/pkg/vm/lib/transformations/type_flow/transformer.dart b/pkg/vm/lib/transformations/type_flow/transformer.dart
index 88c865e..14ddeb8 100644
--- a/pkg/vm/lib/transformations/type_flow/transformer.dart
+++ b/pkg/vm/lib/transformations/type_flow/transformer.dart
@@ -1698,6 +1698,8 @@
     final namedParameters = <VariableDeclaration>[];
     for (final param in func.namedParameters) {
       if (alwaysPassedOptionals.contains(param.name)) {
+        // Make sure to clear the isRequired flag in case it was set.
+        param.isRequired = false;
         namedPositionals.add(param..initializer = null);
       } else {
         namedParameters.add(param);
diff --git a/pkg/vm_snapshot_analysis/CHANGELOG.md b/pkg/vm_snapshot_analysis/CHANGELOG.md
index 4eb142c..2bfcd15 100644
--- a/pkg/vm_snapshot_analysis/CHANGELOG.md
+++ b/pkg/vm_snapshot_analysis/CHANGELOG.md
@@ -1,6 +1,7 @@
 # Changelog
 
-## 0.5.1-dev.1
+## 0.5.2
+- Add support for package paths that look like `package:foo.bar.baz/src/foobar.dart`
 - Move `commands` back to lib.
 
 ## 0.5.0+1
diff --git a/pkg/vm_snapshot_analysis/lib/src/commands/summary.dart b/pkg/vm_snapshot_analysis/lib/src/commands/summary.dart
index 1851f5e..c45cfd0 100644
--- a/pkg/vm_snapshot_analysis/lib/src/commands/summary.dart
+++ b/pkg/vm_snapshot_analysis/lib/src/commands/summary.dart
@@ -168,7 +168,7 @@
   if (traceJson != null &&
       (granularity == HistogramType.byLibrary ||
           granularity == HistogramType.byPackage)) {
-    final traceJsonRaw = loadJsonFromFile(traceJson);
+    final traceJsonRaw = await loadJsonFromFile(traceJson);
     var callGraph = loadTrace(traceJsonRaw);
 
     // Convert call graph into the approximate dependency graph, dropping any
diff --git a/pkg/vm_snapshot_analysis/lib/treemap.dart b/pkg/vm_snapshot_analysis/lib/treemap.dart
index 479876a..68103f3 100644
--- a/pkg/vm_snapshot_analysis/lib/treemap.dart
+++ b/pkg/vm_snapshot_analysis/lib/treemap.dart
@@ -10,6 +10,7 @@
 import 'package:vm_snapshot_analysis/program_info.dart';
 import 'package:vm_snapshot_analysis/instruction_sizes.dart'
     as instruction_sizes;
+import 'package:vm_snapshot_analysis/utils.dart';
 import 'package:vm_snapshot_analysis/v8_profile.dart' as v8_profile;
 
 /// Specifies the granularity at which snapshot nodes are represented when
@@ -131,8 +132,15 @@
       return;
     }
 
-    path = path != '' ? '$path/${node.name}' : node.name;
-    _addSymbol(root, path, '<self>', node.size);
+    // Don't add package node names to the path because nested library nodes
+    // already contain package name.
+    if (node.type == NodeType.packageNode) {
+      _addSymbol(root, node.name, '<self>', node.size);
+    } else {
+      path = path != '' ? '$path/${node.name}' : node.name;
+      _addSymbol(root, path, '<self>', node.size);
+    }
+
     for (var child in node.children.values) {
       recurse(child, path, root, format);
     }
@@ -227,7 +235,8 @@
   var node = root;
   var depth = 0;
   if (path != '') {
-    for (var part in path.split('/')) {
+    final parts = partsForPath(path);
+    for (var part in parts) {
       node = _addChild(node, kindPath, part);
       depth++;
     }
diff --git a/pkg/vm_snapshot_analysis/lib/utils.dart b/pkg/vm_snapshot_analysis/lib/utils.dart
index 2023833..c226dad 100644
--- a/pkg/vm_snapshot_analysis/lib/utils.dart
+++ b/pkg/vm_snapshot_analysis/lib/utils.dart
@@ -108,3 +108,12 @@
   }
   print('Total: ${totalSize} bytes');
 }
+
+List<String> partsForPath(String path) {
+  final parts = path.split('/');
+  if (parts.first.startsWith('package:')) {
+    // Convert dot separated package name into a path from which this package originated.
+    parts.replaceRange(0, 1, parts.first.split('.'));
+  }
+  return parts;
+}
diff --git a/pkg/vm_snapshot_analysis/pubspec.yaml b/pkg/vm_snapshot_analysis/pubspec.yaml
index 67f347e..66e7a37 100644
--- a/pkg/vm_snapshot_analysis/pubspec.yaml
+++ b/pkg/vm_snapshot_analysis/pubspec.yaml
@@ -1,6 +1,6 @@
 name: vm_snapshot_analysis
 description: Utilities for analysing AOT snapshot size.
-version: 0.5.1-dev.1
+version: 0.5.2
 
 homepage: https://github.com/dart-lang/sdk/tree/master/pkg/vm_snapshot_analysis
 
diff --git a/pkg/vm_snapshot_analysis/test/instruction_sizes_test.dart b/pkg/vm_snapshot_analysis/test/instruction_sizes_test.dart
index fb15baf..c5be237 100644
--- a/pkg/vm_snapshot_analysis/test/instruction_sizes_test.dart
+++ b/pkg/vm_snapshot_analysis/test/instruction_sizes_test.dart
@@ -2,6 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
+import 'dart:convert';
 import 'dart:io';
 
 import 'package:test/test.dart';
@@ -9,6 +10,7 @@
 import 'package:vm_snapshot_analysis/instruction_sizes.dart'
     as instruction_sizes;
 import 'package:vm_snapshot_analysis/program_info.dart';
+import 'package:vm_snapshot_analysis/treemap.dart';
 import 'package:vm_snapshot_analysis/utils.dart';
 
 import 'utils.dart';
@@ -641,6 +643,40 @@
         });
       });
     });
+
+    test('treemap', () async {
+      await withV8Profile('treemap', testSource, (profileJson) async {
+        final infoJson = await loadJson(File(profileJson));
+        final info = await loadProgramInfoFromJson(infoJson,
+            collapseAnonymousClosures: true);
+        final treemap = treemapFromInfo(info);
+
+        List<Map<String, dynamic>> childrenOf(Map<String, dynamic> node) =>
+            (node['children'] as List).cast();
+
+        String nameOf(Map<String, dynamic> node) => node['n'];
+
+        Map<String, dynamic> findChild(Map<String, dynamic> node, String name) {
+          return childrenOf(node)
+              .firstWhere((child) => nameOf(child) == name, orElse: () => null);
+        }
+
+        Set<String> childrenNames(Map<String, dynamic> node) {
+          return childrenOf(node).map(nameOf).toSet();
+        }
+
+        // Verify that we don't include package names twice into paths
+        // while building the treemap.
+        if (Platform.isWindows) {
+          // Note: in Windows we don't consider main.dart part of package:input
+          // for some reason.
+          expect(findChild(treemap, 'package:input/input.dart'), isNotNull);
+        } else {
+          expect(childrenNames(findChild(treemap, 'package:input')),
+              equals({'<self>', 'main.dart', 'input.dart'}));
+        }
+      });
+    });
   });
 }
 
diff --git a/pkg/vm_snapshot_analysis/test/utils_test.dart b/pkg/vm_snapshot_analysis/test/utils_test.dart
new file mode 100644
index 0000000..338b0b4
--- /dev/null
+++ b/pkg/vm_snapshot_analysis/test/utils_test.dart
@@ -0,0 +1,73 @@
+// Copyright (c) 2020, 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:test/test.dart';
+
+import 'package:vm_snapshot_analysis/utils.dart';
+
+void main() async {
+  group('utils', () {
+    test('partsForPath', () async {
+      expect(partsForPath('@shared'), equals(['@shared']));
+      expect(
+        partsForPath('dart:async/_Future'),
+        equals(['dart:async', '_Future']),
+      );
+      expect(
+        partsForPath('dart:typed_data/_Int32x4/&'),
+        equals(['dart:typed_data', '_Int32x4', '&']),
+      );
+      expect(
+        partsForPath('package:foo/bar/baz/bop.dart'),
+        equals(['package:foo', 'bar', 'baz', 'bop.dart']),
+      );
+      expect(
+        partsForPath('package:foo.bar.baz/src/foobar/foobaz'),
+        equals(['package:foo', 'bar', 'baz', 'src', 'foobar', 'foobaz']),
+      );
+      expect(
+        partsForPath('package:foo.bar.baz/src/foobar/foobaz.dart/::/_method'),
+        equals([
+          'package:foo',
+          'bar',
+          'baz',
+          'src',
+          'foobar',
+          'foobaz.dart',
+          '::',
+          '_method',
+        ]),
+      );
+
+      expect(
+        partsForPath('package:foo.bar.baz.proto/model.pb.dart'),
+        equals([
+          'package:foo',
+          'bar',
+          'baz',
+          'proto',
+          'model.pb.dart',
+        ]),
+      );
+      expect(
+        partsForPath(
+            'package:a.b.c.d.e.f/src/page/controller.dart/PageController/new PageController./<anonymous closure @2770>'),
+        equals([
+          'package:a',
+          'b',
+          'c',
+          'd',
+          'e',
+          'f',
+          'src',
+          'page',
+          'controller.dart',
+          'PageController',
+          'new PageController.',
+          '<anonymous closure @2770>',
+        ]),
+      );
+    });
+  });
+}
diff --git a/runtime/bin/eventhandler_fuchsia.cc b/runtime/bin/eventhandler_fuchsia.cc
index d1171db..8394deb 100644
--- a/runtime/bin/eventhandler_fuchsia.cc
+++ b/runtime/bin/eventhandler_fuchsia.cc
@@ -398,7 +398,7 @@
     RemoveFromPort(port_handle_, di);
   } else if ((old_mask == 0) && (new_mask != 0)) {
     AddToPort(port_handle_, di);
-  } else if ((old_mask != 0) && (new_mask != 0) && (old_mask != new_mask)) {
+  } else if ((old_mask != 0) && (new_mask != 0)) {
     ASSERT(!di->IsListeningSocket());
     RemoveFromPort(port_handle_, di);
     AddToPort(port_handle_, di);
diff --git a/runtime/bin/file_fuchsia.cc b/runtime/bin/file_fuchsia.cc
index e2e87d8..d1918b0 100644
--- a/runtime/bin/file_fuchsia.cc
+++ b/runtime/bin/file_fuchsia.cc
@@ -9,7 +9,6 @@
 
 #include <errno.h>           // NOLINT
 #include <fcntl.h>           // NOLINT
-#include <lib/fdio/fdio.h>   // NOLINT
 #include <lib/fdio/namespace.h>  // NOLINT
 #include <libgen.h>          // NOLINT
 #include <sys/mman.h>        // NOLINT
@@ -52,10 +51,8 @@
 void File::Close() {
   ASSERT(handle_->fd() >= 0);
   if (handle_->fd() == STDOUT_FILENO) {
-    // If stdout, redirect fd to Fuchsia's equivalent of /dev/null.
-    auto* null_fdio = fdio_null_create();
-    ASSERT(null_fdio != nullptr);
-    int null_fd = NO_RETRY_EXPECTED(fdio_bind_to_fd(null_fdio, -1, 0));
+    // If stdout, redirect fd to /dev/null.
+    int null_fd = NO_RETRY_EXPECTED(open("/dev/null", O_WRONLY));
     ASSERT(null_fd >= 0);
     VOID_NO_RETRY_EXPECTED(dup2(null_fd, handle_->fd()));
     VOID_NO_RETRY_EXPECTED(close(null_fd));
diff --git a/runtime/bin/loader.cc b/runtime/bin/loader.cc
index a058ebb..9f62982 100644
--- a/runtime/bin/loader.cc
+++ b/runtime/bin/loader.cc
@@ -138,16 +138,11 @@
   return Dart_True();
 }
 
-#if defined(DART_PRECOMPILED_RUNTIME)
-Dart_Handle Loader::LibraryTagHandler(Dart_LibraryTag tag,
-                                      Dart_Handle library,
-                                      Dart_Handle url) {
-  return Dart_Null();
-}
-#else
+#if !defined(DART_PRECOMPILED_RUNTIME)
 static void MallocFinalizer(void* isolate_callback_data, void* peer) {
   free(peer);
 }
+#endif
 
 Dart_Handle Loader::LibraryTagHandler(Dart_LibraryTag tag,
                                       Dart_Handle library,
@@ -174,6 +169,7 @@
     }
     return Dart_DefaultCanonicalizeUrl(library_url, url);
   }
+#if !defined(DART_PRECOMPILED_RUNTIME)
   if (tag == Dart_kKernelTag) {
     uint8_t* kernel_buffer = NULL;
     intptr_t kernel_buffer_size = 0;
@@ -216,8 +212,10 @@
     }
   }
   return DartUtils::NewError("Invalid tag : %d '%s'", tag, url_string);
-}
+#else   // !defined(DART_PRECOMPILED_RUNTIME)
+  return DartUtils::NewError("Unimplemented tag : %d '%s'", tag, url_string);
 #endif  // !defined(DART_PRECOMPILED_RUNTIME)
+}
 
 Dart_Handle Loader::DeferredLoadHandler(intptr_t loading_unit_id) {
   // A synchronous implementation. An asynchronous implementation would be
diff --git a/runtime/bin/main.cc b/runtime/bin/main.cc
index 438aae4..5f9c5e5 100644
--- a/runtime/bin/main.cc
+++ b/runtime/bin/main.cc
@@ -221,10 +221,8 @@
   if (Dart_IsError(result)) goto failed;
 
   if (isolate_run_app_snapshot) {
-    if (Dart_IsVMFlagSet("support_service") || !Dart_IsPrecompiledRuntime()) {
-      result = Loader::InitForSnapshot(script_uri, isolate_data);
-      if (Dart_IsError(result)) goto failed;
-    }
+    result = Loader::InitForSnapshot(script_uri, isolate_data);
+    if (Dart_IsError(result)) goto failed;
   } else {
     result = DartUtils::ResolveScript(Dart_NewStringFromCString(script_uri));
     if (Dart_IsError(result)) return result != nullptr;
@@ -333,10 +331,8 @@
   }
 
   if (isolate_run_app_snapshot) {
-    if (Dart_IsVMFlagSet("support_service") || !Dart_IsPrecompiledRuntime()) {
-      Dart_Handle result = Loader::InitForSnapshot(script_uri, isolate_data);
-      CHECK_RESULT(result);
-    }
+    Dart_Handle result = Loader::InitForSnapshot(script_uri, isolate_data);
+    CHECK_RESULT(result);
 #if !defined(DART_PRECOMPILED_RUNTIME)
     if (is_main_isolate) {
       // Find the canonical uri of the app snapshot. We'll use this to decide if
diff --git a/runtime/lib/isolate.cc b/runtime/lib/isolate.cc
index 4ed6bfe..b33315f 100644
--- a/runtime/lib/isolate.cc
+++ b/runtime/lib/isolate.cc
@@ -502,16 +502,6 @@
   GET_NATIVE_ARGUMENT(String, packageConfig, arguments->NativeArgAt(10));
   GET_NATIVE_ARGUMENT(String, debugName, arguments->NativeArgAt(11));
 
-  if (Dart::vm_snapshot_kind() == Snapshot::kFullAOT) {
-    const Array& args = Array::Handle(Array::New(1));
-    args.SetAt(
-        0,
-        String::Handle(String::New(
-            "Isolate.spawnUri is not supported when using AOT compilation")));
-    Exceptions::ThrowByType(Exceptions::kUnsupported, args);
-    UNREACHABLE();
-  }
-
   bool fatal_errors = fatalErrors.IsNull() ? true : fatalErrors.value();
   Dart_Port on_exit_port = onExit.IsNull() ? ILLEGAL_PORT : onExit.Id();
   Dart_Port on_error_port = onError.IsNull() ? ILLEGAL_PORT : onError.Id();
diff --git a/runtime/observatory/lib/app.dart b/runtime/observatory/lib/app.dart
index f096ad8..ee1640b 100644
--- a/runtime/observatory/lib/app.dart
+++ b/runtime/observatory/lib/app.dart
@@ -28,4 +28,3 @@
 part 'src/app/page.dart';
 part 'src/app/settings.dart';
 part 'src/app/view_model.dart';
-part 'src/app/analytics.dart';
diff --git a/runtime/observatory/lib/src/app/analytics.dart b/runtime/observatory/lib/src/app/analytics.dart
deleted file mode 100644
index a34c2da..0000000
--- a/runtime/observatory/lib/src/app/analytics.dart
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright (c) 2015, 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.
-
-part of app;
-
-// TODO(eernst): Use 'bool.fromEnvironment' below when possible;
-// for now we use a dual `defaultValue` rewrite.
-const _obsVer = (String.fromEnvironment('OBS_VER', defaultValue: '1') ==
-        String.fromEnvironment('OBS_VER', defaultValue: '2'))
-    ? String.fromEnvironment('OBS_VER')
-    : null;
-
-class Analytics {
-  static final _UA = 'UA-26406144-17';
-  static final _name = 'Observatory';
-  static final _version = _obsVer;
-  static final _googleAnalytics = new AnalyticsHtml(_UA, _name, _version);
-
-  static initialize() {
-    // We only send screen views. This is allowed without user permission.
-    // Note, before flipping this to be true we need a UI to allow users to
-    // control this.
-    _googleAnalytics.analyticsOpt = AnalyticsOpt.optOut;
-  }
-
-  /// Called whenever an Observatory page is viewed.
-  static Future reportPageView(Uri uri) {
-    // Only report analytics when running in JavaScript.
-    if (Utils.runningInJavaScript()) {
-      // The screen name is the uri's path. e.g. inspect, profile.
-      final screenName = uri.path;
-      return _googleAnalytics.sendScreenView(screenName);
-    } else {
-      return new Future.value(null);
-    }
-  }
-}
diff --git a/runtime/observatory/lib/src/app/application.dart b/runtime/observatory/lib/src/app/application.dart
index d0fb87c..768c3b4 100644
--- a/runtime/observatory/lib/src/app/application.dart
+++ b/runtime/observatory/lib/src/app/application.dart
@@ -131,7 +131,6 @@
     assert(app == null);
     app = this;
     _registerPages();
-    Analytics.initialize();
     // Visit the current page.
     locationManager._visit();
   }
diff --git a/runtime/observatory/lib/src/app/page.dart b/runtime/observatory/lib/src/app/page.dart
index e034bf9..a366acf 100644
--- a/runtime/observatory/lib/src/app/page.dart
+++ b/runtime/observatory/lib/src/app/page.dart
@@ -73,7 +73,6 @@
   void visit(Uri uri, Map internalArguments) {
     this.internalArguments.clear();
     this.internalArguments.addAll(internalArguments);
-    Analytics.reportPageView(uri);
     _visit(uri);
   }
 
diff --git a/runtime/observatory/observatory_sources.gni b/runtime/observatory/observatory_sources.gni
index 24e17ed..e78a449 100644
--- a/runtime/observatory/observatory_sources.gni
+++ b/runtime/observatory/observatory_sources.gni
@@ -21,7 +21,6 @@
   "lib/service_html.dart",
   "lib/service_io.dart",
   "lib/src/allocation_profile/allocation_profile.dart",
-  "lib/src/app/analytics.dart",
   "lib/src/app/application.dart",
   "lib/src/app/location_manager.dart",
   "lib/src/app/notification.dart",
diff --git a/runtime/tests/vm/dart/appjit_spawnuri_test.dart b/runtime/tests/vm/dart/appjit_spawnuri_test.dart
deleted file mode 100644
index 88ea2fc..0000000
--- a/runtime/tests/vm/dart/appjit_spawnuri_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2020, 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.
-
-// Verify that using spawnUri to spawn an isolate from app-jit snapshot works.
-
-import 'dart:io';
-import 'dart:isolate';
-
-import 'snapshot_test_helper.dart';
-
-Future<void> main() =>
-    runAppJitTest(Platform.script.resolve('appjit_spawnuri_test_body.dart'),
-        runSnapshot: (snapshotPath) async {
-      final exitPort = ReceivePort();
-      final messagePort = ReceivePort();
-      await Isolate.spawnUri(Uri.file(snapshotPath), [], messagePort.sendPort,
-          onExit: exitPort.sendPort);
-      final result = await Future.wait([messagePort.first, exitPort.first]);
-      print('DONE (${result[0]})');
-      return Result('Isolate.spawnUri(${Uri.file(snapshotPath)})',
-          ProcessResult(0, 0, result[0], ''));
-    });
diff --git a/runtime/tests/vm/dart/appjit_spawnuri_test_body.dart b/runtime/tests/vm/dart/appjit_spawnuri_test_body.dart
deleted file mode 100644
index ce193aa..0000000
--- a/runtime/tests/vm/dart/appjit_spawnuri_test_body.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2020, 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.
-
-// Verify that using spawnUri to spawn an isolate from app-jit snapshot works.
-
-import 'dart:isolate';
-
-import 'package:expect/expect.dart';
-
-int computation(int n) =>
-    List.generate(n, (i) => i == 0 ? 1 : 0).fold(0, (a, b) => a + b);
-
-Future<void> main(List<String> args, [dynamic sendPort]) async {
-  final isTraining = args.contains('--train');
-
-  var result = 0;
-  for (var i = 0; i < 1000; i++) {
-    result += computation(i);
-  }
-  Expect.equals(999, result);
-  if (isTraining) {
-    print('OK(Trained)');
-  } else {
-    (sendPort as SendPort).send('OK(Run)');
-  }
-}
diff --git a/runtime/tests/vm/dart/spawnuri_snapshot_test.dart b/runtime/tests/vm/dart/spawnuri_snapshot_test.dart
new file mode 100644
index 0000000..f0ed02f
--- /dev/null
+++ b/runtime/tests/vm/dart/spawnuri_snapshot_test.dart
@@ -0,0 +1,34 @@
+// Copyright (c) 2020, 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.
+
+// Check spawnUri accepts any program format that `dart` accepts. Currently this
+// is source, kernel, AppJIT (blob container) and AppAOT (ELF).
+
+import "dart:isolate";
+import "dart:io";
+
+import "package:expect/expect.dart";
+
+int fib(int n) {
+  if (n <= 1) return 1;
+  return fib(n - 1) + fib(n - 2);
+}
+
+main(List<String> args, [dynamic sendPort]) {
+  if (sendPort == null) {
+    print("Parent start");
+    var port = new RawReceivePort();
+    port.handler = (result) {
+      Expect.equals(14930352, result);
+      port.close();
+      print("Parent end");
+    };
+    print("Spawn ${Platform.script}");
+    Isolate.spawnUri(Platform.script, <String>[], port.sendPort);
+  } else {
+    print("Child start");
+    sendPort.send(fib(35));
+    print("Child end");
+  }
+}
diff --git a/runtime/tests/vm/dart_2/appjit_spawnuri_test.dart b/runtime/tests/vm/dart_2/appjit_spawnuri_test.dart
deleted file mode 100644
index 88ea2fc..0000000
--- a/runtime/tests/vm/dart_2/appjit_spawnuri_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2020, 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.
-
-// Verify that using spawnUri to spawn an isolate from app-jit snapshot works.
-
-import 'dart:io';
-import 'dart:isolate';
-
-import 'snapshot_test_helper.dart';
-
-Future<void> main() =>
-    runAppJitTest(Platform.script.resolve('appjit_spawnuri_test_body.dart'),
-        runSnapshot: (snapshotPath) async {
-      final exitPort = ReceivePort();
-      final messagePort = ReceivePort();
-      await Isolate.spawnUri(Uri.file(snapshotPath), [], messagePort.sendPort,
-          onExit: exitPort.sendPort);
-      final result = await Future.wait([messagePort.first, exitPort.first]);
-      print('DONE (${result[0]})');
-      return Result('Isolate.spawnUri(${Uri.file(snapshotPath)})',
-          ProcessResult(0, 0, result[0], ''));
-    });
diff --git a/runtime/tests/vm/dart_2/appjit_spawnuri_test_body.dart b/runtime/tests/vm/dart_2/appjit_spawnuri_test_body.dart
deleted file mode 100644
index ce193aa..0000000
--- a/runtime/tests/vm/dart_2/appjit_spawnuri_test_body.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2020, 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.
-
-// Verify that using spawnUri to spawn an isolate from app-jit snapshot works.
-
-import 'dart:isolate';
-
-import 'package:expect/expect.dart';
-
-int computation(int n) =>
-    List.generate(n, (i) => i == 0 ? 1 : 0).fold(0, (a, b) => a + b);
-
-Future<void> main(List<String> args, [dynamic sendPort]) async {
-  final isTraining = args.contains('--train');
-
-  var result = 0;
-  for (var i = 0; i < 1000; i++) {
-    result += computation(i);
-  }
-  Expect.equals(999, result);
-  if (isTraining) {
-    print('OK(Trained)');
-  } else {
-    (sendPort as SendPort).send('OK(Run)');
-  }
-}
diff --git a/runtime/tests/vm/dart_2/spawnuri_snapshot_test.dart b/runtime/tests/vm/dart_2/spawnuri_snapshot_test.dart
new file mode 100644
index 0000000..f0ed02f
--- /dev/null
+++ b/runtime/tests/vm/dart_2/spawnuri_snapshot_test.dart
@@ -0,0 +1,34 @@
+// Copyright (c) 2020, 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.
+
+// Check spawnUri accepts any program format that `dart` accepts. Currently this
+// is source, kernel, AppJIT (blob container) and AppAOT (ELF).
+
+import "dart:isolate";
+import "dart:io";
+
+import "package:expect/expect.dart";
+
+int fib(int n) {
+  if (n <= 1) return 1;
+  return fib(n - 1) + fib(n - 2);
+}
+
+main(List<String> args, [dynamic sendPort]) {
+  if (sendPort == null) {
+    print("Parent start");
+    var port = new RawReceivePort();
+    port.handler = (result) {
+      Expect.equals(14930352, result);
+      port.close();
+      print("Parent end");
+    };
+    print("Spawn ${Platform.script}");
+    Isolate.spawnUri(Platform.script, <String>[], port.sendPort);
+  } else {
+    print("Child start");
+    sendPort.send(fib(35));
+    print("Child end");
+  }
+}
diff --git a/runtime/vm/compiler/assembler/disassembler_x86.cc b/runtime/vm/compiler/assembler/disassembler_x86.cc
index 3cc6713..16ce521 100644
--- a/runtime/vm/compiler/assembler/disassembler_x86.cc
+++ b/runtime/vm/compiler/assembler/disassembler_x86.cc
@@ -726,7 +726,7 @@
     Print(",%d", imm8);
     num_bytes++;
   } else {
-    ASSERT(op = 0xD2);
+    ASSERT(op == 0xD2);
     Print(",cl");
   }
   return num_bytes;
diff --git a/runtime/vm/compiler/backend/range_analysis.cc b/runtime/vm/compiler/backend/range_analysis.cc
index 08b481f..a802eaa 100644
--- a/runtime/vm/compiler/backend/range_analysis.cc
+++ b/runtime/vm/compiler/backend/range_analysis.cc
@@ -2859,8 +2859,12 @@
 }
 
 void BinaryIntegerOpInstr::InferRange(RangeAnalysis* analysis, Range* range) {
-  InferRangeHelper(analysis->GetSmiRange(left()),
-                   analysis->GetSmiRange(right()), range);
+  auto const left_size =
+      RepresentationToRangeSize(RequiredInputRepresentation(0));
+  auto const right_size =
+      RepresentationToRangeSize(RequiredInputRepresentation(1));
+  InferRangeHelper(GetInputRange(analysis, left_size, left()),
+                   GetInputRange(analysis, right_size, right()), range);
 }
 
 void BinarySmiOpInstr::InferRange(RangeAnalysis* analysis, Range* range) {
diff --git a/runtime/vm/compiler/frontend/bytecode_reader.cc b/runtime/vm/compiler/frontend/bytecode_reader.cc
index ba1f36c..4d6eb95 100644
--- a/runtime/vm/compiler/frontend/bytecode_reader.cc
+++ b/runtime/vm/compiler/frontend/bytecode_reader.cc
@@ -213,6 +213,7 @@
          i < function.NumParameters(); ++i) {
       const intptr_t flags = reader_.ReadUInt();
       if ((flags & Parameter::kIsRequiredFlag) != 0) {
+        RELEASE_ASSERT(i >= function.num_fixed_parameters());
         function.SetIsRequiredAt(i);
       }
     }
@@ -610,6 +611,7 @@
     for (intptr_t i = 0; i < num_flags; ++i) {
       intptr_t flag = reader_.ReadUInt();
       if ((flag & Parameter::kIsRequiredFlag) != 0) {
+        RELEASE_ASSERT(kImplicitClosureParam + i >= num_required_params);
         func.SetIsRequiredAt(kImplicitClosureParam + i);
       }
     }
@@ -3072,6 +3074,7 @@
   if (has_parameters_flags) {
     const intptr_t num_params = reader_.ReadUInt();
     const intptr_t num_implicit_params = function.NumImplicitParameters();
+    const intptr_t num_fixed_params = function.num_fixed_parameters();
     for (intptr_t i = 0; i < num_params; ++i) {
       const intptr_t flags = reader_.ReadUInt();
 
@@ -3081,6 +3084,7 @@
       bool is_required = (flags & Parameter::kIsRequiredFlag) != 0;
 
       if (is_required) {
+        RELEASE_ASSERT(num_implicit_params + i >= num_fixed_params);
         function.SetIsRequiredAt(num_implicit_params + i);
       }
 
diff --git a/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc b/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc
index 4f25c9f..2939eff 100644
--- a/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc
+++ b/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc
@@ -11,6 +11,7 @@
 #include "vm/compiler/frontend/prologue_builder.h"
 #include "vm/compiler/jit/compiler.h"
 #include "vm/object_store.h"
+#include "vm/resolver.h"
 #include "vm/stack_frame.h"
 
 namespace dart {
@@ -1632,20 +1633,13 @@
     int argument_count,
     const Array& argument_names) {
   // Search the superclass chain for the selector.
-  Function& function = Function::Handle(Z);
-  Class& iterate_klass = Class::Handle(Z, klass.raw());
-  while (!iterate_klass.IsNull()) {
-    function = iterate_klass.LookupDynamicFunctionAllowPrivate(name);
-    if (!function.IsNull()) {
-      if (function.AreValidArguments(type_args_len, argument_count,
-                                     argument_names,
-                                     /* error_message = */ NULL)) {
-        return function;
-      }
-    }
-    iterate_klass = iterate_klass.SuperClass();
-  }
-  return Function::Handle();
+  ArgumentsDescriptor args_desc(
+      Array::Handle(Z, ArgumentsDescriptor::NewBoxed(
+                           type_args_len, argument_count, argument_names)));
+  Function& function =
+      Function::Handle(Z, Resolver::ResolveDynamicForReceiverClassAllowPrivate(
+                              klass, name, args_desc, /*allow_add=*/false));
+  return function;
 }
 
 bool StreamingFlowGraphBuilder::NeedsDebugStepCheck(const Function& function,
diff --git a/runtime/vm/compiler/frontend/kernel_translation_helper.cc b/runtime/vm/compiler/frontend/kernel_translation_helper.cc
index fbaa46d..4812287 100644
--- a/runtime/vm/compiler/frontend/kernel_translation_helper.cc
+++ b/runtime/vm/compiler/frontend/kernel_translation_helper.cc
@@ -3552,6 +3552,8 @@
     // Read ith variable declaration.
     VariableDeclarationHelper helper(helper_);
     helper.ReadUntilExcluding(VariableDeclarationHelper::kType);
+    // The required flag should only be set on named parameters.
+    ASSERT(!helper.IsRequired());
     const AbstractType& type = BuildTypeWithoutFinalization();  // read type.
     Tag tag = helper_->ReadTag();  // read (first part of) initializer.
     if (tag == kSomething) {
diff --git a/runtime/vm/isolate.cc b/runtime/vm/isolate.cc
index 118bf68..5d87370 100644
--- a/runtime/vm/isolate.cc
+++ b/runtime/vm/isolate.cc
@@ -2855,20 +2855,20 @@
   return isolates_.IsEmpty() ? nullptr : isolates_.First();
 }
 
-void IsolateGroup::RunWithStoppedMutators(
-    std::function<void()> single_current_mutator,
-    std::function<void()> otherwise,
+void IsolateGroup::RunWithStoppedMutatorsCallable(
+    Callable* single_current_mutator,
+    Callable* otherwise,
     bool use_force_growth_in_otherwise) {
   auto thread = Thread::Current();
 
   if (thread->IsMutatorThread() && !FLAG_enable_isolate_groups) {
-    single_current_mutator();
+    single_current_mutator->Call();
     return;
   }
 
   if (thread->IsAtSafepoint()) {
     RELEASE_ASSERT(safepoint_handler()->IsOwnedByTheThread(thread));
-    single_current_mutator();
+    single_current_mutator->Call();
     return;
   }
 
@@ -2876,7 +2876,7 @@
     SafepointReadRwLocker ml(thread, isolates_lock_.get());
     const bool only_one_isolate = isolates_.First() == isolates_.Last();
     if (thread->IsMutatorThread() && only_one_isolate) {
-      single_current_mutator();
+      single_current_mutator->Call();
       return;
     }
   }
@@ -2886,10 +2886,10 @@
   // though we only need to ensure that the mutator threads are stopped.
   if (use_force_growth_in_otherwise) {
     ForceGrowthSafepointOperationScope safepoint_scope(thread);
-    otherwise();
+    otherwise->Call();
   } else {
     SafepointOperationScope safepoint_scope(thread);
-    otherwise();
+    otherwise->Call();
   }
 }
 
diff --git a/runtime/vm/isolate.h b/runtime/vm/isolate.h
index eb8d5cc..df4b9ab 100644
--- a/runtime/vm/isolate.h
+++ b/runtime/vm/isolate.h
@@ -128,6 +128,28 @@
   DISALLOW_COPY_AND_ASSIGN(IsolateVisitor);
 };
 
+class Callable : public ValueObject {
+ public:
+  Callable() {}
+  virtual ~Callable() {}
+
+  virtual void Call() = 0;
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(Callable);
+};
+
+template <typename T>
+class LambdaCallable : public Callable {
+ public:
+  explicit LambdaCallable(T& lambda) : lambda_(lambda) {}
+  void Call() { lambda_(); }
+
+ private:
+  T& lambda_;
+  DISALLOW_COPY_AND_ASSIGN(LambdaCallable);
+};
+
 // Disallow OOB message handling within this scope.
 class NoOOBMessageScope : public ThreadStackResource {
  public:
@@ -453,13 +475,25 @@
   //
   // During the duration of this function, no new isolates can be added to the
   // isolate group.
-  void RunWithStoppedMutators(std::function<void()> single_current_mutator,
-                              std::function<void()> otherwise,
-                              bool use_force_growth_in_otherwise = false);
+  void RunWithStoppedMutatorsCallable(
+      Callable* single_current_mutator,
+      Callable* otherwise,
+      bool use_force_growth_in_otherwise = false);
 
-  void RunWithStoppedMutators(std::function<void()> function,
-                              bool use_force_growth = false) {
-    RunWithStoppedMutators(function, function, use_force_growth);
+  template <typename T, typename S>
+  void RunWithStoppedMutators(T single_current_mutator,
+                              S otherwise,
+                              bool use_force_growth_in_otherwise = false) {
+    LambdaCallable<T> single_callable(single_current_mutator);
+    LambdaCallable<S> otherwise_callable(otherwise);
+    RunWithStoppedMutatorsCallable(&single_callable, &otherwise_callable,
+                                   use_force_growth_in_otherwise);
+  }
+
+  template <typename T>
+  void RunWithStoppedMutators(T function, bool use_force_growth = false) {
+    LambdaCallable<T> callable(function);
+    RunWithStoppedMutatorsCallable(&callable, &callable, use_force_growth);
   }
 
 #ifndef PRODUCT
diff --git a/runtime/vm/isolate_reload.cc b/runtime/vm/isolate_reload.cc
index b9ccfa0..786c2ed 100644
--- a/runtime/vm/isolate_reload.cc
+++ b/runtime/vm/isolate_reload.cc
@@ -1269,16 +1269,22 @@
   // Copy the size table for isolate group.
   intptr_t* saved_size_table = nullptr;
   shared_class_table_->CopyBeforeHotReload(&saved_size_table, &saved_num_cids_);
+
+  Thread* thread = Thread::Current();
   {
-    NoSafepointScope no_safepoint_scope(Thread::Current());
+    NoSafepointScope no_safepoint_scope(thread);
 
     // The saved_size_table_ will now become source of truth for GC.
     saved_size_table_.store(saved_size_table, std::memory_order_release);
-
-    // We can therefore wipe out all of the old entries (if that table is used
-    // for GC during the hot-reload we have a bug).
-    shared_class_table_->ResetBeforeHotReload();
   }
+
+  // But the concurrent sweeper may still be reading from the old table.
+  thread->heap()->WaitForSweeperTasks(thread);
+
+  // Now we can clear the old table. This satisfies asserts during class
+  // registration and encourages fast failure if we use the wrong table
+  // for GC during reload, but isn't strictly needed for correctness.
+  shared_class_table_->ResetBeforeHotReload();
 }
 
 void IsolateReloadContext::CheckpointClasses() {
diff --git a/runtime/vm/resolver.cc b/runtime/vm/resolver.cc
index 68a1e4d..8e2c533 100644
--- a/runtime/vm/resolver.cc
+++ b/runtime/vm/resolver.cc
@@ -30,40 +30,12 @@
   return ResolveDynamicForReceiverClass(cls, function_name, args_desc);
 }
 
-FunctionPtr Resolver::ResolveDynamicForReceiverClass(
+static FunctionPtr ResolveDynamicAnyArgsWithCustomLookup(
+    Zone* zone,
     const Class& receiver_class,
     const String& function_name,
-    const ArgumentsDescriptor& args_desc,
-    bool allow_add) {
-  Thread* thread = Thread::Current();
-  Zone* zone = thread->zone();
-
-  Function& function = Function::Handle(
-      zone,
-      ResolveDynamicAnyArgs(zone, receiver_class, function_name, allow_add));
-
-  if (function.IsNull() || !function.AreValidArguments(args_desc, NULL)) {
-    // Return a null function to signal to the upper levels to dispatch to
-    // "noSuchMethod" function.
-    if (FLAG_trace_resolving) {
-      String& error_message =
-          String::Handle(zone, Symbols::New(thread, "function not found"));
-      if (!function.IsNull()) {
-        // Obtain more detailed error message.
-        function.AreValidArguments(args_desc, &error_message);
-      }
-      THR_Print("ResolveDynamic error '%s': %s.\n", function_name.ToCString(),
-                error_message.ToCString());
-    }
-    return Function::null();
-  }
-  return function.raw();
-}
-
-FunctionPtr Resolver::ResolveDynamicAnyArgs(Zone* zone,
-                                            const Class& receiver_class,
-                                            const String& function_name,
-                                            bool allow_add) {
+    bool allow_add,
+    std::function<FunctionPtr(Class&, const String&)> lookup) {
   Class& cls = Class::Handle(zone, receiver_class.raw());
   if (FLAG_trace_resolving) {
     THR_Print("ResolveDynamic '%s' for class %s\n", function_name.ToCString(),
@@ -95,7 +67,7 @@
     }
     if (!function.IsNull()) return function.raw();
 
-    function = cls.LookupDynamicFunction(demangled);
+    function = lookup(cls, demangled);
 #if !defined(DART_PRECOMPILED_RUNTIME)
     // In JIT we might need to lazily create a dyn:* forwarder.
     if (is_dyn_call && !function.IsNull()) {
@@ -126,6 +98,76 @@
   return function.raw();
 }
 
+static FunctionPtr ResolveDynamicForReceiverClassWithCustomLookup(
+    const Class& receiver_class,
+    const String& function_name,
+    const ArgumentsDescriptor& args_desc,
+    bool allow_add,
+    std::function<FunctionPtr(Class&, const String&)> lookup) {
+  Thread* thread = Thread::Current();
+  Zone* zone = thread->zone();
+
+  Function& function = Function::Handle(
+      zone, ResolveDynamicAnyArgsWithCustomLookup(
+                zone, receiver_class, function_name, allow_add, lookup));
+
+  if (function.IsNull() || !function.AreValidArguments(args_desc, NULL)) {
+    // Return a null function to signal to the upper levels to dispatch to
+    // "noSuchMethod" function.
+    if (FLAG_trace_resolving) {
+      String& error_message =
+          String::Handle(zone, Symbols::New(thread, "function not found"));
+      if (!function.IsNull()) {
+        // Obtain more detailed error message.
+        function.AreValidArguments(args_desc, &error_message);
+      }
+      THR_Print("ResolveDynamic error '%s': %s.\n", function_name.ToCString(),
+                error_message.ToCString());
+    }
+    return Function::null();
+  }
+  return function.raw();
+}
+
+FunctionPtr Resolver::ResolveDynamicForReceiverClass(
+    const Class& receiver_class,
+    const String& function_name,
+    const ArgumentsDescriptor& args_desc,
+    bool allow_add) {
+  return ResolveDynamicForReceiverClassWithCustomLookup(
+      receiver_class, function_name, args_desc, allow_add,
+      &Class::LookupDynamicFunction);
+}
+
+FunctionPtr Resolver::ResolveDynamicForReceiverClassAllowPrivate(
+    const Class& receiver_class,
+    const String& function_name,
+    const ArgumentsDescriptor& args_desc,
+    bool allow_add) {
+  return ResolveDynamicForReceiverClassWithCustomLookup(
+      receiver_class, function_name, args_desc, allow_add,
+      &Class::LookupDynamicFunctionAllowPrivate);
+}
+
+FunctionPtr Resolver::ResolveDynamicAnyArgs(Zone* zone,
+                                            const Class& receiver_class,
+                                            const String& function_name,
+                                            bool allow_add) {
+  return ResolveDynamicAnyArgsWithCustomLookup(
+      zone, receiver_class, function_name, allow_add,
+      std::mem_fn(&Class::LookupDynamicFunctionAllowPrivate));
+}
+
+FunctionPtr Resolver::ResolveDynamicAnyArgsAllowPrivate(
+    Zone* zone,
+    const Class& receiver_class,
+    const String& function_name,
+    bool allow_add) {
+  return ResolveDynamicAnyArgsWithCustomLookup(
+      zone, receiver_class, function_name, allow_add,
+      std::mem_fn(&Class::LookupDynamicFunctionAllowPrivate));
+}
+
 FunctionPtr Resolver::ResolveStatic(const Library& library,
                                     const String& class_name,
                                     const String& function_name,
diff --git a/runtime/vm/resolver.h b/runtime/vm/resolver.h
index 0d9f8a9..e440c24 100644
--- a/runtime/vm/resolver.h
+++ b/runtime/vm/resolver.h
@@ -33,12 +33,22 @@
       const String& function_name,
       const ArgumentsDescriptor& args_desc,
       bool allow_add = true);
+  static FunctionPtr ResolveDynamicForReceiverClassAllowPrivate(
+      const Class& receiver_class,
+      const String& function_name,
+      const ArgumentsDescriptor& args_desc,
+      bool allow_add);
 
   // If 'allow_add' is true we may add a function to the class during lookup.
   static FunctionPtr ResolveDynamicAnyArgs(Zone* zone,
                                            const Class& receiver_class,
                                            const String& function_name,
                                            bool allow_add = true);
+  static FunctionPtr ResolveDynamicAnyArgsAllowPrivate(
+      Zone* zone,
+      const Class& receiver_class,
+      const String& function_name,
+      bool allow_add);
 
   // Resolve specified dart static function. If library.IsNull, use
   // either application library or core library if no application library
diff --git a/runtime/vm/runtime_entry.h b/runtime/vm/runtime_entry.h
index 1b35e0e..bede33e 100644
--- a/runtime/vm/runtime_entry.h
+++ b/runtime/vm/runtime_entry.h
@@ -85,6 +85,15 @@
   } while (0)
 #endif
 
+#if defined(USING_SIMULATOR)
+#define CHECK_SIMULATOR_STACK_OVERFLOW()                                       \
+  if (!OSThread::Current()->HasStackHeadroom()) {                              \
+    Exceptions::ThrowStackOverflow();                                          \
+  }
+#else
+#define CHECK_SIMULATOR_STACK_OVERFLOW()
+#endif  // defined(USING_SIMULATOR)
+
 // Helper macros for declaring and defining runtime entries.
 
 #define DEFINE_RUNTIME_ENTRY(name, argument_count)                             \
@@ -106,6 +115,7 @@
       TransitionGeneratedToVM transition(thread);                              \
       StackZone zone(thread);                                                  \
       HANDLESCOPE(thread);                                                     \
+      CHECK_SIMULATOR_STACK_OVERFLOW();                                        \
       DRT_Helper##name(isolate, thread, zone.GetZone(), arguments);            \
     }                                                                          \
   }                                                                            \
diff --git a/runtime/vm/timeline_android.cc b/runtime/vm/timeline_android.cc
index 0a97b1d..046d0a2 100644
--- a/runtime/vm/timeline_android.cc
+++ b/runtime/vm/timeline_android.cc
@@ -10,6 +10,7 @@
 #include <cstdlib>
 
 #include "platform/atomic.h"
+#include "platform/signal_blocker.h"
 #include "vm/isolate.h"
 #include "vm/json_stream.h"
 #include "vm/lockers.h"
@@ -23,16 +24,25 @@
 
 DECLARE_FLAG(bool, trace_timeline);
 
-TimelineEventSystraceRecorder::TimelineEventSystraceRecorder()
-    : TimelineEventPlatformRecorder(), systrace_fd_(-1) {
-  const char* kSystracePath = "/sys/kernel/debug/tracing/trace_marker";
-  systrace_fd_ = open(kSystracePath, O_WRONLY);
-  if ((systrace_fd_ < 0) && FLAG_trace_timeline) {
-    OS::PrintErr("TimelineEventSystraceRecorder: Could not open `%s`\n",
-                 kSystracePath);
+static int OpenTraceFD() {
+  const char* kSystraceDebugPath = "/sys/kernel/debug/tracing/trace_marker";
+  const char* kSystracePath = "/sys/kernel/tracing/trace_marker";
+
+  int fd = TEMP_FAILURE_RETRY(::open(kSystracePath, O_WRONLY));
+  if (fd < 0) {
+    fd = TEMP_FAILURE_RETRY(::open(kSystraceDebugPath, O_WRONLY));
   }
+
+  if (fd < 0 && FLAG_trace_timeline) {
+    OS::PrintErr("TimelineEventSystraceRecorder: Could not open `%s` or `%s`\n",
+                 kSystraceDebugPath, kSystracePath);
+  }
+  return fd;
 }
 
+TimelineEventSystraceRecorder::TimelineEventSystraceRecorder()
+    : TimelineEventPlatformRecorder(), systrace_fd_(OpenTraceFD()) {}
+
 TimelineEventSystraceRecorder::~TimelineEventSystraceRecorder() {
   if (systrace_fd_ >= 0) {
     close(systrace_fd_);
diff --git a/runtime/vm/timeline_linux.cc b/runtime/vm/timeline_linux.cc
index dc45ffb..3756f16 100644
--- a/runtime/vm/timeline_linux.cc
+++ b/runtime/vm/timeline_linux.cc
@@ -75,6 +75,16 @@
       }
       break;
     }
+    case TimelineEvent::kAsyncBegin: {
+      length = Utils::SNPrint(buffer, buffer_size, "S|%" Pd64 "|%s|%" Pd64 "",
+                              pid, event->label(), event->AsyncId());
+      break;
+    }
+    case TimelineEvent::kAsyncEnd: {
+      length = Utils::SNPrint(buffer, buffer_size, "F|%" Pd64 "|%s|%" Pd64 "",
+                              pid, event->label(), event->AsyncId());
+      break;
+    }
     default:
       // Ignore event types that we cannot serialize to the Systrace format.
       break;
diff --git a/sdk/lib/_internal/allowed_experiments.json b/sdk/lib/_internal/allowed_experiments.json
index bbe8144..235e683 100644
--- a/sdk/lib/_internal/allowed_experiments.json
+++ b/sdk/lib/_internal/allowed_experiments.json
@@ -49,6 +49,9 @@
     "fake_async": {
       "experimentSet": "nullSafety"
     },
+    "file": {
+      "experimentSet": "nullSafety"
+    },
     "fixnum": {
       "experimentSet": "nullSafety"
     },
@@ -58,6 +61,12 @@
     "flutter_test": {
       "experimentSet": "nullSafety"
     },
+    "flutter_goldens": {
+      "experimentSet": "nullSafety"
+    },
+    "flutter_goldens_client": {
+      "experimentSet": "nullSafety"
+    },
     "js": {
       "experimentSet": "nullSafety"
     },
@@ -73,9 +82,15 @@
     "pedantic": {
       "experimentSet": "nullSafety"
     },
+    "platform": {
+      "experimentSet": "nullSafety"
+    },
     "pool": {
       "experimentSet": "nullSafety"
     },
+    "process": {
+      "experimentSet": "nullSafety"
+    },
     "sky_engine": {
       "experimentSet": "nullSafety"
     },
diff --git a/sdk/lib/_internal/js_dev_runtime/private/js_number.dart b/sdk/lib/_internal/js_dev_runtime/private/js_number.dart
index d2b9661..fcaa2cd 100644
--- a/sdk/lib/_internal/js_dev_runtime/private/js_number.dart
+++ b/sdk/lib/_internal/js_dev_runtime/private/js_number.dart
@@ -141,7 +141,7 @@
   double toDouble() => this;
 
   @notNull
-  String toStringAsFixed(@notNull int fractionDigits) {
+  String toStringAsFixed(@nullCheck int fractionDigits) {
     if (fractionDigits < 0 || fractionDigits > 20) {
       throw RangeError.range(fractionDigits, 0, 20, "fractionDigits");
     }
diff --git a/sdk/lib/_internal/js_runtime/lib/js_helper.dart b/sdk/lib/_internal/js_runtime/lib/js_helper.dart
index 7e3b6f1..b1a7f44 100644
--- a/sdk/lib/_internal/js_runtime/lib/js_helper.dart
+++ b/sdk/lib/_internal/js_runtime/lib/js_helper.dart
@@ -1518,7 +1518,7 @@
   }
 }
 
-class NullError extends Error implements NoSuchMethodError {
+class NullError extends TypeError implements NoSuchMethodError {
   final String _message;
   final String? _method;
 
diff --git a/tests/co19/co19-co19.status b/tests/co19/co19-co19.status
index d389741..6740112 100644
--- a/tests/co19/co19-co19.status
+++ b/tests/co19/co19-co19.status
@@ -52,6 +52,8 @@
 LanguageFeatures/regression/*: Skip # Not migrated to NNBD
 LibTest/collection/ListBase/*: Skip # Not migrated to NNBD
 LibTest/collection/ListMixin/*: Skip # Not migrated to NNBD
+LibTest/core/CyclicInitializationError/*: Skip # Not migrated to NNBD
+LibTest/core/int/*: Skip # Not migrated to NNBD
 LibTest/convert/AsciiCodec/*: Skip # Not migrated to NNBD
 LibTest/convert/AsciiDecoder/*: Skip # Not migrated to NNBD
 LibTest/convert/AsciiEncoder/*: Skip # Not migrated to NNBD
@@ -76,55 +78,6 @@
 LibTest/convert/Utf8Codec/*: Skip # Not migrated to NNBD
 LibTest/convert/Utf8Decoder/*: Skip # Not migrated to NNBD
 LibTest/convert/Utf8Encoder/*: Skip # Not migrated to NNBD
-LibTest/core/AbstractClassInstantiationError/*: Skip # Not migrated to NNBD
-LibTest/core/ArgumentError/*: Skip # Not migrated to NNBD
-LibTest/core/AssertionError/*: Skip # Not migrated to NNBD
-LibTest/core/BidirectionalIterator/*: Skip # Not migrated to NNBD
-LibTest/core/CastError/*: Skip # Not migrated to NNBD
-LibTest/core/ConcurrentModificationError/*: Skip # Not migrated to NNBD
-LibTest/core/CyclicInitializationError/*: Skip # Not migrated to NNBD
-LibTest/core/DateTime/*: Skip # Not migrated to NNBD
-LibTest/core/Deprecated/*: Skip # Not migrated to NNBD
-LibTest/core/Duration/*: Skip # Not migrated to NNBD
-LibTest/core/Error/*: Skip # Not migrated to NNBD
-LibTest/core/Exception/*: Skip # Not migrated to NNBD
-LibTest/core/Expando/*: Skip # Not migrated to NNBD
-LibTest/core/FallThroughError/*: Skip # Not migrated to NNBD
-LibTest/core/FormatException/*: Skip # Not migrated to NNBD
-LibTest/core/Function/*: Skip # Not migrated to NNBD
-LibTest/core/IndexError/*: Skip # Not migrated to NNBD
-LibTest/core/IntegerDivisionByZeroException/*: Skip # Not migrated to NNBD
-LibTest/core/Invocation/*: Skip # Not migrated to NNBD
-LibTest/core/Iterable/*: Skip # Not migrated to NNBD
-LibTest/core/Iterator/*: Skip # Not migrated to NNBD
-LibTest/core/List/*: Skip # Not migrated to NNBD
-LibTest/core/Map/*: Skip # Not migrated to NNBD
-LibTest/core/Match/*: Skip # Not migrated to NNBD
-LibTest/core/NoSuchMethodError/*: Skip # Not migrated to NNBD
-LibTest/core/Null/*: Skip # Not migrated to NNBD
-LibTest/core/Object/*: Skip # Not migrated to NNBD
-LibTest/core/OutOfMemoryError/*: Skip # Not migrated to NNBD
-LibTest/core/RangeError/*: Skip # Not migrated to NNBD
-LibTest/core/RegExp/*: Skip # Not migrated to NNBD
-LibTest/core/RegExp/Pattern_semantics/*: Skip # Not migrated to NNBD
-LibTest/core/RuneIterator/*: Skip # Not migrated to NNBD
-LibTest/core/Runes/*: Skip # Not migrated to NNBD
-LibTest/core/Set/*: Skip # Not migrated to NNBD
-LibTest/core/StackOverflowError/*: Skip # Not migrated to NNBD
-LibTest/core/StackTrace/*: Skip # Not migrated to NNBD
-LibTest/core/StateError/*: Skip # Not migrated to NNBD
-LibTest/core/Stopwatch/*: Skip # Not migrated to NNBD
-LibTest/core/String/*: Skip # Not migrated to NNBD
-LibTest/core/StringBuffer/*: Skip # Not migrated to NNBD
-LibTest/core/Symbol/*: Skip # Not migrated to NNBD
-LibTest/core/TypeError/*: Skip # Not migrated to NNBD
-LibTest/core/UnimplementedError/*: Skip # Not migrated to NNBD
-LibTest/core/UnsupportedError/*: Skip # Not migrated to NNBD
-LibTest/core/Uri/*: Skip # Not migrated to NNBD
-LibTest/core/UriData/*: Skip # Not migrated to NNBD
-LibTest/core/bool/*: Skip # Not migrated to NNBD
-LibTest/core/double/*: Skip # Not migrated to NNBD
-LibTest/core/int/*: Skip # Not migrated to NNBD
 LibTest/html/CanvasRenderingContext2D/*: Skip # Not migrated to NNBD
 LibTest/html/Document/*: Skip # Not migrated to NNBD
 LibTest/html/Element/*: Skip # Not migrated to NNBD
diff --git a/tests/co19/co19-dart2js.status b/tests/co19/co19-dart2js.status
index d6f8c83..d591e6e 100644
--- a/tests/co19/co19-dart2js.status
+++ b/tests/co19/co19-dart2js.status
@@ -19,6 +19,17 @@
 Language/Expressions/Spawning_an_Isolate/new_isolate_t01: SkipByDesign
 Language/Metadata/before*: Skip # dart:mirrors not supported https://github.com/dart-lang/co19/issues/523.
 Language/Reference/Operator_Precedence/precedence_15_unary_prefix_t08: SkipByDesign # binary '~' produces different results in JavaScript and Dart
+LibTest/core/DateTime/DateTime.fromMicrosecondsSinceEpoch_A01_t01: SkipByDesign # microseconds are not supported in JavaScript
+LibTest/core/DateTime/microsecond_A01_t01: SkipByDesign # microseconds are not supported in JavaScript
+LibTest/core/DateTime/microsecondsSinceEpoch_A01_t01: SkipByDesign # microseconds are not supported in JavaScript
+LibTest/core/DateTime/parse_A01_t03: SkipByDesign # microseconds are not supported in JavaScript
+LibTest/core/DateTime/to8601String_A01_t01: SkipByDesign # microseconds are not supported in JavaScript
+LibTest/core/DateTime/to8601String_A01_t02: SkipByDesign # microseconds are not supported in JavaScript
+LibTest/core/DateTime/to8601String_A01_t03: SkipByDesign # microseconds are not supported in JavaScript
+LibTest/core/int/operator_remainder_A01_t03: SkipByDesign # Division by zero is not an error in JavaScript
+LibTest/core/int/operator_truncating_division_A01_t02: SkipByDesign # Division by zero is not an error in JavaScript
+LibTest/core/int/parse_A01_t02: SkipByDesign # big integers cannot be represented in JavaScript
+LibTest/core/int/remainder_A01_t03: SkipByDesign # Division by zero is not an error in JavaScript
 LibTest/io/*: SkipByDesign # dart:io not supported.
 LibTest/isolate/*: SkipByDesign # dart:isolate not supported.
 
diff --git a/tests/co19/co19-dartdevc.status b/tests/co19/co19-dartdevc.status
index 08f3b56..9adbeb6 100644
--- a/tests/co19/co19-dartdevc.status
+++ b/tests/co19/co19-dartdevc.status
@@ -72,6 +72,17 @@
 Language/Reference/Operator_Precedence/precedence_15_unary_prefix_t08: SkipByDesign # binary '~' produces different results in JavaScript and Dart
 Language/Types/Interface_Types/subtype_t27: Skip # Times out
 Language/Types/Interface_Types/subtype_t28: Skip # Times out
+LibTest/core/DateTime/DateTime.fromMicrosecondsSinceEpoch_A01_t01: SkipByDesign # microseconds are not supported in JavaScript
+LibTest/core/DateTime/microsecond_A01_t01: SkipByDesign # microseconds are not supported in JavaScript
+LibTest/core/DateTime/microsecondsSinceEpoch_A01_t01: SkipByDesign # microseconds are not supported in JavaScript
+LibTest/core/DateTime/parse_A01_t03: SkipByDesign # microseconds are not supported in JavaScript
+LibTest/core/DateTime/to8601String_A01_t01: SkipByDesign # microseconds are not supported in JavaScript
+LibTest/core/DateTime/to8601String_A01_t02: SkipByDesign # microseconds are not supported in JavaScript
+LibTest/core/DateTime/to8601String_A01_t03: SkipByDesign # microseconds are not supported in JavaScript
+LibTest/core/int/operator_remainder_A01_t03: SkipByDesign # Division by zero is not an error in JavaScript
+LibTest/core/int/operator_truncating_division_A01_t02: SkipByDesign # Division by zero is not an error in JavaScript
+LibTest/core/int/parse_A01_t02: SkipByDesign # big integers cannot be represented in JavaScript
+LibTest/core/int/remainder_A01_t03: SkipByDesign # Division by zero is not an error in JavaScript
 LibTest/html/CanvasRenderingContext2D/addEventListener_A01_t03: Skip # Times out
 LibTest/html/Element/blur_A01_t01: Skip # Times out
 LibTest/html/Element/focus_A01_t01: Skip # Times out
diff --git a/tests/lib/html/js_typed_interop_type_test.dart b/tests/lib/html/js_typed_interop_type_test.dart
index c3967b5..ba1f2da 100644
--- a/tests/lib/html/js_typed_interop_type_test.dart
+++ b/tests/lib/html/js_typed_interop_type_test.dart
@@ -26,7 +26,7 @@
 @JS()
 @anonymous
 class C {
-  late final foo;
+  final foo;
 
   external factory C({foo});
 }
@@ -34,7 +34,7 @@
 @JS()
 @anonymous
 class D {
-  late final foo;
+  final foo;
 
   external factory D({foo});
 }
diff --git a/tests/standalone_2/standalone_2.status b/tests/standalone_2/standalone_2.status
index d0291cb..e9477e1 100644
--- a/tests/standalone_2/standalone_2.status
+++ b/tests/standalone_2/standalone_2.status
@@ -98,13 +98,3 @@
 io/many_file_operations_test: SkipSlow
 package/*: SkipByDesign # Launches VMs in interesting ways.
 typed_data_isolate_test: SkipSlow
-
-[ $system == fuchsia ]
-# Fuchsia test runner doesn't support multi-tests yet.
-deny_listed_test: Skip
-io/dart_std_io_pipe_test: Skip
-io/platform_resolved_executable_test: Skip
-io/signals_exception_test: Skip
-io/socket_ipv6_test: Skip
-package/invalid_uri_test: Skip
-regress_29350_test: Skip
diff --git a/tools/VERSION b/tools/VERSION
index df8f5d5..7e59cc4 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -33,7 +33,7 @@
 MAJOR 2
 MINOR 10
 PATCH 0
-PRERELEASE 3
+PRERELEASE 4
 PRERELEASE_PATCH 0
 ABI_VERSION 39
 OLDEST_SUPPORTED_ABI_VERSION 39
diff --git a/tools/bots/test_matrix.json b/tools/bots/test_matrix.json
index 60bc284..512d8a3 100644
--- a/tools/bots/test_matrix.json
+++ b/tools/bots/test_matrix.json
@@ -2571,20 +2571,28 @@
           ]
         },
         {
-          "name": "dart2js nnbd weak tests",
+          "name": "dart2js nnbd weak d8 tests",
           "arguments": [
             "-ndart2js-hostasserts-weak-linux-x64-d8",
             "--dart2js-batch",
             "language",
-            "corelib",
-            "dart2js",
-            "kernel"
+            "corelib"
           ],
           "shards": 6,
           "fileset": "web_platform_hostasserts_nnbd"
         },
         {
-          "name": "dart2js legacy weak lib tests",
+          "name": "dart2js nnbd weak chrome tests",
+          "arguments": [
+            "-ndart2js-hostasserts-weak-linux-x64-chrome",
+            "--dart2js-batch",
+            "dart2js"
+          ],
+          "shards": 3,
+          "fileset": "web_platform_hostasserts_nnbd"
+        },
+        {
+          "name": "dart2js nnbd weak lib tests",
           "arguments": [
             "-ndart2js-hostasserts-weak-linux-x64-chrome",
             "--dart2js-batch",
@@ -2594,7 +2602,7 @@
           "fileset": "web_platform_hostasserts_nnbd"
         },
         {
-          "name": "dart2js legacy weak co19 tests",
+          "name": "dart2js nnbd weak co19 tests",
           "arguments": [
             "-ndart2js-hostasserts-weak-linux-x64-chrome",
             "--dart2js-batch",
@@ -2604,19 +2612,27 @@
           "fileset": "web_platform_hostasserts_nnbd"
         },
         {
-          "name": "dart2js nnbd strong tests",
+          "name": "dart2js nnbd strong d8 tests",
           "arguments": [
             "-ndart2js-hostasserts-strong-linux-x64-d8",
             "--dart2js-batch",
             "language",
-            "corelib",
-            "dart2js",
-            "kernel"
+            "corelib"
           ],
           "shards": 6,
           "fileset": "web_platform_hostasserts_nnbd"
         },
         {
+          "name": "dart2js nnbd strong chrome tests",
+          "arguments": [
+            "-ndart2js-hostasserts-strong-linux-x64-chrome",
+            "--dart2js-batch",
+            "dart2js"
+          ],
+          "shards": 3,
+          "fileset": "web_platform_hostasserts_nnbd"
+        },
+        {
           "name": "dart2js nnbd strong lib tests",
           "arguments": [
             "-ndart2js-hostasserts-strong-linux-x64-chrome",
diff --git a/tools/bots/try_benchmarks.sh b/tools/bots/try_benchmarks.sh
index 7241cb5..920e30a 100755
--- a/tools/bots/try_benchmarks.sh
+++ b/tools/bots/try_benchmarks.sh
@@ -179,7 +179,6 @@
     out/ReleaseIA32/dart pkg/front_end/tool/perf.dart scan hello.dart
     out/ReleaseIA32/dart pkg/front_end/tool/fasta_perf.dart kernel_gen_e2e hello.dart
     out/ReleaseIA32/dart pkg/front_end/tool/fasta_perf.dart scan hello.dart
-    out/ReleaseIA32/dart-sdk/bin/dart --print_metrics pkg/analyzer_cli/bin/analyzer.dart --dart-sdk=sdk hello.dart
     out/ReleaseIA32/run_vm_tests --dfe=out/ReleaseIA32/kernel-service.dart.snapshot InitialRSS
     out/ReleaseIA32/run_vm_tests --dfe=out/ReleaseIA32/kernel-service.dart.snapshot --sound-null-safety --enable-experiment=non-nullable InitialRSS
     out/ReleaseIA32/run_vm_tests --dfe=out/ReleaseIA32/kernel-service.dart.snapshot GenKernelKernelLoadKernel
@@ -355,7 +354,6 @@
     out/ReleaseX64/dart pkg/front_end/tool/fasta_perf.dart kernel_gen_e2e hello.dart
     out/ReleaseX64/dart pkg/front_end/tool/fasta_perf.dart scan hello.dart
     out/ReleaseX64/dart-sdk/bin/dart pkg/analysis_server/benchmark/benchmarks.dart run --quick --repeat 1 analysis-server-cold
-    out/ReleaseX64/dart-sdk/bin/dart --print_metrics pkg/analyzer_cli/bin/analyzer.dart --dart-sdk=sdk hello.dart
     echo '[{"name":"foo","edits":[["pkg/compiler/lib/src/dart2js.dart","2016","2017"],["pkg/compiler/lib/src/options.dart","2016","2017"]]}]' > appjit_train_edits.json
     out/ReleaseX64/dart --background-compilation=false --snapshot-kind=app-jit --snapshot=pkg/front_end/tool/incremental_perf.dart.appjit pkg/front_end/tool/incremental_perf.dart --target=vm --sdk-summary=out/ReleaseX64/vm_platform_strong.dill --sdk-library-specification=sdk/lib/libraries.json pkg/compiler/lib/src/dart2js.dart appjit_train_edits.json
     out/ReleaseX64/dart --background-compilation=false pkg/front_end/tool/incremental_perf.dart.appjit --target=vm --sdk-summary=out/ReleaseX64/vm_platform_strong.dill --sdk-library-specification=sdk/lib/libraries.json pkg/front_end/benchmarks/ikg/hello.dart pkg/front_end/benchmarks/ikg/hello.edits.json
diff --git a/utils/application_snapshot.gni b/utils/application_snapshot.gni
index 7d981bd..81ec5ee 100644
--- a/utils/application_snapshot.gni
+++ b/utils/application_snapshot.gni
@@ -134,6 +134,7 @@
     args += [ rebase_path(main_dart) ]
   }
 
+  # Create a snapshot from kernel built above.
   dart_action(target_name) {
     deps = extra_deps + [ ":${target_name}_dill" ]
     depfile = "$output.d"
@@ -144,6 +145,10 @@
 
     outputs = [ output ]
 
+    # Explicitly set DFE so Dart doesn't implicitly depend on the kernel service
+    # snapshot (creating a circular dep. for kernel-service_snapshot).
+    dfe = "$_dart_root/pkg/vm/bin/kernel_service.dart"
+
     abs_depfile = rebase_path(depfile)
     abs_output = rebase_path(output, root_build_dir)