Generate a diagnostic for language overrides prior to 2.12

Change-Id: Ia10cf89443208ef133dd1ce8d68ee7c6b4129fbb
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/276800
Reviewed-by: Sigmund Cherem <sigmund@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Stephen Adams <sra@google.com>
Reviewed-by: Samuel Rawlins <srawlins@google.com>
diff --git a/pkg/_fe_analyzer_shared/test/constants/data/basic.dart b/pkg/_fe_analyzer_shared/test/constants/data/basic.dart
index 49749ff..fc4098e 100644
--- a/pkg/_fe_analyzer_shared/test/constants/data/basic.dart
+++ b/pkg/_fe_analyzer_shared/test/constants/data/basic.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.
 
+// ignore: illegal_language_version_override
 // @dart = 2.9
 
 const null0 = /*cfe.Null()*/ null;
diff --git a/pkg/_fe_analyzer_shared/test/constants/data/errors.dart b/pkg/_fe_analyzer_shared/test/constants/data/errors.dart
index bfd5e95..0487ff5 100644
--- a/pkg/_fe_analyzer_shared/test/constants/data/errors.dart
+++ b/pkg/_fe_analyzer_shared/test/constants/data/errors.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.
 
+// ignore: illegal_language_version_override
 // @dart = 2.9
 
 String method() => 'foo';
diff --git a/pkg/_fe_analyzer_shared/test/constants/data/function.dart b/pkg/_fe_analyzer_shared/test/constants/data/function.dart
index 5e1d35d..c9d0f42 100644
--- a/pkg/_fe_analyzer_shared/test/constants/data/function.dart
+++ b/pkg/_fe_analyzer_shared/test/constants/data/function.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.
 
+// ignore: illegal_language_version_override
 // @dart = 2.9
 
 T method1<T>(T t) => t;
diff --git a/pkg/_fe_analyzer_shared/test/constants/data/list.dart b/pkg/_fe_analyzer_shared/test/constants/data/list.dart
index 6af31a0..651d13c 100644
--- a/pkg/_fe_analyzer_shared/test/constants/data/list.dart
+++ b/pkg/_fe_analyzer_shared/test/constants/data/list.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.
 
+// ignore: illegal_language_version_override
 // @dart = 2.9
 
 const list0 = /*cfe.List<dynamic>()*/ [];
diff --git a/pkg/_fe_analyzer_shared/test/constants/data/map.dart b/pkg/_fe_analyzer_shared/test/constants/data/map.dart
index cb84ad3..e014923 100644
--- a/pkg/_fe_analyzer_shared/test/constants/data/map.dart
+++ b/pkg/_fe_analyzer_shared/test/constants/data/map.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.
 
+// ignore: illegal_language_version_override
 // @dart = 2.9
 
 const map0 = /*cfe.Map<dynamic,dynamic>()*/ {};
diff --git a/pkg/_fe_analyzer_shared/test/constants/data/set.dart b/pkg/_fe_analyzer_shared/test/constants/data/set.dart
index 1e5ecb9..4dbdae7 100644
--- a/pkg/_fe_analyzer_shared/test/constants/data/set.dart
+++ b/pkg/_fe_analyzer_shared/test/constants/data/set.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.
 
+// ignore: illegal_language_version_override
 // @dart = 2.9
 
 // ignore: sdk_version_set_literal
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 3a0c909..b09f516 100644
--- a/pkg/_fe_analyzer_shared/test/constants/data/type_literals.dart
+++ b/pkg/_fe_analyzer_shared/test/constants/data/type_literals.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.
 
+// ignore: illegal_language_version_override
 // @dart = 2.9
 
 import 'dart:async';
diff --git a/pkg/_fe_analyzer_shared/test/constants/data_2/basic.dart b/pkg/_fe_analyzer_shared/test/constants/data_2/basic.dart
index 73cf78d..6d71d8d 100644
--- a/pkg/_fe_analyzer_shared/test/constants/data_2/basic.dart
+++ b/pkg/_fe_analyzer_shared/test/constants/data_2/basic.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.
 
+// ignore: illegal_language_version_override
 // @dart = 2.7
 
 const null0 = /*cfe.Null()*/ null;
diff --git a/pkg/_fe_analyzer_shared/test/constants/data_2/errors.dart b/pkg/_fe_analyzer_shared/test/constants/data_2/errors.dart
index a2c10241..1c67de3 100644
--- a/pkg/_fe_analyzer_shared/test/constants/data_2/errors.dart
+++ b/pkg/_fe_analyzer_shared/test/constants/data_2/errors.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.
 
+// ignore: illegal_language_version_override
 // @dart = 2.7
 
 String method() => 'foo';
diff --git a/pkg/_fe_analyzer_shared/test/constants/data_2/function.dart b/pkg/_fe_analyzer_shared/test/constants/data_2/function.dart
index cb18ecf..c305637 100644
--- a/pkg/_fe_analyzer_shared/test/constants/data_2/function.dart
+++ b/pkg/_fe_analyzer_shared/test/constants/data_2/function.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.
 
+// ignore: illegal_language_version_override
 // @dart = 2.7
 
 T method1<T>(T t) => t;
diff --git a/pkg/_fe_analyzer_shared/test/constants/data_2/list.dart b/pkg/_fe_analyzer_shared/test/constants/data_2/list.dart
index aec2913..050d72d 100644
--- a/pkg/_fe_analyzer_shared/test/constants/data_2/list.dart
+++ b/pkg/_fe_analyzer_shared/test/constants/data_2/list.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.
 
+// ignore: illegal_language_version_override
 // @dart = 2.7
 
 const list0 = /*cfe.List<dynamic>()*/ [];
diff --git a/pkg/_fe_analyzer_shared/test/constants/data_2/map.dart b/pkg/_fe_analyzer_shared/test/constants/data_2/map.dart
index b3b762e..92601db 100644
--- a/pkg/_fe_analyzer_shared/test/constants/data_2/map.dart
+++ b/pkg/_fe_analyzer_shared/test/constants/data_2/map.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.
 
+// ignore: illegal_language_version_override
 // @dart = 2.7
 
 const map0 = /*cfe.Map<dynamic,dynamic>()*/ {};
diff --git a/pkg/_fe_analyzer_shared/test/constants/data_2/set.dart b/pkg/_fe_analyzer_shared/test/constants/data_2/set.dart
index 7c4eed7..a0c9ba8 100644
--- a/pkg/_fe_analyzer_shared/test/constants/data_2/set.dart
+++ b/pkg/_fe_analyzer_shared/test/constants/data_2/set.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.
 
+// ignore: illegal_language_version_override
 // @dart = 2.7
 
 // ignore: sdk_version_set_literal
diff --git a/pkg/_fe_analyzer_shared/test/constants/data_2/type_literals.dart b/pkg/_fe_analyzer_shared/test/constants/data_2/type_literals.dart
index 6754f1c..e71a0a9 100644
--- a/pkg/_fe_analyzer_shared/test/constants/data_2/type_literals.dart
+++ b/pkg/_fe_analyzer_shared/test/constants/data_2/type_literals.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.
 
+// ignore: illegal_language_version_override
 // @dart = 2.7
 
 import 'dart:async';
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/covariant_opt_out.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/covariant_opt_out.dart
index 53dbe5f..9094c96 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/covariant_opt_out.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/covariant_opt_out.dart
@@ -4,6 +4,7 @@
 
 /*library: nnbd=false*/
 
+// ignore: illegal_language_version_override
 // @dart=2.6
 
 /*class: A:A,Object*/
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/from_opt_in/main.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/from_opt_in/main.dart
index 4d2422d..c1a6cc1 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/from_opt_in/main.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/from_opt_in/main.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.
 
+// ignore: illegal_language_version_override
 // @dart=2.5
 
 /*library: nnbd=false*/
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/from_opt_out/opt_out.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/from_opt_out/opt_out.dart
index 18b183d..74e1565 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/from_opt_out/opt_out.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/from_opt_out/opt_out.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.
 
+// ignore: illegal_language_version_override
 // @dart=2.5
 
 /*library: nnbd=false*/
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/generic_members_from_opt_in/main.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/generic_members_from_opt_in/main.dart
index 3857d0f..1486295 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/generic_members_from_opt_in/main.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/generic_members_from_opt_in/main.dart
@@ -4,6 +4,7 @@
 
 /*library: nnbd=false*/
 
+// ignore: illegal_language_version_override
 // @dart=2.5
 
 import 'opt_in.dart';
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/generic_members_from_opt_out/opt_out.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/generic_members_from_opt_out/opt_out.dart
index 929793b..1afd1d8 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/generic_members_from_opt_out/opt_out.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/generic_members_from_opt_out/opt_out.dart
@@ -4,6 +4,7 @@
 
 /*library: nnbd=false*/
 
+// ignore: illegal_language_version_override
 // @dart=2.5
 
 /*class: Map:Map<K*, V*>,Object*/
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/in_out_in/opt_out.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/in_out_in/opt_out.dart
index c232f64..7bd4472 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/in_out_in/opt_out.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/in_out_in/opt_out.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.
 
+// ignore: illegal_language_version_override
 // @dart=2.6
 
 /*library: nnbd=false*/
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/infer_from_opt_in/main.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/infer_from_opt_in/main.dart
index 12302cc..bf30516 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/infer_from_opt_in/main.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/infer_from_opt_in/main.dart
@@ -4,6 +4,7 @@
 
 /*library: nnbd=false*/
 
+// ignore: illegal_language_version_override
 // @dart = 2.5
 import 'opt_in.dart';
 
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/infer_opt_in_from_mixed/opt_out.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/infer_opt_in_from_mixed/opt_out.dart
index dbb6996..3fda4f6 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/infer_opt_in_from_mixed/opt_out.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/infer_opt_in_from_mixed/opt_out.dart
@@ -4,6 +4,7 @@
 
 /*library: nnbd=false*/
 
+// ignore: illegal_language_version_override
 // @dart = 2.5
 
 /*class: Legacy:Legacy,Object*/
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/infer_opt_out_from_mixed/main.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/infer_opt_out_from_mixed/main.dart
index 05862b6..6529c4a 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/infer_opt_out_from_mixed/main.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/infer_opt_out_from_mixed/main.dart
@@ -4,6 +4,7 @@
 
 /*library: nnbd=false*/
 
+// ignore: illegal_language_version_override
 // @dart = 2.5
 import 'opt_in.dart';
 
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/infer_parameter_opt_out.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/infer_parameter_opt_out.dart
index 8930b99..b7afa8e 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/infer_parameter_opt_out.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/infer_parameter_opt_out.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.
 
+// ignore: illegal_language_version_override
 // @dart=2.6
 
 /*library: nnbd=false*/
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/issue40414/opt_out.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/issue40414/opt_out.dart
index 47f208f..58f89ab 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/issue40414/opt_out.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/issue40414/opt_out.dart
@@ -4,6 +4,7 @@
 
 /*library: nnbd=false*/
 
+// ignore: illegal_language_version_override
 // @dart=2.6
 
 import "opt_in.dart";
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/issue40481/opt_out.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/issue40481/opt_out.dart
index 91c879e..db60a44 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/issue40481/opt_out.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/issue40481/opt_out.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.
 
+// ignore: illegal_language_version_override
 // @dart=2.6
 
 /*library: nnbd=false*/
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/issue40524/opt_out.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/issue40524/opt_out.dart
index 0573a97..c0dea96 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/issue40524/opt_out.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/issue40524/opt_out.dart
@@ -4,6 +4,7 @@
 
 /*library: nnbd=false*/
 
+// ignore: illegal_language_version_override
 // @dart=2.6
 
 /*class: A:A<T*>,Object*/
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/issue40553/opt_out.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/issue40553/opt_out.dart
index 0a692fa..6c48423 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/issue40553/opt_out.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/issue40553/opt_out.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.
 
+// ignore: illegal_language_version_override
 // @dart=2.6
 
 /*library: nnbd=false*/
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/member_from_opt_in/main.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/member_from_opt_in/main.dart
index 07fb2cf..8317824 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/member_from_opt_in/main.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/member_from_opt_in/main.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.
 
+// ignore: illegal_language_version_override
 // @dart=2.6
 
 /*library: nnbd=false*/
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/member_from_opt_out/opt_out.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/member_from_opt_out/opt_out.dart
index fbeccca..f5781da 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/member_from_opt_out/opt_out.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/member_from_opt_out/opt_out.dart
@@ -4,6 +4,7 @@
 
 /*library: nnbd=false*/
 
+// ignore: illegal_language_version_override
 // @dart=2.6
 
 /*class: LegacyClass:LegacyClass,Object*/
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/members_from_opt_in/main.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/members_from_opt_in/main.dart
index 9fe23d6..7a88fd3 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/members_from_opt_in/main.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/members_from_opt_in/main.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.
 
+// ignore: illegal_language_version_override
 // @dart=2.5
 
 /*library: nnbd=false*/
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/members_from_opt_out/opt_out.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/members_from_opt_out/opt_out.dart
index 4ef3e61..a18806e 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/members_from_opt_out/opt_out.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/members_from_opt_out/opt_out.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.
 
+// ignore: illegal_language_version_override
 // @dart=2.5
 
 /*library: nnbd=false*/
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/members_opt_out.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/members_opt_out.dart
index 022c702..ea932fb 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/members_opt_out.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/members_opt_out.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.
 
+// ignore: illegal_language_version_override
 // @dart=2.6
 
 /*library: nnbd=false*/
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/nsm_from_opt_in/main.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/nsm_from_opt_in/main.dart
index 65fc5c0..0001dd7 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/nsm_from_opt_in/main.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/nsm_from_opt_in/main.dart
@@ -4,6 +4,7 @@
 
 /*library: nnbd=false*/
 
+// ignore: illegal_language_version_override
 // @dart=2.6
 
 import 'opt_in.dart';
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_in/opt_out.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_in/opt_out.dart
index ccf00fe..9903752 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_in/opt_out.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_in/opt_out.dart
@@ -4,6 +4,7 @@
 
 /*library: nnbd=false*/
 
+// ignore: illegal_language_version_override
 // @dart=2.6
 
 /*class: Class1:Class1,Object*/
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_out/_internal.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_out/_internal.dart
index 7137f1a..e4aaf9e 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_out/_internal.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_out/_internal.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.
 
+// ignore: illegal_language_version_override
 // @dart=2.6
 
 /*library: nnbd=false*/
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_out/async.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_out/async.dart
index 77a5afa..3251d00 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_out/async.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_out/async.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.
 
+// ignore: illegal_language_version_override
 // @dart=2.6
 
 /*library: nnbd=false*/
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_out/collection.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_out/collection.dart
index 339e9a4..8bf9271 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_out/collection.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_out/collection.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.
 
+// ignore: illegal_language_version_override
 // @dart=2.6
 
 /*library: nnbd=false*/
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_out/core.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_out/core.dart
index 051358b..263af0e 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_out/core.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_out/core.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.
 
+// ignore: illegal_language_version_override
 // @dart=2.6
 
 /*library: nnbd=false*/
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_out/main.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_out/main.dart
index 3099cb7..dc97452 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_out/main.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_out/main.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.
 
+// ignore: illegal_language_version_override
 // @dart=2.6
 
 /*library: nnbd=false*/
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_out/opt_out.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_out/opt_out.dart
index 4602bbc..d96411d 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_out/opt_out.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/object_opt_out/opt_out.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.
 
+// ignore: illegal_language_version_override
 // @dart=2.6
 
 /*library: nnbd=false*/
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/sink.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/sink.dart
index 6a8903e..50b7019 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/sink.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/sink.dart
@@ -4,6 +4,7 @@
 
 /*library: nnbd=false*/
 
+// ignore: illegal_language_version_override
 // @dart=2.6
 
 /*class: Sink:Object,Sink<T*>*/
diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/top_merge_opt_out.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/top_merge_opt_out.dart
index ae77091..7385a2f 100644
--- a/pkg/_fe_analyzer_shared/test/inheritance/data/top_merge_opt_out.dart
+++ b/pkg/_fe_analyzer_shared/test/inheritance/data/top_merge_opt_out.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.
 
+// ignore: illegal_language_version_override
 // @dart=2.6
 
 /*library: nnbd=false*/
diff --git a/pkg/analysis_server/test/src/services/correction/fix/add_missing_required_argument_test.dart b/pkg/analysis_server/test/src/services/correction/fix/add_missing_required_argument_test.dart
index f4b1faf..eaeb87b 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/add_missing_required_argument_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/add_missing_required_argument_test.dart
@@ -4,6 +4,7 @@
 
 import 'package:analysis_server/src/services/correction/fix.dart';
 import 'package:analyzer/src/error/codes.dart';
+import 'package:analyzer/src/utilities/legacy.dart';
 import 'package:analyzer_plugin/utilities/fixes/fixes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
@@ -288,14 +289,16 @@
   }
 
   Future<void> test_constructor_single_closure_nnbd_into_legacy() async {
-    addSource('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      addSource('$testPackageLibPath/a.dart', r'''
 typedef int Callback(int? a);
 
 class A {
   A({required Callback callback}) {}
 }
 ''');
-    await resolveTestCode('''
+      await resolveTestCode('''
 // @dart = 2.8
 import 'package:test/a.dart';
 
@@ -304,7 +307,7 @@
   print(a);
 }
 ''');
-    await assertHasFix('''
+      await assertHasFix('''
 // @dart = 2.8
 import 'package:test/a.dart';
 
@@ -313,6 +316,9 @@
   print(a);
 }
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   Future<void> test_constructor_single_list() async {
diff --git a/pkg/analysis_server/test/src/services/correction/fix/remove_method_declaration_test.dart b/pkg/analysis_server/test/src/services/correction/fix/remove_method_declaration_test.dart
index 6434447..402198f 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/remove_method_declaration_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/remove_method_declaration_test.dart
@@ -4,6 +4,7 @@
 
 import 'package:analysis_server/src/services/correction/fix.dart';
 import 'package:analysis_server/src/services/linter/lint_names.dart';
+import 'package:analyzer/src/utilities/legacy.dart';
 import 'package:analyzer_plugin/utilities/fixes/fixes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
@@ -123,13 +124,15 @@
   }
 
   Future<void> test_method_nullSafety_optIn_fromOptOut() async {
-    createAnalysisOptionsFile(lints: [lintCode]);
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      createAnalysisOptionsFile(lints: [lintCode]);
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {
   int foo() => 0;
 }
 ''');
-    await resolveTestCode('''
+      await resolveTestCode('''
 // @dart = 2.7
 import 'a.dart';
 
@@ -138,13 +141,16 @@
   int foo() => super.foo();
 }
 ''');
-    await assertHasFix('''
+      await assertHasFix('''
 // @dart = 2.7
 import 'a.dart';
 
 class B extends A {
 }
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   Future<void> test_method_toString() async {
diff --git a/pkg/analysis_server/test/src/utilities/extensions/range_factory_test.dart b/pkg/analysis_server/test/src/utilities/extensions/range_factory_test.dart
index b61e5f6..fd37777 100644
--- a/pkg/analysis_server/test/src/utilities/extensions/range_factory_test.dart
+++ b/pkg/analysis_server/test/src/utilities/extensions/range_factory_test.dart
@@ -579,7 +579,7 @@
 
   Future<void> test_topLevel_languageVersion_dartDoc() async {
     await resolveTestCode('''
-// @dart = 2.8
+// @dart = 2.19
 
 /// 1
 int foo = 1; // 2
@@ -595,7 +595,7 @@
 
   Future<void> test_topLevel_languageVersion_noDartDoc() async {
     await resolveTestCode('''
-// @dart = 2.8
+// @dart = 2.19
 
 int foo = 1; // 2
 
diff --git a/pkg/analyzer/doc/tutorial/ast.md b/pkg/analyzer/doc/tutorial/ast.md
index c3e275c..7471bb2 100644
--- a/pkg/analyzer/doc/tutorial/ast.md
+++ b/pkg/analyzer/doc/tutorial/ast.md
@@ -54,7 +54,7 @@
 the AST:
 
 ```dart
-void processFile(AnalysisSession session, String path) async {
+Future<void> processFile(AnalysisSession session, String path) async {
   var result = session.getParsedUnit(path);
   if (result is ParsedUnitResult) {
     CompilationUnit unit = result.unit;
@@ -66,7 +66,7 @@
 method to access it:
 
 ```dart
-void processFile(AnalysisSession session, String path) async {
+Future<void> processFile(AnalysisSession session, String path) async {
   var result = await session.getResolvedUnit(path);
   if (result is ResolvedUnitResult) {
     CompilationUnit unit = result.unit;
@@ -102,7 +102,7 @@
           if (classMember.name == null) {
             print('  ${unitMember.name.lexeme}');
           } else {
-            print('  ${unitMember.name.lexeme}.${classMember.name.lexeme}');
+            print('  ${unitMember.name.lexeme}.${classMember.name!.lexeme}');
           }
         }
       }
diff --git a/pkg/analyzer/doc/tutorial/element.md b/pkg/analyzer/doc/tutorial/element.md
index 912d65b..fe603ea7 100644
--- a/pkg/analyzer/doc/tutorial/element.md
+++ b/pkg/analyzer/doc/tutorial/element.md
@@ -75,11 +75,7 @@
     print(classElement.name);
     for (ConstructorElement constructorElement in classElement.constructors) {
       if (!constructorElement.isSynthetic) {
-        if (constructorElement.name == null) {
-          print('  ${constructorElement.name}');
-        } else {
-          print('  ${classElement.name}.${constructorElement.name}');
-        }
+        print('  ${constructorElement.displayName}');
       }
     }
     for (FieldElement fieldElement in classElement.fields) {
diff --git a/pkg/analyzer/lib/src/generated/engine.dart b/pkg/analyzer/lib/src/generated/engine.dart
index 0fc9372..05a5515 100644
--- a/pkg/analyzer/lib/src/generated/engine.dart
+++ b/pkg/analyzer/lib/src/generated/engine.dart
@@ -17,6 +17,7 @@
 import 'package:analyzer/src/generated/source.dart';
 import 'package:analyzer/src/services/lint.dart';
 import 'package:analyzer/src/summary/api_signature.dart';
+import 'package:analyzer/src/utilities/legacy.dart';
 import 'package:pub_semver/pub_semver.dart';
 
 export 'package:analyzer/dart/analysis/analysis_options.dart';
@@ -157,7 +158,8 @@
 
   /// The constraint on the language version for every Dart file.
   /// Violations will be reported as analysis errors.
-  VersionConstraint? sourceLanguageConstraint;
+  VersionConstraint? sourceLanguageConstraint =
+      noSoundNullSafety ? VersionConstraint.parse('>= 2.12.0') : null;
 
   ExperimentStatus _contextFeatures = ExperimentStatus();
 
diff --git a/pkg/analyzer/lib/src/generated/error_verifier.dart b/pkg/analyzer/lib/src/generated/error_verifier.dart
index c01d2e0..d8f2f2c 100644
--- a/pkg/analyzer/lib/src/generated/error_verifier.dart
+++ b/pkg/analyzer/lib/src/generated/error_verifier.dart
@@ -2851,13 +2851,6 @@
         languageVersionToken,
         ['$sourceLanguageConstraint'],
       );
-    } else {
-      errorReporter.reportErrorForOffset(
-        CompileTimeErrorCode.ILLEGAL_LANGUAGE_VERSION_OVERRIDE,
-        0,
-        0,
-        ['$sourceLanguageConstraint'],
-      );
     }
   }
 
diff --git a/pkg/analyzer/lib/src/generated/ffi_verifier.dart b/pkg/analyzer/lib/src/generated/ffi_verifier.dart
index efea28a..98bbb0c 100644
--- a/pkg/analyzer/lib/src/generated/ffi_verifier.dart
+++ b/pkg/analyzer/lib/src/generated/ffi_verifier.dart
@@ -13,6 +13,7 @@
 import 'package:analyzer/src/dart/element/type.dart';
 import 'package:analyzer/src/dart/element/type_system.dart';
 import 'package:analyzer/src/dart/error/ffi_code.dart';
+import 'package:analyzer/src/utilities/legacy.dart';
 
 /// A visitor used to find problems with the way the `dart:ffi` APIs are being
 /// used. See 'pkg/vm/lib/transformations/ffi_checks.md' for the specification
@@ -172,7 +173,9 @@
 
   @override
   void visitConstructorFieldInitializer(ConstructorFieldInitializer node) {
-    if (!typeSystem.isNonNullableByDefault && inCompound) {
+    if (!noSoundNullSafety &&
+        !typeSystem.isNonNullableByDefault &&
+        inCompound) {
       _errorReporter.reportErrorForNode(
         FfiCode.FIELD_INITIALIZER_IN_STRUCT,
         node,
@@ -1022,7 +1025,7 @@
       }
     }
 
-    if (!typeSystem.isNonNullableByDefault) {
+    if (!noSoundNullSafety && !typeSystem.isNonNullableByDefault) {
       for (VariableDeclaration field in fields.variables) {
         if (field.initializer != null) {
           _errorReporter.reportErrorForToken(
diff --git a/pkg/analyzer/messages.yaml b/pkg/analyzer/messages.yaml
index b21a0f6..3ae4c3c 100644
--- a/pkg/analyzer/messages.yaml
+++ b/pkg/analyzer/messages.yaml
@@ -6112,7 +6112,7 @@
 
       ```dart
       %uri="lib/part.dart"
-      // @dart = 2.6
+      // @dart = 2.14
       part of 'test.dart';
       ```
 
@@ -6120,7 +6120,7 @@
       must have the same language version as the defining compilation unit:
 
       ```dart
-      // @dart = 2.5
+      // @dart = 2.15
       part [!'part.dart'!];
       ```
 
@@ -19104,7 +19104,7 @@
       the word `dart` and the version number:
 
       ```dart
-      [!// @Dart 2.9!]
+      [!// @Dart 2.13!]
       ```
 
       #### Common fixes
@@ -19113,7 +19113,7 @@
       the comment to follow the correct format:
 
       ```dart
-      // @dart = 2.9
+      // @dart = 2.13
       ```
   INVALID_LANGUAGE_VERSION_OVERRIDE_LOCATION:
     sharedName: INVALID_LANGUAGE_VERSION_OVERRIDE
diff --git a/pkg/analyzer/test/generated/non_error_resolver_test.dart b/pkg/analyzer/test/generated/non_error_resolver_test.dart
index 4e71a84..2a5f92c 100644
--- a/pkg/analyzer/test/generated/non_error_resolver_test.dart
+++ b/pkg/analyzer/test/generated/non_error_resolver_test.dart
@@ -7,6 +7,7 @@
 import 'package:analyzer/src/dart/element/member.dart';
 import 'package:analyzer/src/error/codes.dart';
 import 'package:analyzer/src/generated/parser.dart' show ParserErrorCode;
+import 'package:analyzer/src/utilities/legacy.dart';
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
@@ -1492,7 +1493,9 @@
   }
 
   test_genericTypeAlias_castsAndTypeChecks_hasTypeParameters() async {
-    await assertNoErrorsInCode('''
+    try {
+      noSoundNullSafety = false;
+      await assertNoErrorsInCode('''
 // @dart = 2.9
 typedef Foo<S> = S Function<T>(T x);
 
@@ -1507,10 +1510,15 @@
   }
 }
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_genericTypeAlias_castsAndTypeChecks_noTypeParameters() async {
-    await assertNoErrorsInCode('''
+    try {
+      noSoundNullSafety = false;
+      await assertNoErrorsInCode('''
 // @dart = 2.9
 typedef Foo = T Function<T>(T x);
 
@@ -1521,6 +1529,9 @@
   }
 }
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_genericTypeAlias_fieldAndReturnType_noTypeParameters() async {
@@ -3123,7 +3134,9 @@
   }
 
   test_typePromotion_if_is_and_subThenSuper() async {
-    await assertNoErrorsInCode(r'''
+    try {
+      noSoundNullSafety = false;
+      await assertNoErrorsInCode(r'''
 // @dart = 2.9
 class A {
   var a;
@@ -3138,6 +3151,9 @@
   }
 }
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_typePromotion_if_is_parenthesized() async {
diff --git a/pkg/analyzer/test/src/dart/resolution/constant_test.dart b/pkg/analyzer/test/src/dart/resolution/constant_test.dart
index f1928a5..c93dd1a 100644
--- a/pkg/analyzer/test/src/dart/resolution/constant_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/constant_test.dart
@@ -8,6 +8,7 @@
 import 'package:analyzer/src/dart/element/element.dart';
 import 'package:analyzer/src/error/codes.dart';
 import 'package:analyzer/src/test_utilities/find_element.dart';
+import 'package:analyzer/src/utilities/legacy.dart';
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
@@ -23,7 +24,9 @@
 @reflectiveTest
 class ConstantResolutionTest extends PubPackageResolutionTest {
   test_constructor_nullSafe_fromLegacy_super() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {
   const A(List<Object> a);
 }
@@ -33,7 +36,7 @@
 }
 ''');
 
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.8
 import 'a.dart';
 
@@ -41,19 +44,24 @@
 const b = B(a);
 ''');
 
-    var b = findElement.topVar('b');
-    assertType(b.computeConstantValue()!.type, 'B*');
+      var b = findElement.topVar('b');
+      assertType(b.computeConstantValue()!.type, 'B*');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_constructor_nullSafe_fromLegacy_this() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {
   const A(List<Object> a) : this(a);
   const A.second(List<Object> a);
 }
 ''');
 
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.8
 import 'a.dart';
 
@@ -61,8 +69,11 @@
 const b = A(a);
 ''');
 
-    var b = findElement.topVar('b');
-    assertType(b.computeConstantValue()!.type, 'A*');
+      var b = findElement.topVar('b');
+      assertType(b.computeConstantValue()!.type, 'A*');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_context_eliminateTypeVariables() async {
@@ -87,25 +98,32 @@
   }
 
   test_field_optIn_fromOptOut() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {
   static const foo = 42;
 }
 ''');
 
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.5
 import 'a.dart';
 
 const bar = A.foo;
 ''');
 
-    var bar = findElement.topVar('bar');
-    _assertIntValue(bar, 42);
+      var bar = findElement.topVar('bar');
+      _assertIntValue(bar, 42);
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_fromEnvironment_optOut_fromOptIn() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 // @dart = 2.5
 
 const cBool = const bool.fromEnvironment('foo', defaultValue: false);
@@ -113,81 +131,100 @@
 const cString = const String.fromEnvironment('foo', defaultValue: 'bar');
 ''');
 
-    await assertErrorsInCode(r'''
+      await assertErrorsInCode(r'''
 import 'a.dart';
 
 const vBool = cBool;
 const vInt = cInt;
 const vString = cString;
 ''', [
-      error(HintCode.IMPORT_OF_LEGACY_LIBRARY_INTO_NULL_SAFE, 7, 8),
-    ]);
+        error(HintCode.IMPORT_OF_LEGACY_LIBRARY_INTO_NULL_SAFE, 7, 8),
+      ]);
 
-    DartObjectImpl evaluate(String name) {
-      return findElement.topVar(name).computeConstantValue() as DartObjectImpl;
+      DartObjectImpl evaluate(String name) {
+        return findElement.topVar(name).computeConstantValue()
+            as DartObjectImpl;
+      }
+
+      expect(evaluate('vBool').toBoolValue(), false);
+      expect(evaluate('vInt').toIntValue(), 1);
+      expect(evaluate('vString').toStringValue(), 'bar');
+    } finally {
+      noSoundNullSafety = true;
     }
-
-    expect(evaluate('vBool').toBoolValue(), false);
-    expect(evaluate('vInt').toIntValue(), 1);
-    expect(evaluate('vString').toStringValue(), 'bar');
   }
 
   test_topLevelVariable_optIn_fromOptOut() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 const foo = 42;
 ''');
 
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.5
 import 'a.dart';
 
 const bar = foo;
 ''');
 
-    var bar = findElement.topVar('bar');
-    assertType(bar.type, 'int*');
-    _assertIntValue(bar, 42);
+      var bar = findElement.topVar('bar');
+      assertType(bar.type, 'int*');
+      _assertIntValue(bar, 42);
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_topLevelVariable_optOut2() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 const a = 42;
 ''');
 
-    newFile('$testPackageLibPath/b.dart', r'''
+      newFile('$testPackageLibPath/b.dart', r'''
 import 'a.dart';
 
 const b = a;
 ''');
 
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.5
 import 'b.dart';
 
 const c = b;
 ''');
 
-    var c = findElement.topVar('c');
-    assertType(c.type, 'int*');
-    _assertIntValue(c, 42);
+      var c = findElement.topVar('c');
+      assertType(c.type, 'int*');
+      _assertIntValue(c, 42);
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_topLevelVariable_optOut3() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 // @dart = 2.7
 const a = int.fromEnvironment('a', defaultValue: 42);
 ''');
 
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.7
 import 'a.dart';
 
 const b = a;
 ''');
 
-    var c = findElement.topVar('b');
-    assertType(c.type, 'int*');
-    _assertIntValue(c, 42);
+      var c = findElement.topVar('b');
+      assertType(c.type, 'int*');
+      _assertIntValue(c, 42);
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   void _assertIntValue(VariableElement element, int value) {
@@ -409,14 +446,16 @@
 
   /// See https://github.com/dart-lang/sdk/issues/43462
   test_useLanguageVersionOfEnclosingLibrary() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class Wrapper {
   final int value;
   const Wrapper(Object value) : value = value as int;
 }
 ''');
 
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.4
 import 'a.dart';
 
@@ -424,5 +463,8 @@
   const Wrapper(0);
 }
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 }
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 b7c00565..194fdfa 100644
--- a/pkg/analyzer/test/src/dart/resolution/for_element_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/for_element_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 'package:analyzer/src/utilities/legacy.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import 'context_collection_resolution.dart';
@@ -17,13 +18,15 @@
 class ForEachElementTest extends PubPackageResolutionTest
     with WithoutNullSafetyMixin {
   test_optIn_fromOptOut() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A implements Iterable<int> {
   Iterator<int> iterator => throw 0;
 }
 ''');
 
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.7
 import 'a.dart';
 
@@ -33,6 +36,9 @@
   }
 }
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_withDeclaration_scope() async {
diff --git a/pkg/analyzer/test/src/dart/resolution/language_version_test.dart b/pkg/analyzer/test/src/dart/resolution/language_version_test.dart
index 67fc64d..197327e 100644
--- a/pkg/analyzer/test/src/dart/resolution/language_version_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/language_version_test.dart
@@ -4,6 +4,7 @@
 
 import 'package:analyzer/src/dart/error/syntactic_errors.dart';
 import 'package:analyzer/src/error/codes.dart';
+import 'package:analyzer/src/utilities/legacy.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import 'context_collection_resolution.dart';
@@ -125,7 +126,9 @@
   }
 
   test_jsonConfigDisablesExtensions_languageOverrideEnables() async {
-    _configureTestWithJsonConfig('''
+    try {
+      noSoundNullSafety = false;
+      _configureTestWithJsonConfig('''
 {
   "configVersion": 2,
   "packages": [
@@ -139,10 +142,13 @@
 }
 ''');
 
-    await assertNoErrorsInCode('''
+      await assertNoErrorsInCode('''
 // @dart = 2.6
 extension E on int {}
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 }
 
diff --git a/pkg/analyzer/test/src/dart/resolution/metadata_test.dart b/pkg/analyzer/test/src/dart/resolution/metadata_test.dart
index f048c77..3e2cc88 100644
--- a/pkg/analyzer/test/src/dart/resolution/metadata_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/metadata_test.dart
@@ -6,6 +6,7 @@
 import 'package:analyzer/dart/element/element.dart';
 import 'package:analyzer/src/error/codes.dart';
 import 'package:analyzer/src/test_utilities/find_element.dart';
+import 'package:analyzer/src/utilities/legacy.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import 'context_collection_resolution.dart';
@@ -339,13 +340,15 @@
   }
 
   test_optIn_fromOptOut_class() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {
   const A(int a);
 }
 ''');
 
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.7
 import 'a.dart';
 
@@ -353,7 +356,7 @@
 void f() {}
 ''');
 
-    assertResolvedNodeText(findNode.annotation('@A'), r'''
+      assertResolvedNodeText(findNode.annotation('@A'), r'''
 Annotation
   atSign: @
   name: SimpleIdentifier
@@ -374,17 +377,22 @@
     base: package:test/a.dart::@class::A::@constructor::new
     isLegacy: true
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_optIn_fromOptOut_class_constructor() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {
   final int a;
   const A.named(this.a);
 }
 ''');
 
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.7
 import 'a.dart';
 
@@ -392,8 +400,8 @@
 void f() {}
 ''');
 
-    var annotation = findNode.annotation('@A');
-    assertResolvedNodeText(annotation, r'''
+      var annotation = findNode.annotation('@A');
+      assertResolvedNodeText(annotation, r'''
 Annotation
   atSign: @
   name: PrefixedIdentifier
@@ -427,22 +435,27 @@
     isLegacy: true
 ''');
 
-    _assertElementAnnotationValueText(
-        findElement.function('f').metadata[0], r'''
+      _assertElementAnnotationValueText(
+          findElement.function('f').metadata[0], r'''
 A*
   a: int 42
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_optIn_fromOptOut_class_constructor_withDefault() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {
   final int a;
   const A.named({this.a = 42});
 }
 ''');
 
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.7
 import 'a.dart';
 
@@ -450,8 +463,8 @@
 void f() {}
 ''');
 
-    var annotation = findNode.annotation('@A');
-    assertResolvedNodeText(annotation, r'''
+      var annotation = findNode.annotation('@A');
+      assertResolvedNodeText(annotation, r'''
 Annotation
   atSign: @
   name: PrefixedIdentifier
@@ -478,21 +491,26 @@
     isLegacy: true
 ''');
 
-    _assertElementAnnotationValueText(
-        findElement.function('f').metadata[0], r'''
+      _assertElementAnnotationValueText(
+          findElement.function('f').metadata[0], r'''
 A*
   a: int 42
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_optIn_fromOptOut_class_getter() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {
   static const foo = 42;
 }
 ''');
 
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.7
 import 'a.dart';
 
@@ -500,7 +518,7 @@
 void f() {}
 ''');
 
-    assertResolvedNodeText(findNode.annotation('@A'), r'''
+      assertResolvedNodeText(findNode.annotation('@A'), r'''
 Annotation
   atSign: @
   name: PrefixedIdentifier
@@ -524,19 +542,24 @@
     isLegacy: true
 ''');
 
-    _assertElementAnnotationValueText(
-        findElement.function('f').metadata[0], r'''
+      _assertElementAnnotationValueText(
+          findElement.function('f').metadata[0], r'''
 int 42
   variable: package:test/a.dart::@class::A::@field::foo
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_optIn_fromOptOut_getter() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 const foo = 42;
 ''');
 
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.7
 import 'a.dart';
 
@@ -544,7 +567,7 @@
 void f() {}
 ''');
 
-    assertResolvedNodeText(findNode.annotation('@foo'), r'''
+      assertResolvedNodeText(findNode.annotation('@foo'), r'''
 Annotation
   atSign: @
   name: SimpleIdentifier
@@ -558,21 +581,26 @@
     isLegacy: true
 ''');
 
-    _assertElementAnnotationValueText(
-        findElement.function('f').metadata[0], r'''
+      _assertElementAnnotationValueText(
+          findElement.function('f').metadata[0], r'''
 int 42
   variable: package:test/a.dart::@variable::foo
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_optIn_fromOptOut_prefix_class() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {
   const A(int a);
 }
 ''');
 
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.7
 import 'a.dart' as a;
 
@@ -580,7 +608,7 @@
 void f() {}
 ''');
 
-    assertResolvedNodeText(findNode.annotation('@a.A'), r'''
+      assertResolvedNodeText(findNode.annotation('@a.A'), r'''
 Annotation
   atSign: @
   name: PrefixedIdentifier
@@ -609,16 +637,21 @@
     base: package:test/a.dart::@class::A::@constructor::new
     isLegacy: true
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_optIn_fromOptOut_prefix_class_constructor() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {
   const A.named(int a);
 }
 ''');
 
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.7
 import 'a.dart' as a;
 
@@ -626,7 +659,7 @@
 void f() {}
 ''');
 
-    assertResolvedNodeText(findNode.annotation('@a.A'), r'''
+      assertResolvedNodeText(findNode.annotation('@a.A'), r'''
 Annotation
   atSign: @
   name: PrefixedIdentifier
@@ -662,16 +695,21 @@
     base: package:test/a.dart::@class::A::@constructor::named
     isLegacy: true
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_optIn_fromOptOut_prefix_class_getter() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {
   static const foo = 0;
 }
 ''');
 
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.7
 import 'a.dart' as a;
 
@@ -679,7 +717,7 @@
 void f() {}
 ''');
 
-    assertResolvedNodeText(findNode.annotation('@a.A'), r'''
+      assertResolvedNodeText(findNode.annotation('@a.A'), r'''
 Annotation
   atSign: @
   name: PrefixedIdentifier
@@ -705,14 +743,19 @@
     base: package:test/a.dart::@class::A::@getter::foo
     isLegacy: true
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_optIn_fromOptOut_prefix_getter() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 const foo = 0;
 ''');
 
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.7
 import 'a.dart' as a;
 
@@ -720,7 +763,7 @@
 void f() {}
 ''');
 
-    assertResolvedNodeText(findNode.annotation('@a'), r'''
+      assertResolvedNodeText(findNode.annotation('@a'), r'''
 Annotation
   atSign: @
   name: PrefixedIdentifier
@@ -743,6 +786,9 @@
     base: package:test/a.dart::@getter::foo
     isLegacy: true
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_value_class_inference_namedConstructor() async {
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 bfebef9..f0c8cba 100644
--- a/pkg/analyzer/test/src/dart/resolution/method_invocation_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/method_invocation_test.dart
@@ -5,6 +5,7 @@
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/src/dart/error/syntactic_errors.dart';
 import 'package:analyzer/src/error/codes.dart';
+import 'package:analyzer/src/utilities/legacy.dart';
 import 'package:test/expect.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
@@ -21,11 +22,13 @@
 class MethodInvocationResolutionTest extends PubPackageResolutionTest
     with MethodInvocationResolutionTestCases {
   test_hasReceiver_deferredImportPrefix_loadLibrary_optIn_fromOptOut() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {}
 ''');
 
-    await assertErrorsInCode(r'''
+      await assertErrorsInCode(r'''
 // @dart = 2.7
 import 'a.dart' deferred as a;
 
@@ -33,11 +36,11 @@
   a.loadLibrary();
 }
 ''', [
-      error(HintCode.UNUSED_IMPORT, 22, 8),
-    ]);
+        error(HintCode.UNUSED_IMPORT, 22, 8),
+      ]);
 
-    var node = findNode.methodInvocation('loadLibrary()');
-    assertResolvedNodeText(node, r'''
+      var node = findNode.methodInvocation('loadLibrary()');
+      assertResolvedNodeText(node, r'''
 MethodInvocation
   target: SimpleIdentifier
     token: a
@@ -56,6 +59,9 @@
   staticInvokeType: Future<dynamic>* Function()*
   staticType: Future<dynamic>*
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_hasReceiver_interfaceQ_Function_call_checked() async {
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 828f515..7147f70 100644
--- a/pkg/analyzer/test/src/dart/resolution/prefixed_identifier_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/prefixed_identifier_test.dart
@@ -3,6 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/src/error/codes.dart';
+import 'package:analyzer/src/utilities/legacy.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import 'context_collection_resolution.dart';
@@ -18,11 +19,13 @@
 class PrefixedIdentifierResolutionTest extends PubPackageResolutionTest
     with PrefixedIdentifierResolutionTestCases {
   test_deferredImportPrefix_loadLibrary_optIn_fromOptOut() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {}
 ''');
 
-    await assertErrorsInCode(r'''
+      await assertErrorsInCode(r'''
 // @dart = 2.7
 import 'a.dart' deferred as a;
 
@@ -30,19 +33,22 @@
   a.loadLibrary;
 }
 ''', [
-      error(HintCode.UNUSED_IMPORT, 22, 8),
-    ]);
+        error(HintCode.UNUSED_IMPORT, 22, 8),
+      ]);
 
-    var import = findElement.importFind('package:test/a.dart');
+      var import = findElement.importFind('package:test/a.dart');
 
-    assertPrefixedIdentifier(
-      findNode.prefixed('a.loadLibrary'),
-      element: elementMatcher(
-        import.importedLibrary.loadLibraryFunction,
-        isLegacy: true,
-      ),
-      type: 'Future<dynamic>* Function()*',
-    );
+      assertPrefixedIdentifier(
+        findNode.prefixed('a.loadLibrary'),
+        element: elementMatcher(
+          import.importedLibrary.loadLibraryFunction,
+          isLegacy: true,
+        ),
+        type: 'Future<dynamic>* Function()*',
+      );
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_enum_read() async {
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 85fdc46..c677160 100644
--- a/pkg/analyzer/test/src/dart/resolution/simple_identifier_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/simple_identifier_test.dart
@@ -3,6 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/src/error/codes.dart';
+import 'package:analyzer/src/utilities/legacy.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import 'context_collection_resolution.dart';
@@ -35,7 +36,9 @@
   }
 
   test_functionReference() async {
-    await assertErrorsInCode('''
+    try {
+      noSoundNullSafety = false;
+      await assertErrorsInCode('''
 // @dart = 2.7
 import 'dart:math';
 
@@ -46,18 +49,21 @@
 @A([min])
 main() {}
 ''', [
-      error(CompileTimeErrorCode.COULD_NOT_INFER, 66, 5),
-    ]);
+        error(CompileTimeErrorCode.COULD_NOT_INFER, 66, 5),
+      ]);
 
-    var identifier = findNode.simple('min]');
-    assertElement(
-      identifier,
-      elementMatcher(
-        findElement.importFind('dart:math').topFunction('min'),
-        isLegacy: true,
-      ),
-    );
-    assertType(identifier, 'T* Function<T extends num*>(T*, T*)*');
+      var identifier = findNode.simple('min]');
+      assertElement(
+        identifier,
+        elementMatcher(
+          findElement.importFind('dart:math').topFunction('min'),
+          isLegacy: true,
+        ),
+      );
+      assertType(identifier, 'T* Function<T extends num*>(T*, T*)*');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_implicitCall_tearOff_nullable() async {
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 5c3ff04..136178f 100644
--- a/pkg/analyzer/test/src/dart/resolution/type_name_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/type_name_test.dart
@@ -5,6 +5,7 @@
 import 'package:analyzer/src/dart/ast/extensions.dart';
 import 'package:analyzer/src/error/codes.dart';
 import 'package:analyzer/src/test_utilities/find_element.dart';
+import 'package:analyzer/src/utilities/legacy.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import 'context_collection_resolution.dart';
@@ -24,343 +25,423 @@
   }
 
   test_optIn_fromOptOut_class() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {}
 ''');
 
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.7
 import 'a.dart';
 
 f(A a) {}
 ''');
 
-    assertNamedType(
-      findNode.namedType('A a'),
-      import_a.class_('A'),
-      'A*',
-    );
+      assertNamedType(
+        findNode.namedType('A a'),
+        import_a.class_('A'),
+        'A*',
+      );
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_optIn_fromOptOut_class_generic_toBounds() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A<T extends num> {}
 ''');
 
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.7
 import 'a.dart';
 
 f(A a) {}
 ''');
 
-    assertNamedType(
-      findNode.namedType('A a'),
-      import_a.class_('A'),
-      'A<num*>*',
-    );
+      assertNamedType(
+        findNode.namedType('A a'),
+        import_a.class_('A'),
+        'A<num*>*',
+      );
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_optIn_fromOptOut_class_generic_toBounds_dynamic() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A<T> {}
 ''');
 
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.7
 import 'a.dart';
 
 f(A a) {}
 ''');
 
-    assertNamedType(
-      findNode.namedType('A a'),
-      import_a.class_('A'),
-      'A<dynamic>*',
-    );
+      assertNamedType(
+        findNode.namedType('A a'),
+        import_a.class_('A'),
+        'A<dynamic>*',
+      );
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_optIn_fromOptOut_class_generic_typeArguments() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A<T> {}
 ''');
 
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.7
 import 'a.dart';
 
 f(A<int> a) {}
 ''');
 
-    assertNamedType(
-      findNode.namedType('A<int> a'),
-      import_a.class_('A'),
-      'A<int*>*',
-    );
+      assertNamedType(
+        findNode.namedType('A<int> a'),
+        import_a.class_('A'),
+        'A<int*>*',
+      );
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_optIn_fromOptOut_functionTypeAlias() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 typedef F = int Function(bool);
 ''');
 
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.7
 import 'a.dart';
 
 f(F a) {}
 ''');
 
-    var element = import_a.typeAlias('F');
+      var element = import_a.typeAlias('F');
 
-    var typeName = findNode.namedType('F a');
-    assertNamedType(typeName, element, 'int* Function(bool*)*');
+      var typeName = findNode.namedType('F a');
+      assertNamedType(typeName, element, 'int* Function(bool*)*');
 
-    assertTypeAlias(
-      typeName.typeOrThrow,
-      element: element,
-      typeArguments: [],
-    );
+      assertTypeAlias(
+        typeName.typeOrThrow,
+        element: element,
+        typeArguments: [],
+      );
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_optIn_fromOptOut_functionTypeAlias_generic_dynamic() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 typedef F<T> = T Function(bool);
 ''');
 
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.7
 import 'a.dart';
 
 f(F a) {}
 ''');
 
-    var element = import_a.typeAlias('F');
+      var element = import_a.typeAlias('F');
 
-    var typeName = findNode.namedType('F a');
-    assertNamedType(typeName, element, 'dynamic Function(bool*)*');
+      var typeName = findNode.namedType('F a');
+      assertNamedType(typeName, element, 'dynamic Function(bool*)*');
 
-    assertTypeAlias(
-      typeName.typeOrThrow,
-      element: element,
-      typeArguments: ['dynamic'],
-    );
+      assertTypeAlias(
+        typeName.typeOrThrow,
+        element: element,
+        typeArguments: ['dynamic'],
+      );
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_optIn_fromOptOut_functionTypeAlias_generic_toBounds() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 typedef F<T extends num> = T Function(bool);
 ''');
 
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.7
 import 'a.dart';
 
 f(F a) {}
 ''');
 
-    var element = import_a.typeAlias('F');
+      var element = import_a.typeAlias('F');
 
-    var typeName = findNode.namedType('F a');
-    assertNamedType(typeName, element, 'num* Function(bool*)*');
+      var typeName = findNode.namedType('F a');
+      assertNamedType(typeName, element, 'num* Function(bool*)*');
 
-    assertTypeAlias(
-      typeName.typeOrThrow,
-      element: element,
-      typeArguments: ['num*'],
-    );
+      assertTypeAlias(
+        typeName.typeOrThrow,
+        element: element,
+        typeArguments: ['num*'],
+      );
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_optIn_fromOptOut_functionTypeAlias_generic_typeArguments() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 typedef F<T> = T Function(bool);
 ''');
 
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.7
 import 'a.dart';
 
 f(F<int> a) {}
 ''');
 
-    var element = import_a.typeAlias('F');
+      var element = import_a.typeAlias('F');
 
-    var typeName = findNode.namedType('F<int> a');
-    assertNamedType(typeName, element, 'int* Function(bool*)*');
+      var typeName = findNode.namedType('F<int> a');
+      assertNamedType(typeName, element, 'int* Function(bool*)*');
 
-    assertTypeAlias(
-      typeName.typeOrThrow,
-      element: element,
-      typeArguments: ['int*'],
-    );
+      assertTypeAlias(
+        typeName.typeOrThrow,
+        element: element,
+        typeArguments: ['int*'],
+      );
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_optOut_fromOptIn_class() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 // @dart = 2.7
 class A {}
 ''');
 
-    await assertErrorsInCode(r'''
+      await assertErrorsInCode(r'''
 import 'a.dart';
 
 f(A a) {}
 ''', [
-      error(HintCode.IMPORT_OF_LEGACY_LIBRARY_INTO_NULL_SAFE, 7, 8),
-    ]);
+        error(HintCode.IMPORT_OF_LEGACY_LIBRARY_INTO_NULL_SAFE, 7, 8),
+      ]);
 
-    assertNamedType(
-      findNode.namedType('A a'),
-      import_a.class_('A'),
-      'A',
-    );
+      assertNamedType(
+        findNode.namedType('A a'),
+        import_a.class_('A'),
+        'A',
+      );
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_optOut_fromOptIn_class_generic_toBounds() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 // @dart = 2.7
 class A<T extends num> {}
 ''');
 
-    await assertErrorsInCode(r'''
+      await assertErrorsInCode(r'''
 import 'a.dart';
 
 f(A a) {}
 ''', [
-      error(HintCode.IMPORT_OF_LEGACY_LIBRARY_INTO_NULL_SAFE, 7, 8),
-    ]);
+        error(HintCode.IMPORT_OF_LEGACY_LIBRARY_INTO_NULL_SAFE, 7, 8),
+      ]);
 
-    assertNamedType(
-      findNode.namedType('A a'),
-      import_a.class_('A'),
-      'A<num*>',
-    );
+      assertNamedType(
+        findNode.namedType('A a'),
+        import_a.class_('A'),
+        'A<num*>',
+      );
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_optOut_fromOptIn_class_generic_toBounds_dynamic() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 // @dart = 2.7
 class A<T> {}
 ''');
 
-    await assertErrorsInCode(r'''
+      await assertErrorsInCode(r'''
 import 'a.dart';
 
 f(A a) {}
 ''', [
-      error(HintCode.IMPORT_OF_LEGACY_LIBRARY_INTO_NULL_SAFE, 7, 8),
-    ]);
+        error(HintCode.IMPORT_OF_LEGACY_LIBRARY_INTO_NULL_SAFE, 7, 8),
+      ]);
 
-    assertNamedType(
-      findNode.namedType('A a'),
-      import_a.class_('A'),
-      'A<dynamic>',
-    );
+      assertNamedType(
+        findNode.namedType('A a'),
+        import_a.class_('A'),
+        'A<dynamic>',
+      );
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_optOut_fromOptIn_class_generic_typeArguments() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 // @dart = 2.7
 class A<T> {}
 ''');
 
-    await assertErrorsInCode(r'''
+      await assertErrorsInCode(r'''
 import 'a.dart';
 
 f(A<int> a) {}
 ''', [
-      error(HintCode.IMPORT_OF_LEGACY_LIBRARY_INTO_NULL_SAFE, 7, 8),
-    ]);
+        error(HintCode.IMPORT_OF_LEGACY_LIBRARY_INTO_NULL_SAFE, 7, 8),
+      ]);
 
-    assertNamedType(
-      findNode.namedType('A<int> a'),
-      import_a.class_('A'),
-      'A<int>',
-    );
+      assertNamedType(
+        findNode.namedType('A<int> a'),
+        import_a.class_('A'),
+        'A<int>',
+      );
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_optOut_fromOptIn_functionTypeAlias() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 // @dart = 2.7
 typedef F = int Function();
 ''');
 
-    await assertErrorsInCode(r'''
+      await assertErrorsInCode(r'''
 import 'a.dart';
 
 f(F a) {}
 ''', [
-      error(HintCode.IMPORT_OF_LEGACY_LIBRARY_INTO_NULL_SAFE, 7, 8),
-    ]);
+        error(HintCode.IMPORT_OF_LEGACY_LIBRARY_INTO_NULL_SAFE, 7, 8),
+      ]);
 
-    assertNamedType(
-      findNode.namedType('F a'),
-      import_a.typeAlias('F'),
-      'int* Function()',
-    );
+      assertNamedType(
+        findNode.namedType('F a'),
+        import_a.typeAlias('F'),
+        'int* Function()',
+      );
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_optOut_fromOptIn_functionTypeAlias_generic_toBounds() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 // @dart = 2.7
 typedef F<T extends num> = T Function();
 ''');
 
-    await assertErrorsInCode(r'''
+      await assertErrorsInCode(r'''
 import 'a.dart';
 
 f(F a) {}
 ''', [
-      error(HintCode.IMPORT_OF_LEGACY_LIBRARY_INTO_NULL_SAFE, 7, 8),
-    ]);
+        error(HintCode.IMPORT_OF_LEGACY_LIBRARY_INTO_NULL_SAFE, 7, 8),
+      ]);
 
-    assertNamedType(
-      findNode.namedType('F a'),
-      import_a.typeAlias('F'),
-      'num* Function()',
-    );
+      assertNamedType(
+        findNode.namedType('F a'),
+        import_a.typeAlias('F'),
+        'num* Function()',
+      );
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_optOut_fromOptIn_functionTypeAlias_generic_toBounds_dynamic() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 // @dart = 2.7
 typedef F<T> = T Function();
 ''');
 
-    await assertErrorsInCode(r'''
+      await assertErrorsInCode(r'''
 import 'a.dart';
 
 f(F a) {}
 ''', [
-      error(HintCode.IMPORT_OF_LEGACY_LIBRARY_INTO_NULL_SAFE, 7, 8),
-    ]);
+        error(HintCode.IMPORT_OF_LEGACY_LIBRARY_INTO_NULL_SAFE, 7, 8),
+      ]);
 
-    assertNamedType(
-      findNode.namedType('F a'),
-      import_a.typeAlias('F'),
-      'dynamic Function()',
-    );
+      assertNamedType(
+        findNode.namedType('F a'),
+        import_a.typeAlias('F'),
+        'dynamic Function()',
+      );
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_optOut_fromOptIn_functionTypeAlias_generic_typeArguments() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 // @dart = 2.7
 typedef F<T> = T Function();
 ''');
 
-    await assertErrorsInCode(r'''
+      await assertErrorsInCode(r'''
 import 'a.dart';
 
 f(F<int> a) {}
 ''', [
-      error(HintCode.IMPORT_OF_LEGACY_LIBRARY_INTO_NULL_SAFE, 7, 8),
-    ]);
+        error(HintCode.IMPORT_OF_LEGACY_LIBRARY_INTO_NULL_SAFE, 7, 8),
+      ]);
 
-    assertNamedType(
-      findNode.namedType('F<int> a'),
-      import_a.typeAlias('F'),
-      'int* Function()',
-    );
+      assertNamedType(
+        findNode.namedType('F<int> a'),
+        import_a.typeAlias('F'),
+        'int* Function()',
+      );
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_typeAlias_asInstanceCreation_explicitNew_typeArguments_interfaceType_none() async {
@@ -437,20 +518,25 @@
   }
 
   test_typeAlias_asParameterType_interfaceType_none_inLegacy() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 typedef X<T> = Map<int, T>;
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.9
 import 'a.dart';
 void f(X<String> a) {}
 ''');
 
-    assertNamedType(
-      findNode.namedType('X<String>'),
-      findElement.importFind('package:test/a.dart').typeAlias('X'),
-      'Map<int*, String*>*',
-    );
+      assertNamedType(
+        findNode.namedType('X<String>'),
+        findElement.importFind('package:test/a.dart').typeAlias('X'),
+        'Map<int*, String*>*',
+      );
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_typeAlias_asParameterType_interfaceType_question() async {
@@ -473,20 +559,25 @@
   }
 
   test_typeAlias_asParameterType_interfaceType_question_inLegacy() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 typedef X<T> = List<T?>;
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.9
 import 'a.dart';
 void f(X<int> a) {}
 ''');
 
-    assertNamedType(
-      findNode.namedType('X<int>'),
-      findElement.importFind('package:test/a.dart').typeAlias('X'),
-      'List<int*>*',
-    );
+      assertNamedType(
+        findNode.namedType('X<int>'),
+        findElement.importFind('package:test/a.dart').typeAlias('X'),
+        'List<int*>*',
+      );
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_typeAlias_asParameterType_Never_none() async {
@@ -509,20 +600,25 @@
   }
 
   test_typeAlias_asParameterType_Never_none_inLegacy() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 typedef X = Never;
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.9
 import 'a.dart';
 void f(X a) {}
 ''');
 
-    assertNamedType(
-      findNode.namedType('X a'),
-      findElement.importFind('package:test/a.dart').typeAlias('X'),
-      'Null*',
-    );
+      assertNamedType(
+        findNode.namedType('X a'),
+        findElement.importFind('package:test/a.dart').typeAlias('X'),
+        'Null*',
+      );
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_typeAlias_asParameterType_Never_question() async {
diff --git a/pkg/analyzer/test/src/diagnostics/cast_from_null_always_fails_test.dart b/pkg/analyzer/test/src/diagnostics/cast_from_null_always_fails_test.dart
index 0d7369b..ffb5bde 100644
--- a/pkg/analyzer/test/src/diagnostics/cast_from_null_always_fails_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/cast_from_null_always_fails_test.dart
@@ -3,6 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/src/error/codes.dart';
+import 'package:analyzer/src/utilities/legacy.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import '../dart/resolution/context_collection_resolution.dart';
@@ -72,15 +73,20 @@
   }
 
   test_Null_preNullSafety() async {
-    await assertErrorsInCode('''
+    try {
+      noSoundNullSafety = false;
+      await assertErrorsInCode('''
 // @dart=2.9
 
 void f(Null n) {
   n as int;
 }
 ''', [
-      error(HintCode.UNNECESSARY_CAST, 33, 8),
-    ]);
+        error(HintCode.UNNECESSARY_CAST, 33, 8),
+      ]);
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_nullable_nonNullable() async {
diff --git a/pkg/analyzer/test/src/diagnostics/conflicting_generic_interfaces_test.dart b/pkg/analyzer/test/src/diagnostics/conflicting_generic_interfaces_test.dart
index 9bf45bb..f39ea41 100644
--- a/pkg/analyzer/test/src/diagnostics/conflicting_generic_interfaces_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/conflicting_generic_interfaces_test.dart
@@ -3,6 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/src/error/codes.dart';
+import 'package:analyzer/src/utilities/legacy.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import '../dart/resolution/context_collection_resolution.dart';
@@ -47,31 +48,41 @@
   }
 
   test_class_extends_implements_optOut() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class I<T> {}
 class A implements I<int> {}
 class B implements I<int?> {}
 ''');
-    await assertNoErrorsInCode('''
+      await assertNoErrorsInCode('''
 // @dart = 2.5
 import 'a.dart';
 
 class C extends A implements B {}
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_class_extends_optIn_implements_optOut() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A<T> {}
 
 class B extends A<int> {}
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.5
 import 'a.dart';
 
 class C extends B implements A<int> {}
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_class_extends_with() async {
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 0526a6f..e5ffe47 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
@@ -3,6 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/src/error/codes.dart';
+import 'package:analyzer/src/utilities/legacy.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import '../dart/resolution/context_collection_resolution.dart';
@@ -75,17 +76,22 @@
   }
 
   test_notGeneric_null_forNonNullable_fromLegacy() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class C {
   final int f;
   const C(a) : f = a;
 }
 ''');
-    await assertNoErrorsInCode('''
+      await assertNoErrorsInCode('''
 // @dart = 2.9
 import 'a.dart';
 const a = const C(null);
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_notGeneric_null_forNonNullable_fromNullSafe() async {
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 79cb199..46a6a5a 100644
--- a/pkg/analyzer/test/src/diagnostics/could_not_infer_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/could_not_infer_test.dart
@@ -3,6 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/src/error/codes.dart';
+import 'package:analyzer/src/utilities/legacy.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import '../dart/resolution/context_collection_resolution.dart';
@@ -19,13 +20,15 @@
 @reflectiveTest
 class CouldNotInferTest extends PubPackageResolutionTest {
   test_constructor_nullSafe_fromLegacy() async {
-    newFile('$testPackageLibPath/a.dart', '''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', '''
 class C<T extends Object> {
   C(T t);
 }
 ''');
 
-    await assertNoErrorsInCode('''
+      await assertNoErrorsInCode('''
 // @dart = 2.8
 import 'a.dart';
 
@@ -33,6 +36,9 @@
   C(a);
 }
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_functionType() async {
diff --git a/pkg/analyzer/test/src/diagnostics/deprecated_member_use_test.dart b/pkg/analyzer/test/src/diagnostics/deprecated_member_use_test.dart
index 1dbc6ff..eff7852 100644
--- a/pkg/analyzer/test/src/diagnostics/deprecated_member_use_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/deprecated_member_use_test.dart
@@ -4,6 +4,7 @@
 
 import 'package:analyzer/file_system/file_system.dart';
 import 'package:analyzer/src/error/codes.dart';
+import 'package:analyzer/src/utilities/legacy.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import '../dart/resolution/context_collection_resolution.dart';
@@ -39,13 +40,15 @@
 class DeprecatedMemberUse_BasicWorkspaceTest extends PubPackageResolutionTest
     with DeprecatedMemberUse_BasicWorkspaceTestCases {
   test_instanceCreation_namedParameter_fromLegacy() async {
-    newFile('$workspaceRootPath/aaa/lib/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$workspaceRootPath/aaa/lib/a.dart', r'''
 class A {
   A({@deprecated int a}) {}
 }
 ''');
 
-    await assertErrorsInCode(r'''
+      await assertErrorsInCode(r'''
 // @dart = 2.9
 import 'package:aaa/a.dart';
 
@@ -53,16 +56,21 @@
   A(a: 0);
 }
 ''', [
-      error(HintCode.DEPRECATED_MEMBER_USE, 60, 1),
-    ]);
+        error(HintCode.DEPRECATED_MEMBER_USE, 60, 1),
+      ]);
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_methodInvocation_namedParameter_ofFunction_fromLegacy() async {
-    newFile('$workspaceRootPath/aaa/lib/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$workspaceRootPath/aaa/lib/a.dart', r'''
 void foo({@deprecated int a}) {}
 ''');
 
-    await assertErrorsInCode(r'''
+      await assertErrorsInCode(r'''
 // @dart = 2.9
 import 'package:aaa/a.dart';
 
@@ -70,18 +78,23 @@
   foo(a: 0);
 }
 ''', [
-      error(HintCode.DEPRECATED_MEMBER_USE, 62, 1),
-    ]);
+        error(HintCode.DEPRECATED_MEMBER_USE, 62, 1),
+      ]);
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_methodInvocation_namedParameter_ofMethod_fromLegacy() async {
-    newFile('$workspaceRootPath/aaa/lib/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$workspaceRootPath/aaa/lib/a.dart', r'''
 class A {
   void foo({@deprecated int a}) {}
 }
 ''');
 
-    await assertErrorsInCode(r'''
+      await assertErrorsInCode(r'''
 // @dart = 2.9
 import 'package:aaa/a.dart';
 
@@ -89,18 +102,23 @@
   a.foo(a: 0);
 }
 ''', [
-      error(HintCode.DEPRECATED_MEMBER_USE, 67, 1),
-    ]);
+        error(HintCode.DEPRECATED_MEMBER_USE, 67, 1),
+      ]);
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_superConstructorInvocation_namedParameter_fromLegacy() async {
-    newFile('$workspaceRootPath/aaa/lib/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$workspaceRootPath/aaa/lib/a.dart', r'''
 class A {
   A({@deprecated int a}) {}
 }
 ''');
 
-    await assertErrorsInCode(r'''
+      await assertErrorsInCode(r'''
 // @dart = 2.9
 import 'package:aaa/a.dart';
 
@@ -108,8 +126,11 @@
   B() : super(a: 0);
 }
 ''', [
-      error(HintCode.DEPRECATED_MEMBER_USE, 79, 1),
-    ]);
+        error(HintCode.DEPRECATED_MEMBER_USE, 79, 1),
+      ]);
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 }
 
diff --git a/pkg/analyzer/test/src/diagnostics/experiment_not_enabled_test.dart b/pkg/analyzer/test/src/diagnostics/experiment_not_enabled_test.dart
index 4dbaeab..9f952d71 100644
--- a/pkg/analyzer/test/src/diagnostics/experiment_not_enabled_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/experiment_not_enabled_test.dart
@@ -4,6 +4,7 @@
 
 import 'package:analyzer/src/dart/error/syntactic_errors.dart';
 import 'package:analyzer/src/error/codes.dart';
+import 'package:analyzer/src/utilities/legacy.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import '../dart/resolution/context_collection_resolution.dart';
@@ -33,7 +34,9 @@
   }
 
   test_constructor_tearoffs_disabled_grammar_pre_nnbd() async {
-    await assertErrorsInCode('''
+    try {
+      noSoundNullSafety = false;
+      await assertErrorsInCode('''
 // @dart=2.9
 class Foo<X> {
   const Foo.bar();
@@ -43,9 +46,12 @@
   Foo<int>.bar.baz();
 }
 ''', [
-      error(ParserErrorCode.EXPERIMENT_NOT_ENABLED, 83, 5),
-      error(CompileTimeErrorCode.UNDEFINED_METHOD, 93, 3),
-    ]);
+        error(ParserErrorCode.EXPERIMENT_NOT_ENABLED, 83, 5),
+        error(CompileTimeErrorCode.UNDEFINED_METHOD, 93, 3),
+      ]);
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_nonFunctionTypeAliases_disabled() async {
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 dc6b3de..3654285 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
@@ -3,6 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/src/dart/error/ffi_code.dart';
+import 'package:analyzer/src/utilities/legacy.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import '../dart/resolution/context_collection_resolution.dart';
@@ -17,25 +18,35 @@
 class FieldInStructWithInitializerTest extends PubPackageResolutionTest
     with WithoutNullSafetyMixin {
   test_instance_withInitializer() async {
-    await assertErrorsInCode(r'''
+    try {
+      noSoundNullSafety = false;
+      await assertErrorsInCode(r'''
 import 'dart:ffi';
 class C extends Struct {
   Pointer p = nullptr;
 }
 ''', [
-      error(FfiCode.FIELD_IN_STRUCT_WITH_INITIALIZER, 54, 1),
-    ]);
+        error(FfiCode.FIELD_IN_STRUCT_WITH_INITIALIZER, 54, 1),
+      ]);
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_instance_withInitializer2() async {
-    await assertErrorsInCode(r'''
+    try {
+      noSoundNullSafety = false;
+      await assertErrorsInCode(r'''
 import 'dart:ffi';
 class C extends Union {
   Pointer p = nullptr;
 }
 ''', [
-      error(FfiCode.FIELD_IN_STRUCT_WITH_INITIALIZER, 53, 1),
-    ]);
+        error(FfiCode.FIELD_IN_STRUCT_WITH_INITIALIZER, 53, 1),
+      ]);
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_instance_withoutInitializer() async {
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 b0027ed..9b0c71d 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
@@ -3,6 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/src/dart/error/ffi_code.dart';
+import 'package:analyzer/src/utilities/legacy.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import '../dart/resolution/context_collection_resolution.dart';
@@ -17,27 +18,37 @@
 class FieldInitializerInStructTest extends PubPackageResolutionTest
     with WithoutNullSafetyMixin {
   test_fieldInitializer() async {
-    await assertErrorsInCode('''
+    try {
+      noSoundNullSafety = false;
+      await assertErrorsInCode('''
 import 'dart:ffi';
 class C extends Struct {
   @Int32() int f;
   C() : f = 0;
 }
 ''', [
-      error(FfiCode.FIELD_INITIALIZER_IN_STRUCT, 70, 5),
-    ]);
+        error(FfiCode.FIELD_INITIALIZER_IN_STRUCT, 70, 5),
+      ]);
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_fieldInitializer2() async {
-    await assertErrorsInCode('''
+    try {
+      noSoundNullSafety = false;
+      await assertErrorsInCode('''
 import 'dart:ffi';
 class C extends Union {
   @Int32() int f;
   C() : f = 0;
 }
 ''', [
-      error(FfiCode.FIELD_INITIALIZER_IN_STRUCT, 69, 5),
-    ]);
+        error(FfiCode.FIELD_INITIALIZER_IN_STRUCT, 69, 5),
+      ]);
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_superInitializer() async {
diff --git a/pkg/analyzer/test/src/diagnostics/illegal_language_version_override_test.dart b/pkg/analyzer/test/src/diagnostics/illegal_language_version_override_test.dart
index 994c09b..efc7c23 100644
--- a/pkg/analyzer/test/src/diagnostics/illegal_language_version_override_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/illegal_language_version_override_test.dart
@@ -2,11 +2,8 @@
 // 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/dart/analysis/context_root.dart';
 import 'package:analyzer/src/error/codes.dart';
-import 'package:analyzer/src/generated/engine.dart';
-import 'package:analyzer/src/generated/sdk.dart';
-import 'package:pub_semver/src/version_constraint.dart';
+import 'package:analyzer/src/utilities/legacy.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import '../dart/resolution/context_collection_resolution.dart';
@@ -34,6 +31,7 @@
   }
 
   test_hasOverride_less() async {
+    noSoundNullSafety = true;
     await assertErrorsInCode(r'''
 // @dart = 2.9
 int a = null;
@@ -43,43 +41,15 @@
   }
 
   test_hasPackageLanguage_less_hasOverride_greater() async {
-    writeTestPackageConfig(
-      PackageConfigFileBuilder(),
-      languageVersion: '2.9',
-    );
-
     await assertNoErrorsInCode(r'''
-// @dart = 2.12
+// @dart = 2.14
 void f() {}
 ''');
   }
 
-  test_hasPackageLanguage_less_noOverride_less() async {
-    writeTestPackageConfig(
-      PackageConfigFileBuilder(),
-      languageVersion: '2.9',
-    );
-
-    await assertErrorsInCode(r'''
-void f() {}
-''', [
-      error(CompileTimeErrorCode.ILLEGAL_LANGUAGE_VERSION_OVERRIDE, 0, 0),
-    ]);
-  }
-
   test_noOverride() async {
     await assertNoErrorsInCode(r'''
 void f() {}
 ''');
   }
-
-  @override
-  void updateAnalysisOptions({
-    required AnalysisOptionsImpl analysisOptions,
-    required ContextRoot contextRoot,
-    required DartSdk sdk,
-  }) {
-    analysisOptions.sourceLanguageConstraint =
-        VersionConstraint.parse('>= 2.12.0');
-  }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/import_of_legacy_library_into_null_safe_test.dart b/pkg/analyzer/test/src/diagnostics/import_of_legacy_library_into_null_safe_test.dart
index ed32222..f3f81de 100644
--- a/pkg/analyzer/test/src/diagnostics/import_of_legacy_library_into_null_safe_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/import_of_legacy_library_into_null_safe_test.dart
@@ -3,6 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/src/error/codes.dart';
+import 'package:analyzer/src/utilities/legacy.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import '../dart/resolution/context_collection_resolution.dart';
@@ -16,16 +17,21 @@
 @reflectiveTest
 class ImportOfLegacyLibraryInoNullSafeTest extends PubPackageResolutionTest {
   test_legacy_into_legacy() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 // @dart = 2.9
 class A {}
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.9
 import 'a.dart';
 
 void f(A a) {}
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_legacy_into_nullSafe() async {
@@ -43,15 +49,20 @@
   }
 
   test_nullSafe_into_legacy() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {}
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.9
 import 'a.dart';
 
 void f(A a) {}
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_nullSafe_into_nullSafe() async {
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 f0abbbc..c6dd4f23 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
@@ -22,7 +22,7 @@
 ''');
 
     await assertNoErrorsInCode(r'''
-// @dart = 2.8
+// @dart = 2.12
 import 'a.dart';
 
 void f(int e) {
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 c67f418..c387f9f 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
@@ -3,6 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/src/error/codes.dart';
+import 'package:analyzer/src/utilities/legacy.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import '../../generated/test_support.dart';
@@ -26,15 +27,15 @@
   test_both_different() async {
     await _checkLibraryAndPart(
       libraryContent: r'''
-// @dart = 2.5
+// @dart = 2.12
 part 'b.dart';
 ''',
       partContent: r'''
-// @dart = 2.6
+// @dart = 2.13
 part of 'a.dart';
 ''',
       libraryErrors: [
-        error(_errorCode, 20, 8),
+        error(_errorCode, 21, 8),
       ],
     );
   }
@@ -42,11 +43,11 @@
   test_both_same() async {
     await _checkLibraryAndPart(
       libraryContent: r'''
-// @dart = 2.5
+// @dart = 2.12
 part 'b.dart';
 ''',
       partContent: r'''
-// @dart = 2.5
+// @dart = 2.12
 part of 'a.dart';
 ''',
       libraryErrors: [],
@@ -66,18 +67,23 @@
   }
 
   test_onlyLibrary() async {
-    await _checkLibraryAndPart(
-      libraryContent: r'''
+    try {
+      noSoundNullSafety = false;
+      await _checkLibraryAndPart(
+        libraryContent: r'''
 // @dart = 2.5
 part 'b.dart';
 ''',
-      partContent: r'''
+        partContent: r'''
 part of 'a.dart';
 ''',
-      libraryErrors: [
-        error(_errorCode, 20, 8),
-      ],
-    );
+        libraryErrors: [
+          error(_errorCode, 20, 8),
+        ],
+      );
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_onlyPart() async {
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_language_override_greater_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_language_override_greater_test.dart
index 67c1c08..27191d5 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_language_override_greater_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_language_override_greater_test.dart
@@ -49,14 +49,14 @@
   }
 
   test_lessThanPackage() async {
-    _configureTestPackageLanguageVersion('2.5');
+    _configureTestPackageLanguageVersion('2.19');
     await assertNoErrorsInCode(r'''
-// @dart = 2.4
+// @dart = 2.18
 class A {}
 ''');
     _assertUnitLanguageVersion(
-      package: Version.parse('2.5.0'),
-      override: Version.parse('2.4.0'),
+      package: Version.parse('2.19.0'),
+      override: Version.parse('2.18.0'),
     );
   }
 
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 d6b76ce..5700538 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_language_override_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_language_override_test.dart
@@ -35,21 +35,21 @@
 
   test_correct_withMultipleWhitespace() async {
     await assertNoErrorsInCode('''
-//  @dart  =  2.0${"  "}
+//  @dart  =  2.19${"  "}
 int i = 0;
 ''');
   }
 
   test_correct_withoutWhitespace() async {
     await assertNoErrorsInCode(r'''
-//@dart=2.0
+//@dart=2.19
 int i = 0;
 ''');
   }
 
   test_correct_withWhitespace() async {
     await assertNoErrorsInCode(r'''
-// @dart = 2.0
+// @dart = 2.19
 int i = 0;
 ''');
   }
@@ -74,9 +74,9 @@
 
   test_invalidOverrideFollowsValidOverride() async {
     await assertNoErrorsInCode(r'''
-// @dart = 2.0
+// @dart = 2.19
 // comment.
-// @dart >= 2.0
+// @dart >= 2.19
 int i = 0;
 ''');
   }
@@ -116,7 +116,7 @@
 
   test_location_beforeDeclaration() async {
     await assertNoErrorsInCode(r'''
-// @dart = 2.5
+// @dart = 2.19
 class A {}
 ''');
   }
@@ -198,7 +198,7 @@
 
   test_noWhitespace() async {
     await assertNoErrorsInCode(r'''
-//@dart=2.0
+//@dart=2.19
 int i = 0;
 ''');
   }
@@ -213,7 +213,7 @@
   test_shebangLine() async {
     await assertNoErrorsInCode(r'''
 #!/usr/bin/dart
-// @dart = 2.0
+// @dart = 2.19
 int i = 0;
 ''');
   }
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_override_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_override_test.dart
index 7a6a04d..619593b 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_override_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_override_test.dart
@@ -3,6 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/src/error/codes.dart';
+import 'package:analyzer/src/utilities/legacy.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import '../dart/resolution/context_collection_resolution.dart';
@@ -215,13 +216,15 @@
   }
 
   test_method_parameter_functionTyped_optOut_extends_optIn() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 abstract class A {
   A catchError(void Function(Object) a);
 }
 ''');
 
-    await assertNoErrorsInCode('''
+      await assertNoErrorsInCode('''
 // @dart=2.6
 import 'a.dart';
 
@@ -229,16 +232,21 @@
   A catchError(void Function(dynamic) a) => this;
 }
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_method_parameter_interfaceOptOut_concreteOptIn() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {
   void foo(Object a) {}
 }
 ''');
 
-    await assertNoErrorsInCode('''
+      await assertNoErrorsInCode('''
 // @dart=2.6
 import 'a.dart';
 
@@ -246,6 +254,9 @@
   void foo(dynamic a);
 }
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_mixedInheritance_1() async {
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 77ac7e9..eb66e03 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
@@ -3,6 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/src/error/codes.dart';
+import 'package:analyzer/src/utilities/legacy.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import '../dart/resolution/context_collection_resolution.dart';
@@ -26,24 +27,36 @@
   }
 
   test_literal_null() async {
-    await assertErrorsInCode(r'''
+    try {
+      noSoundNullSafety = false;
+      await assertErrorsInCode(r'''
 // @dart = 2.9
 void f() {
   null();
 }
 ''', [
-      error(CompileTimeErrorCode.INVOCATION_OF_NON_FUNCTION_EXPRESSION, 28, 4),
-    ]);
+        error(
+            CompileTimeErrorCode.INVOCATION_OF_NON_FUNCTION_EXPRESSION, 28, 4),
+      ]);
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_type_Null() async {
-    await assertErrorsInCode(r'''
+    try {
+      noSoundNullSafety = false;
+      await assertErrorsInCode(r'''
 // @dart = 2.9
 void f(Null a) {
   a();
 }
 ''', [
-      error(CompileTimeErrorCode.INVOCATION_OF_NON_FUNCTION_EXPRESSION, 34, 1),
-    ]);
+        error(
+            CompileTimeErrorCode.INVOCATION_OF_NON_FUNCTION_EXPRESSION, 34, 1),
+      ]);
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 }
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 7ef82a2..8d2122f 100644
--- a/pkg/analyzer/test/src/diagnostics/missing_required_param_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/missing_required_param_test.dart
@@ -3,6 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/src/error/codes.dart';
+import 'package:analyzer/src/utilities/legacy.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import '../../generated/test_support.dart';
@@ -78,12 +79,14 @@
   }
 
   test_constructor_legacy_argumentGiven() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {
   A({required int a});
 }
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.7
 import "a.dart";
 
@@ -91,15 +94,20 @@
   A(a: 0);
 }
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_constructor_legacy_missingArgument() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {
   A({required int a});
 }
 ''');
-    await assertErrorsInCode(r'''
+      await assertErrorsInCode(r'''
 // @dart = 2.7
 import "a.dart";
 
@@ -107,8 +115,11 @@
   A();
 }
 ''', [
-      error(HintCode.MISSING_REQUIRED_PARAM, 46, 1),
-    ]);
+        error(HintCode.MISSING_REQUIRED_PARAM, 46, 1),
+      ]);
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_constructor_nullSafe_argumentGiven() async {
@@ -222,10 +233,12 @@
   }
 
   test_function_legacy_argumentGiven() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 void foo({required int a}) {}
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.7
 import "a.dart";
 
@@ -233,13 +246,18 @@
   foo(a: 0);
 }
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_function_legacy_missingArgument() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 void foo({required int a}) {}
 ''');
-    await assertErrorsInCode(r'''
+      await assertErrorsInCode(r'''
 // @dart = 2.7
 import "a.dart";
 
@@ -247,8 +265,11 @@
   foo();
 }
 ''', [
-      error(HintCode.MISSING_REQUIRED_PARAM, 46, 3),
-    ]);
+        error(HintCode.MISSING_REQUIRED_PARAM, 46, 3),
+      ]);
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_functionInvocation() async {
@@ -292,12 +313,14 @@
   }
 
   test_method_legacy_argumentGiven() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {
   void foo({required int a}) {}
 }
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.7
 import "a.dart";
 
@@ -305,15 +328,20 @@
   a.foo(a: 0);
 }
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_method_legacy_missingArgument() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {
   void foo({required int a}) {}
 }
 ''');
-    await assertErrorsInCode(r'''
+      await assertErrorsInCode(r'''
 // @dart = 2.7
 import "a.dart";
 
@@ -321,8 +349,11 @@
   a.foo();
 }
 ''', [
-      error(HintCode.MISSING_REQUIRED_PARAM, 51, 3),
-    ]);
+        error(HintCode.MISSING_REQUIRED_PARAM, 51, 3),
+      ]);
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_typedef_function() async {
diff --git a/pkg/analyzer/test/src/diagnostics/missing_return_test.dart b/pkg/analyzer/test/src/diagnostics/missing_return_test.dart
index bcc6ccde..86ec7b6 100644
--- a/pkg/analyzer/test/src/diagnostics/missing_return_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/missing_return_test.dart
@@ -3,6 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/src/error/codes.dart';
+import 'package:analyzer/src/utilities/legacy.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import '../dart/resolution/context_collection_resolution.dart';
@@ -36,12 +37,14 @@
   }
 
   test_function_sync_block_Never() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 Never foo() {
   throw 0;
 }
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.8
 import 'a.dart';
 
@@ -49,6 +52,9 @@
   foo();
 }
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_function_sync_block_Null() async {
diff --git a/pkg/analyzer/test/src/diagnostics/mixin_inference_no_possible_substitution_test.dart b/pkg/analyzer/test/src/diagnostics/mixin_inference_no_possible_substitution_test.dart
index 3b2bdfa..73411bd 100644
--- a/pkg/analyzer/test/src/diagnostics/mixin_inference_no_possible_substitution_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/mixin_inference_no_possible_substitution_test.dart
@@ -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 'package:analyzer/src/utilities/legacy.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import '../dart/resolution/context_collection_resolution.dart';
@@ -22,22 +23,27 @@
 class MixinInferenceNoPossibleSubstitutionTest extends PubPackageResolutionTest
     with MixinInferenceNoPossibleSubstitutionTestCases {
   test_valid_nonNullableMixins_legacyApplication() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A<T> {}
 
 mixin B<T> on A<T> {}
 mixin C<T> on A<T> {}
 ''');
 
-    await assertNoErrorsInCode('''
+      await assertNoErrorsInCode('''
 // @dart=2.8
 import 'a.dart';
 
 class D extends A<int> with B<int>, C {}
 ''');
 
-    assertType(findNode.namedType('B<int>'), 'B<int*>*');
-    assertType(findNode.namedType('C {}'), 'C<int*>*');
+      assertType(findNode.namedType('B<int>'), 'B<int*>*');
+      assertType(findNode.namedType('C {}'), 'C<int*>*');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 }
 
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 800c284..4e46e6f 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
@@ -3,6 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/src/error/codes.dart';
+import 'package:analyzer/src/utilities/legacy.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import '../dart/resolution/context_collection_resolution.dart';
@@ -80,12 +81,14 @@
   }
 
   test_super_requiredNamed_legacySubclass_explicitConstructor() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {
   A({required String s});
 }
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart=2.8
 import 'a.dart';
 
@@ -93,20 +96,28 @@
   B();
 }
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_super_requiredNamed_legacySubclass_implicitConstructor() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {
   A({required String s});
 }O
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart=2.8
 import 'a.dart';
 
 class B extends A {}
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_super_requiredNamed_subclass_explicit() async {
@@ -258,7 +269,9 @@
   }
 
   test_super_requiredPositional_subclass_explicit_language214() async {
-    await assertErrorsInCode(r'''
+    try {
+      noSoundNullSafety = false;
+      await assertErrorsInCode(r'''
 // @dart = 2.14
 class A {
   A(p);
@@ -267,8 +280,12 @@
   B();
 }
 ''', [
-      error(CompileTimeErrorCode.NO_DEFAULT_SUPER_CONSTRUCTOR_EXPLICIT, 58, 1),
-    ]);
+        error(
+            CompileTimeErrorCode.NO_DEFAULT_SUPER_CONSTRUCTOR_EXPLICIT, 58, 1),
+      ]);
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_super_requiredPositional_subclass_external() async {
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 e02e36a..d8b98cb 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
@@ -6,6 +6,7 @@
 import 'package:analyzer/src/dart/element/member.dart';
 import 'package:analyzer/src/dart/error/syntactic_errors.dart';
 import 'package:analyzer/src/test_utilities/find_element.dart';
+import 'package:analyzer/src/utilities/legacy.dart';
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
@@ -24,12 +25,14 @@
   }
 
   test_assignment_indexExpression() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {
   void operator[]=(int a, int b) {}
 }
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.5
 import 'a.dart';
 
@@ -38,8 +41,8 @@
 }
 ''');
 
-    var assignment = findNode.assignment(' = null;');
-    assertResolvedNodeText(assignment, r'''
+      var assignment = findNode.assignment(' = null;');
+      assertResolvedNodeText(assignment, r'''
 AssignmentExpression
   leftHandSide: IndexExpression
     target: SimpleIdentifier
@@ -72,15 +75,20 @@
   staticElement: <null>
   staticType: Null*
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_assignment_prefixedIdentifier_instanceTarget_class_field() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {
   int foo = 0;
 }
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.5
 import 'a.dart';
 
@@ -89,8 +97,8 @@
 }
 ''');
 
-    var assignment = findNode.assignment('foo =');
-    assertResolvedNodeText(assignment, r'''
+      var assignment = findNode.assignment('foo =');
+      assertResolvedNodeText(assignment, r'''
 AssignmentExpression
   leftHandSide: PrefixedIdentifier
     prefix: SimpleIdentifier
@@ -120,16 +128,21 @@
   staticElement: <null>
   staticType: int*
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_assignment_prefixedIdentifier_instanceTarget_extension_setter() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {}
 extension E on A {
   void set foo(int _) {}
 }
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.5
 import 'a.dart';
 
@@ -138,8 +151,8 @@
 }
 ''');
 
-    var assignment = findNode.assignment('foo =');
-    assertResolvedNodeText(assignment, r'''
+      var assignment = findNode.assignment('foo =');
+      assertResolvedNodeText(assignment, r'''
 AssignmentExpression
   leftHandSide: PrefixedIdentifier
     prefix: SimpleIdentifier
@@ -169,15 +182,20 @@
   staticElement: <null>
   staticType: int*
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_assignment_prefixedIdentifier_staticTarget_class_field() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {
   static int foo = 0;
 }
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.5
 import 'a.dart';
 
@@ -186,8 +204,8 @@
 }
 ''');
 
-    var assignment = findNode.assignment('foo =');
-    assertResolvedNodeText(assignment, r'''
+      var assignment = findNode.assignment('foo =');
+      assertResolvedNodeText(assignment, r'''
 AssignmentExpression
   leftHandSide: PrefixedIdentifier
     prefix: SimpleIdentifier
@@ -217,15 +235,20 @@
   staticElement: <null>
   staticType: int*
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_assignment_prefixedIdentifier_staticTarget_extension_field() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 extension E on int {
   static int foo = 0;
 }
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.5
 import 'a.dart';
 
@@ -234,8 +257,8 @@
 }
 ''');
 
-    var assignment = findNode.assignment('foo =');
-    assertResolvedNodeText(assignment, r'''
+      var assignment = findNode.assignment('foo =');
+      assertResolvedNodeText(assignment, r'''
 AssignmentExpression
   leftHandSide: PrefixedIdentifier
     prefix: SimpleIdentifier
@@ -265,13 +288,18 @@
   staticElement: <null>
   staticType: int*
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_assignment_prefixedIdentifier_topLevelVariable() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 int foo = 0;
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.5
 import 'a.dart' as p;
 
@@ -280,8 +308,8 @@
 }
 ''');
 
-    var assignment = findNode.assignment('foo =');
-    assertResolvedNodeText(assignment, r'''
+      var assignment = findNode.assignment('foo =');
+      assertResolvedNodeText(assignment, r'''
 AssignmentExpression
   leftHandSide: PrefixedIdentifier
     prefix: SimpleIdentifier
@@ -311,15 +339,20 @@
   staticElement: <null>
   staticType: int*
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_assignment_propertyAccess_class_field() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {
   int foo = 0;
 }
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.5
 import 'a.dart';
 
@@ -328,8 +361,8 @@
 }
 ''');
 
-    var assignment = findNode.assignment('foo =');
-    assertResolvedNodeText(assignment, r'''
+      var assignment = findNode.assignment('foo =');
+      assertResolvedNodeText(assignment, r'''
 AssignmentExpression
   leftHandSide: PropertyAccess
     target: InstanceCreationExpression
@@ -369,16 +402,21 @@
   staticElement: <null>
   staticType: int*
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_assignment_propertyAccess_extension_setter() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {}
 extension E on A {
   void set foo(int a) {}
 }
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.5
 import 'a.dart';
 
@@ -387,8 +425,8 @@
 }
 ''');
 
-    var assignment = findNode.assignment('foo =');
-    assertResolvedNodeText(assignment, r'''
+      var assignment = findNode.assignment('foo =');
+      assertResolvedNodeText(assignment, r'''
 AssignmentExpression
   leftHandSide: PropertyAccess
     target: InstanceCreationExpression
@@ -428,16 +466,21 @@
   staticElement: <null>
   staticType: int*
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_assignment_propertyAccess_extensionOverride_setter() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {}
 extension E on A {
   void set foo(int a) {}
 }
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.5
 import 'a.dart';
 
@@ -446,8 +489,8 @@
 }
 ''');
 
-    var assignment = findNode.assignment('foo =');
-    assertResolvedNodeText(assignment, r'''
+      var assignment = findNode.assignment('foo =');
+      assertResolvedNodeText(assignment, r'''
 AssignmentExpression
   leftHandSide: PropertyAccess
     target: ExtensionOverride
@@ -488,15 +531,20 @@
   staticElement: <null>
   staticType: int*
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_assignment_propertyAccess_superTarget() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {
   int foo = 0;
 }
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.5
 import 'a.dart';
 
@@ -507,8 +555,8 @@
 }
 ''');
 
-    var assignment = findNode.assignment('foo =');
-    assertResolvedNodeText(assignment, r'''
+      var assignment = findNode.assignment('foo =');
+      assertResolvedNodeText(assignment, r'''
 AssignmentExpression
   leftHandSide: PropertyAccess
     target: SuperExpression
@@ -536,13 +584,18 @@
   staticElement: <null>
   staticType: int*
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_assignment_simpleIdentifier_topLevelVariable() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 int foo = 0;
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.5
 import 'a.dart';
 
@@ -551,8 +604,8 @@
 }
 ''');
 
-    var assignment = findNode.assignment('foo =');
-    assertResolvedNodeText(assignment, r'''
+      var assignment = findNode.assignment('foo =');
+      assertResolvedNodeText(assignment, r'''
 AssignmentExpression
   leftHandSide: SimpleIdentifier
     token: foo
@@ -574,15 +627,20 @@
   staticElement: <null>
   staticType: Null*
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_binaryExpression() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {
   int operator+(int a) => 0;
 }
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.5
 import 'a.dart';
 
@@ -590,19 +648,24 @@
   a + null;
 }
 ''');
-    var binaryExpression = findNode.binary('a +');
-    assertInvokeType(binaryExpression, 'int* Function(int*)*');
-    assertType(binaryExpression, 'int*');
+      var binaryExpression = findNode.binary('a +');
+      assertInvokeType(binaryExpression, 'int* Function(int*)*');
+      assertType(binaryExpression, 'int*');
 
-    var element = binaryExpression.staticElement as MethodElement;
-    _assertLegacyMember(element, _import_a.method('+'));
+      var element = binaryExpression.staticElement as MethodElement;
+      _assertLegacyMember(element, _import_a.method('+'));
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_functionExpressionInvocation() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 int Function(int, int?)? foo;
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.5
 import 'a.dart';
 
@@ -610,24 +673,29 @@
   foo(null, null);
 }
 ''');
-    var invocation = findNode.functionExpressionInvocation('foo');
-    assertInvokeType(invocation, 'int* Function(int*, int*)*');
-    assertType(invocation, 'int*');
+      var invocation = findNode.functionExpressionInvocation('foo');
+      assertInvokeType(invocation, 'int* Function(int*, int*)*');
+      assertType(invocation, 'int*');
 
-    var identifier = findNode.simple('foo');
-    assertType(identifier, 'int* Function(int*, int*)*');
+      var identifier = findNode.simple('foo');
+      assertType(identifier, 'int* Function(int*, int*)*');
 
-    var element = identifier.staticElement as PropertyAccessorElement;
-    _assertLegacyMember(element, _import_a.topGet('foo'));
+      var element = identifier.staticElement as PropertyAccessorElement;
+      _assertLegacyMember(element, _import_a.topGet('foo'));
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_functionExpressionInvocation_call() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {
   int call(int a, int? b) => 0;
 }
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.5
 import 'a.dart';
 
@@ -635,24 +703,29 @@
   a(null, null);
 }
 ''');
-    var invocation = findNode.functionExpressionInvocation('a(null');
-    assertInvokeType(invocation, 'int* Function(int*, int*)*');
-    assertType(invocation, 'int*');
+      var invocation = findNode.functionExpressionInvocation('a(null');
+      assertInvokeType(invocation, 'int* Function(int*, int*)*');
+      assertType(invocation, 'int*');
 
-    var identifier = invocation.function;
-    assertType(identifier, 'A*');
+      var identifier = invocation.function;
+      assertType(identifier, 'A*');
 
-    var element = invocation.staticElement as MethodElement;
-    _assertLegacyMember(element, _import_a.method('call'));
+      var element = invocation.staticElement as MethodElement;
+      _assertLegacyMember(element, _import_a.method('call'));
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_functionExpressionInvocation_extension_staticTarget() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 extension E on int {
   static int Function(int) get foo => (_) => 0;
 }
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.5
 import 'a.dart';
 
@@ -660,24 +733,29 @@
   E.foo(null);
 }
 ''');
-    var invocation = findNode.functionExpressionInvocation('foo');
-    assertInvokeType(invocation, 'int* Function(int*)*');
-    assertType(invocation, 'int*');
+      var invocation = findNode.functionExpressionInvocation('foo');
+      assertInvokeType(invocation, 'int* Function(int*)*');
+      assertType(invocation, 'int*');
 
-    var identifier = findNode.simple('foo');
-    assertType(identifier, 'int* Function(int*)*');
+      var identifier = findNode.simple('foo');
+      assertType(identifier, 'int* Function(int*)*');
 
-    var element = identifier.staticElement as PropertyAccessorElement;
-    _assertLegacyMember(element, _import_a.getter('foo'));
+      var element = identifier.staticElement as PropertyAccessorElement;
+      _assertLegacyMember(element, _import_a.getter('foo'));
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_instanceCreation() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {
   A(int a, int? b);
 }
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.5
 import 'a.dart';
 
@@ -685,22 +763,27 @@
   A(null, null);
 }
 ''');
-    var instanceCreation = findNode.instanceCreation('A(null');
-    assertType(instanceCreation, 'A*');
+      var instanceCreation = findNode.instanceCreation('A(null');
+      assertType(instanceCreation, 'A*');
 
-    _assertLegacyMember(
-      instanceCreation.constructorName.staticElement,
-      _import_a.unnamedConstructor('A'),
-    );
+      _assertLegacyMember(
+        instanceCreation.constructorName.staticElement,
+        _import_a.unnamedConstructor('A'),
+      );
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_instanceCreation_generic() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A<T> {
   A(T a, T? b);
 }
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.5
 import 'a.dart';
 
@@ -708,38 +791,48 @@
   A<int>(null, null);
 }
 ''');
-    var instanceCreation = findNode.instanceCreation('A<int>(null');
-    assertType(instanceCreation, 'A<int*>*');
+      var instanceCreation = findNode.instanceCreation('A<int>(null');
+      assertType(instanceCreation, 'A<int*>*');
 
-    _assertLegacyMember(
-      instanceCreation.constructorName.staticElement,
-      _import_a.unnamedConstructor('A'),
-      expectedSubstitution: {'T': 'int*'},
-    );
+      _assertLegacyMember(
+        instanceCreation.constructorName.staticElement,
+        _import_a.unnamedConstructor('A'),
+        expectedSubstitution: {'T': 'int*'},
+      );
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_instanceCreation_generic_instantiateToBounds() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A<T extends num> {}
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.5
 import 'a.dart';
 
 var v = A();
 ''');
 
-    var v = findElement.topVar('v');
-    assertType(v.type, 'A<num*>*');
+      var v = findElement.topVar('v');
+      assertType(v.type, 'A<num*>*');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_methodInvocation_extension_functionTarget() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 extension E on void Function() {
   int foo(int a) => 0;
 }
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.5
 import 'a.dart';
 
@@ -747,24 +840,29 @@
   a.foo(null);
 }
 ''');
-    var invocation = findNode.methodInvocation('foo');
-    assertInvokeType(invocation, 'int* Function(int*)*');
-    assertType(invocation, 'int*');
+      var invocation = findNode.methodInvocation('foo');
+      assertInvokeType(invocation, 'int* Function(int*)*');
+      assertType(invocation, 'int*');
 
-    var identifier = findNode.simple('foo');
-    assertType(identifier, 'int* Function(int*)*');
+      var identifier = findNode.simple('foo');
+      assertType(identifier, 'int* Function(int*)*');
 
-    var element = identifier.staticElement as MethodElement;
-    _assertLegacyMember(element, _import_a.method('foo'));
+      var element = identifier.staticElement as MethodElement;
+      _assertLegacyMember(element, _import_a.method('foo'));
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_methodInvocation_extension_interfaceTarget() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 extension E on int {
   int foo(int a) => 0;
 }
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.5
 import 'a.dart';
 
@@ -772,25 +870,30 @@
   0.foo(null);
 }
 ''');
-    var invocation = findNode.methodInvocation('foo');
-    assertInvokeType(invocation, 'int* Function(int*)*');
-    assertType(invocation, 'int*');
+      var invocation = findNode.methodInvocation('foo');
+      assertInvokeType(invocation, 'int* Function(int*)*');
+      assertType(invocation, 'int*');
 
-    var identifier = findNode.simple('foo');
-    assertType(identifier, 'int* Function(int*)*');
+      var identifier = findNode.simple('foo');
+      assertType(identifier, 'int* Function(int*)*');
 
-    var element = identifier.staticElement as MethodElement;
-    _assertLegacyMember(element, _import_a.method('foo'));
+      var element = identifier.staticElement as MethodElement;
+      _assertLegacyMember(element, _import_a.method('foo'));
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_methodInvocation_extension_nullTarget() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {}
 extension E on A {
   int foo(int a) => 0;
 }
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.5
 import 'a.dart';
 
@@ -800,24 +903,29 @@
   }
 }
 ''');
-    var invocation = findNode.methodInvocation('foo');
-    assertInvokeType(invocation, 'int* Function(int*)*');
-    assertType(invocation, 'int*');
+      var invocation = findNode.methodInvocation('foo');
+      assertInvokeType(invocation, 'int* Function(int*)*');
+      assertType(invocation, 'int*');
 
-    var identifier = findNode.simple('foo');
-    assertType(identifier, 'int* Function(int*)*');
+      var identifier = findNode.simple('foo');
+      assertType(identifier, 'int* Function(int*)*');
 
-    var element = identifier.staticElement as MethodElement;
-    _assertLegacyMember(element, _import_a.method('foo'));
+      var element = identifier.staticElement as MethodElement;
+      _assertLegacyMember(element, _import_a.method('foo'));
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_methodInvocation_extension_staticTarget() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 extension E on int {
   static int foo(int a) => 0;
 }
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.5
 import 'a.dart';
 
@@ -825,24 +933,29 @@
   E.foo(null);
 }
 ''');
-    var invocation = findNode.methodInvocation('foo');
-    assertInvokeType(invocation, 'int* Function(int*)*');
-    assertType(invocation, 'int*');
+      var invocation = findNode.methodInvocation('foo');
+      assertInvokeType(invocation, 'int* Function(int*)*');
+      assertType(invocation, 'int*');
 
-    var identifier = findNode.simple('foo');
-    assertType(identifier, 'int* Function(int*)*');
+      var identifier = findNode.simple('foo');
+      assertType(identifier, 'int* Function(int*)*');
 
-    var element = identifier.staticElement as MethodElement;
-    _assertLegacyMember(element, _import_a.method('foo'));
+      var element = identifier.staticElement as MethodElement;
+      _assertLegacyMember(element, _import_a.method('foo'));
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_methodInvocation_extensionOverride() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 extension E on int {
   int foo(int a) => 0;
 }
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.5
 import 'a.dart';
 
@@ -850,22 +963,27 @@
   E(0).foo(null);
 }
 ''');
-    var invocation = findNode.methodInvocation('foo');
-    assertInvokeType(invocation, 'int* Function(int*)*');
-    assertType(invocation, 'int*');
+      var invocation = findNode.methodInvocation('foo');
+      assertInvokeType(invocation, 'int* Function(int*)*');
+      assertType(invocation, 'int*');
 
-    var identifier = findNode.simple('foo');
-    assertType(identifier, 'int* Function(int*)*');
+      var identifier = findNode.simple('foo');
+      assertType(identifier, 'int* Function(int*)*');
 
-    var element = identifier.staticElement as MethodElement;
-    _assertLegacyMember(element, _import_a.method('foo'));
+      var element = identifier.staticElement as MethodElement;
+      _assertLegacyMember(element, _import_a.method('foo'));
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_methodInvocation_function() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 int foo(int a, int? b) => 0;
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.5
 import 'a.dart';
 
@@ -873,22 +991,27 @@
   foo(null, null);
 }
 ''');
-    var invocation = findNode.methodInvocation('foo');
-    assertInvokeType(invocation, 'int* Function(int*, int*)*');
-    assertType(invocation, 'int*');
+      var invocation = findNode.methodInvocation('foo');
+      assertInvokeType(invocation, 'int* Function(int*, int*)*');
+      assertType(invocation, 'int*');
 
-    var identifier = findNode.simple('foo');
-    assertType(identifier, 'int* Function(int*, int*)*');
+      var identifier = findNode.simple('foo');
+      assertType(identifier, 'int* Function(int*, int*)*');
 
-    var element = identifier.staticElement as FunctionElement;
-    _assertLegacyMember(element, _import_a.topFunction('foo'));
+      var element = identifier.staticElement as FunctionElement;
+      _assertLegacyMember(element, _import_a.topFunction('foo'));
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_methodInvocation_function_prefixed() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 int foo(int a, int? b) => 0;
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.5
 import 'a.dart' as p;
 
@@ -896,24 +1019,29 @@
   p.foo(null, null);
 }
 ''');
-    var invocation = findNode.methodInvocation('foo');
-    assertInvokeType(invocation, 'int* Function(int*, int*)*');
-    assertType(invocation, 'int*');
+      var invocation = findNode.methodInvocation('foo');
+      assertInvokeType(invocation, 'int* Function(int*, int*)*');
+      assertType(invocation, 'int*');
 
-    var identifier = findNode.simple('foo');
-    assertType(identifier, 'int* Function(int*, int*)*');
+      var identifier = findNode.simple('foo');
+      assertType(identifier, 'int* Function(int*, int*)*');
 
-    var element = identifier.staticElement as FunctionElement;
-    _assertLegacyMember(element, _import_a.topFunction('foo'));
+      var element = identifier.staticElement as FunctionElement;
+      _assertLegacyMember(element, _import_a.topFunction('foo'));
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_methodInvocation_method_cascade() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {
   int foo(int a, int? b) => 0;
 }
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.5
 import 'a.dart';
 
@@ -921,24 +1049,29 @@
   a..foo(null, null);
 }
 ''');
-    var invocation = findNode.methodInvocation('foo(');
-    assertInvokeType(invocation, 'int* Function(int*, int*)*');
-    assertType(invocation, 'int*');
+      var invocation = findNode.methodInvocation('foo(');
+      assertInvokeType(invocation, 'int* Function(int*, int*)*');
+      assertType(invocation, 'int*');
 
-    var identifier = findNode.simple('foo');
-    assertType(identifier, 'int* Function(int*, int*)*');
+      var identifier = findNode.simple('foo');
+      assertType(identifier, 'int* Function(int*, int*)*');
 
-    var element = identifier.staticElement as MethodElement;
-    assertType(element.type, 'int* Function(int*, int*)*');
+      var element = identifier.staticElement as MethodElement;
+      assertType(element.type, 'int* Function(int*, int*)*');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_methodInvocation_method_interfaceTarget() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {
   int foo(int a, int? b) => 0;
 }
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.5
 import 'a.dart';
 
@@ -946,24 +1079,29 @@
   a.foo(null, null);
 }
 ''');
-    var invocation = findNode.methodInvocation('a.foo');
-    assertInvokeType(invocation, 'int* Function(int*, int*)*');
-    assertType(invocation, 'int*');
+      var invocation = findNode.methodInvocation('a.foo');
+      assertInvokeType(invocation, 'int* Function(int*, int*)*');
+      assertType(invocation, 'int*');
 
-    var identifier = findNode.simple('foo');
-    assertType(identifier, 'int* Function(int*, int*)*');
+      var identifier = findNode.simple('foo');
+      assertType(identifier, 'int* Function(int*, int*)*');
 
-    var element = identifier.staticElement as MethodElement;
-    assertType(element.type, 'int* Function(int*, int*)*');
+      var element = identifier.staticElement as MethodElement;
+      assertType(element.type, 'int* Function(int*, int*)*');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_methodInvocation_method_nullTarget() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {
   int foo(int a, int? b) => 0;
 }
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.5
 import 'a.dart';
 
@@ -973,24 +1111,29 @@
   }
 }
 ''');
-    var invocation = findNode.methodInvocation('foo');
-    assertInvokeType(invocation, 'int* Function(int*, int*)*');
-    assertType(invocation, 'int*');
+      var invocation = findNode.methodInvocation('foo');
+      assertInvokeType(invocation, 'int* Function(int*, int*)*');
+      assertType(invocation, 'int*');
 
-    var identifier = findNode.simple('foo');
-    assertType(identifier, 'int* Function(int*, int*)*');
+      var identifier = findNode.simple('foo');
+      assertType(identifier, 'int* Function(int*, int*)*');
 
-    var element = identifier.staticElement as MethodElement;
-    assertType(element.type, 'int* Function(int*, int*)*');
+      var element = identifier.staticElement as MethodElement;
+      assertType(element.type, 'int* Function(int*, int*)*');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_methodInvocation_method_staticTarget() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {
   static int foo(int a, int? b) => 0;
 }
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.5
 import 'a.dart';
 
@@ -998,24 +1141,29 @@
   A.foo(null, null);
 }
 ''');
-    var invocation = findNode.methodInvocation('A.foo');
-    assertInvokeType(invocation, 'int* Function(int*, int*)*');
-    assertType(invocation, 'int*');
+      var invocation = findNode.methodInvocation('A.foo');
+      assertInvokeType(invocation, 'int* Function(int*, int*)*');
+      assertType(invocation, 'int*');
 
-    var identifier = findNode.simple('foo');
-    assertType(identifier, 'int* Function(int*, int*)*');
+      var identifier = findNode.simple('foo');
+      assertType(identifier, 'int* Function(int*, int*)*');
 
-    var element = identifier.staticElement as MethodElement;
-    assertType(element.type, 'int* Function(int*, int*)*');
+      var element = identifier.staticElement as MethodElement;
+      assertType(element.type, 'int* Function(int*, int*)*');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_methodInvocation_method_superTarget() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {
   int foo(int a, int? b) => 0;
 }
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.5
 import 'a.dart';
 
@@ -1025,51 +1173,71 @@
   }
 }
 ''');
-    var invocation = findNode.methodInvocation('foo');
-    assertInvokeType(invocation, 'int* Function(int*, int*)*');
-    assertType(invocation, 'int*');
+      var invocation = findNode.methodInvocation('foo');
+      assertInvokeType(invocation, 'int* Function(int*, int*)*');
+      assertType(invocation, 'int*');
 
-    var identifier = findNode.simple('foo');
-    assertType(identifier, 'int* Function(int*, int*)*');
+      var identifier = findNode.simple('foo');
+      assertType(identifier, 'int* Function(int*, int*)*');
 
-    var element = identifier.staticElement as MethodElement;
-    assertType(element.type, 'int* Function(int*, int*)*');
+      var element = identifier.staticElement as MethodElement;
+      assertType(element.type, 'int* Function(int*, int*)*');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_nnbd_optOut_invalidSyntax() async {
-    await assertErrorsInCode('''
+    try {
+      noSoundNullSafety = false;
+      await assertErrorsInCode('''
 // @dart = 2.2
 // NNBD syntax is not allowed
 f(x, z) { (x is String?) ? x : z; }
 ''', [error(ParserErrorCode.EXPERIMENT_NOT_ENABLED, 67, 1)]);
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_nnbd_optOut_late() async {
-    await assertNoErrorsInCode('''
+    try {
+      noSoundNullSafety = false;
+      await assertNoErrorsInCode('''
 // @dart = 2.2
 class C {
   // "late" is allowed as an identifier
   int late;
 }
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_nnbd_optOut_transformsOptedInSignatures() async {
-    await assertNoErrorsInCode('''
+    try {
+      noSoundNullSafety = false;
+      await assertNoErrorsInCode('''
 // @dart = 2.2
 f(String x) {
   x + null; // OK because we're in a nullable library.
 }
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_postfixExpression() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {
   A operator+(int a) => this;
 }
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.5
 import 'a.dart';
 
@@ -1077,20 +1245,25 @@
   a++;
 }
 ''');
-    var prefixExpression = findNode.postfix('a++');
-    assertType(prefixExpression, 'A*');
+      var prefixExpression = findNode.postfix('a++');
+      assertType(prefixExpression, 'A*');
 
-    var element = prefixExpression.staticElement as MethodElement;
-    _assertLegacyMember(element, _import_a.method('+'));
+      var element = prefixExpression.staticElement as MethodElement;
+      _assertLegacyMember(element, _import_a.method('+'));
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_prefixExpression() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {
   int operator-() => 0;
 }
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.5
 import 'a.dart';
 
@@ -1098,20 +1271,25 @@
   -a;
 }
 ''');
-    var prefixExpression = findNode.prefix('-a');
-    assertType(prefixExpression, 'int*');
+      var prefixExpression = findNode.prefix('-a');
+      assertType(prefixExpression, 'int*');
 
-    var element = prefixExpression.staticElement as MethodElement;
-    _assertLegacyMember(element, _import_a.method('unary-'));
+      var element = prefixExpression.staticElement as MethodElement;
+      _assertLegacyMember(element, _import_a.method('unary-'));
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_read_indexExpression_class() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {
   int operator[](int a) => 0;
 }
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.5
 import 'a.dart';
 
@@ -1119,20 +1297,25 @@
   a[null];
 }
 ''');
-    var indexExpression = findNode.index('a[');
-    assertType(indexExpression, 'int*');
+      var indexExpression = findNode.index('a[');
+      assertType(indexExpression, 'int*');
 
-    var element = indexExpression.staticElement as MethodElement;
-    _assertLegacyMember(element, _import_a.method('[]'));
+      var element = indexExpression.staticElement as MethodElement;
+      _assertLegacyMember(element, _import_a.method('[]'));
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_read_prefixedIdentifier_instanceTarget_class_field() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {
   int foo;
 }
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.5
 import 'a.dart';
 
@@ -1140,24 +1323,29 @@
   a.foo;
 }
 ''');
-    var prefixedIdentifier = findNode.prefixed('a.foo');
-    assertType(prefixedIdentifier, 'int*');
+      var prefixedIdentifier = findNode.prefixed('a.foo');
+      assertType(prefixedIdentifier, 'int*');
 
-    var identifier = prefixedIdentifier.identifier;
-    assertType(identifier, 'int*');
+      var identifier = prefixedIdentifier.identifier;
+      assertType(identifier, 'int*');
 
-    var element = identifier.staticElement as PropertyAccessorElement;
-    _assertLegacyMember(element, _import_a.getter('foo'));
+      var element = identifier.staticElement as PropertyAccessorElement;
+      _assertLegacyMember(element, _import_a.getter('foo'));
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_read_prefixedIdentifier_instanceTarget_extension_getter() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {}
 extension E on A {
   int get foo => 0;
 }
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.5
 import 'a.dart';
 
@@ -1165,23 +1353,28 @@
   a.foo;
 }
 ''');
-    var prefixedIdentifier = findNode.prefixed('a.foo');
-    assertType(prefixedIdentifier, 'int*');
+      var prefixedIdentifier = findNode.prefixed('a.foo');
+      assertType(prefixedIdentifier, 'int*');
 
-    var identifier = prefixedIdentifier.identifier;
-    assertType(identifier, 'int*');
+      var identifier = prefixedIdentifier.identifier;
+      assertType(identifier, 'int*');
 
-    var element = identifier.staticElement as PropertyAccessorElement;
-    _assertLegacyMember(element, _import_a.getter('foo'));
+      var element = identifier.staticElement as PropertyAccessorElement;
+      _assertLegacyMember(element, _import_a.getter('foo'));
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_read_prefixedIdentifier_staticTarget_class_field() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {
   static int foo;
 }
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.5
 import 'a.dart';
 
@@ -1189,23 +1382,28 @@
   A.foo;
 }
 ''');
-    var prefixedIdentifier = findNode.prefixed('A.foo');
-    assertType(prefixedIdentifier, 'int*');
+      var prefixedIdentifier = findNode.prefixed('A.foo');
+      assertType(prefixedIdentifier, 'int*');
 
-    var identifier = prefixedIdentifier.identifier;
-    assertType(identifier, 'int*');
+      var identifier = prefixedIdentifier.identifier;
+      assertType(identifier, 'int*');
 
-    var element = identifier.staticElement as PropertyAccessorElement;
-    _assertLegacyMember(element, _import_a.getter('foo'));
+      var element = identifier.staticElement as PropertyAccessorElement;
+      _assertLegacyMember(element, _import_a.getter('foo'));
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_read_prefixedIdentifier_staticTarget_class_method() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {
   static int foo(int a) => 0;
 }
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.5
 import 'a.dart';
 
@@ -1213,23 +1411,28 @@
   A.foo;
 }
 ''');
-    var prefixedIdentifier = findNode.prefixed('A.foo');
-    assertType(prefixedIdentifier, 'int* Function(int*)*');
+      var prefixedIdentifier = findNode.prefixed('A.foo');
+      assertType(prefixedIdentifier, 'int* Function(int*)*');
 
-    var identifier = prefixedIdentifier.identifier;
-    assertType(identifier, 'int* Function(int*)*');
+      var identifier = prefixedIdentifier.identifier;
+      assertType(identifier, 'int* Function(int*)*');
 
-    var element = identifier.staticElement as MethodElement;
-    _assertLegacyMember(element, _import_a.method('foo'));
+      var element = identifier.staticElement as MethodElement;
+      _assertLegacyMember(element, _import_a.method('foo'));
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_read_prefixedIdentifier_staticTarget_extension_field() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 extension E {
   static int foo;
 }
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.5
 import 'a.dart';
 
@@ -1237,23 +1440,28 @@
   E.foo;
 }
 ''');
-    var prefixedIdentifier = findNode.prefixed('E.foo');
-    assertType(prefixedIdentifier, 'int*');
+      var prefixedIdentifier = findNode.prefixed('E.foo');
+      assertType(prefixedIdentifier, 'int*');
 
-    var identifier = prefixedIdentifier.identifier;
-    assertType(identifier, 'int*');
+      var identifier = prefixedIdentifier.identifier;
+      assertType(identifier, 'int*');
 
-    var element = identifier.staticElement as PropertyAccessorElement;
-    _assertLegacyMember(element, _import_a.getter('foo'));
+      var element = identifier.staticElement as PropertyAccessorElement;
+      _assertLegacyMember(element, _import_a.getter('foo'));
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_read_prefixedIdentifier_staticTarget_extension_method() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 extension E {
   static int foo(int a) => 0;
 }
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.5
 import 'a.dart';
 
@@ -1261,21 +1469,26 @@
   E.foo;
 }
 ''');
-    var prefixedIdentifier = findNode.prefixed('E.foo');
-    assertType(prefixedIdentifier, 'int* Function(int*)*');
+      var prefixedIdentifier = findNode.prefixed('E.foo');
+      assertType(prefixedIdentifier, 'int* Function(int*)*');
 
-    var identifier = prefixedIdentifier.identifier;
-    assertType(identifier, 'int* Function(int*)*');
+      var identifier = prefixedIdentifier.identifier;
+      assertType(identifier, 'int* Function(int*)*');
 
-    var element = identifier.staticElement as MethodElement;
-    _assertLegacyMember(element, _import_a.method('foo'));
+      var element = identifier.staticElement as MethodElement;
+      _assertLegacyMember(element, _import_a.method('foo'));
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_read_prefixedIdentifier_topLevelVariable() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 int foo = 0;
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.5
 import 'a.dart' as p;
 
@@ -1283,23 +1496,28 @@
   p.foo;
 }
 ''');
-    var prefixedIdentifier = findNode.prefixed('p.foo');
-    assertType(prefixedIdentifier, 'int*');
+      var prefixedIdentifier = findNode.prefixed('p.foo');
+      assertType(prefixedIdentifier, 'int*');
 
-    var identifier = prefixedIdentifier.identifier;
-    assertType(identifier, 'int*');
+      var identifier = prefixedIdentifier.identifier;
+      assertType(identifier, 'int*');
 
-    var element = identifier.staticElement as PropertyAccessorElement;
-    _assertLegacyMember(element, _import_a.topGet('foo'));
+      var element = identifier.staticElement as PropertyAccessorElement;
+      _assertLegacyMember(element, _import_a.topGet('foo'));
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_read_propertyAccessor_class_field() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {
   int foo = 0;
 }
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.5
 import 'a.dart';
 
@@ -1307,23 +1525,28 @@
   A().foo;
 }
 ''');
-    var propertyAccess = findNode.propertyAccess('foo');
-    assertType(propertyAccess, 'int*');
+      var propertyAccess = findNode.propertyAccess('foo');
+      assertType(propertyAccess, 'int*');
 
-    var identifier = propertyAccess.propertyName;
-    assertType(identifier, 'int*');
+      var identifier = propertyAccess.propertyName;
+      assertType(identifier, 'int*');
 
-    var element = identifier.staticElement as PropertyAccessorElement;
-    _assertLegacyMember(element, _import_a.getter('foo'));
+      var element = identifier.staticElement as PropertyAccessorElement;
+      _assertLegacyMember(element, _import_a.getter('foo'));
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_read_propertyAccessor_class_method() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {
   int foo() => 0;
 }
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.5
 import 'a.dart';
 
@@ -1331,24 +1554,29 @@
   A().foo;
 }
 ''');
-    var propertyAccess = findNode.propertyAccess('foo');
-    assertType(propertyAccess, 'int* Function()*');
+      var propertyAccess = findNode.propertyAccess('foo');
+      assertType(propertyAccess, 'int* Function()*');
 
-    var identifier = propertyAccess.propertyName;
-    assertType(identifier, 'int* Function()*');
+      var identifier = propertyAccess.propertyName;
+      assertType(identifier, 'int* Function()*');
 
-    var element = identifier.staticElement as MethodElement;
-    _assertLegacyMember(element, _import_a.method('foo'));
+      var element = identifier.staticElement as MethodElement;
+      _assertLegacyMember(element, _import_a.method('foo'));
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_read_propertyAccessor_extensionOverride_getter() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {}
 extension E on A {
   int get foo => 0;
 }
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.5
 import 'a.dart';
 
@@ -1356,23 +1584,28 @@
   E(a).foo;
 }
 ''');
-    var propertyAccess = findNode.propertyAccess('foo');
-    assertType(propertyAccess, 'int*');
+      var propertyAccess = findNode.propertyAccess('foo');
+      assertType(propertyAccess, 'int*');
 
-    var identifier = propertyAccess.propertyName;
-    assertType(identifier, 'int*');
+      var identifier = propertyAccess.propertyName;
+      assertType(identifier, 'int*');
 
-    var element = identifier.staticElement as PropertyAccessorElement;
-    _assertLegacyMember(element, _import_a.getter('foo'));
+      var element = identifier.staticElement as PropertyAccessorElement;
+      _assertLegacyMember(element, _import_a.getter('foo'));
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_read_propertyAccessor_superTarget() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {
   int foo = 0;
 }
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.5
 import 'a.dart';
 
@@ -1382,23 +1615,28 @@
   }
 }
 ''');
-    var propertyAccess = findNode.propertyAccess('foo');
-    assertType(propertyAccess, 'int*');
+      var propertyAccess = findNode.propertyAccess('foo');
+      assertType(propertyAccess, 'int*');
 
-    var identifier = propertyAccess.propertyName;
-    assertType(identifier, 'int*');
+      var identifier = propertyAccess.propertyName;
+      assertType(identifier, 'int*');
 
-    var element = identifier.staticElement as PropertyAccessorElement;
-    _assertLegacyMember(element, _import_a.getter('foo'));
+      var element = identifier.staticElement as PropertyAccessorElement;
+      _assertLegacyMember(element, _import_a.getter('foo'));
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_read_simpleIdentifier_class_field() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {
   int foo = 0;
 }
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.5
 import 'a.dart';
 
@@ -1408,20 +1646,25 @@
   }
 }
 ''');
-    var identifier = findNode.simple('foo');
-    assertType(identifier, 'int*');
+      var identifier = findNode.simple('foo');
+      assertType(identifier, 'int*');
 
-    var element = identifier.staticElement as PropertyAccessorElement;
-    _assertLegacyMember(element, _import_a.getter('foo'));
+      var element = identifier.staticElement as PropertyAccessorElement;
+      _assertLegacyMember(element, _import_a.getter('foo'));
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_read_simpleIdentifier_class_method() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {
   int foo(int a) => 0;
 }
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.5
 import 'a.dart';
 
@@ -1431,21 +1674,26 @@
   }
 }
 ''');
-    var identifier = findNode.simple('foo');
-    assertType(identifier, 'int* Function(int*)*');
+      var identifier = findNode.simple('foo');
+      assertType(identifier, 'int* Function(int*)*');
 
-    var element = identifier.staticElement as MethodElement;
-    _assertLegacyMember(element, _import_a.method('foo'));
+      var element = identifier.staticElement as MethodElement;
+      _assertLegacyMember(element, _import_a.method('foo'));
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_read_simpleIdentifier_extension_getter() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {}
 extension E on A {
   int get foo => 0;
 }
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.5
 import 'a.dart';
 
@@ -1455,21 +1703,26 @@
   }
 }
 ''');
-    var identifier = findNode.simple('foo');
-    assertType(identifier, 'int*');
+      var identifier = findNode.simple('foo');
+      assertType(identifier, 'int*');
 
-    var element = identifier.staticElement as PropertyAccessorElement;
-    _assertLegacyMember(element, _import_a.getter('foo'));
+      var element = identifier.staticElement as PropertyAccessorElement;
+      _assertLegacyMember(element, _import_a.getter('foo'));
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_read_simpleIdentifier_extension_method() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {}
 extension E on A {
   int foo(int a) => 0;
 }
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.5
 import 'a.dart';
 
@@ -1479,18 +1732,23 @@
   }
 }
 ''');
-    var identifier = findNode.simple('foo');
-    assertType(identifier, 'int* Function(int*)*');
+      var identifier = findNode.simple('foo');
+      assertType(identifier, 'int* Function(int*)*');
 
-    var element = identifier.staticElement as MethodElement;
-    _assertLegacyMember(element, _import_a.method('foo'));
+      var element = identifier.staticElement as MethodElement;
+      _assertLegacyMember(element, _import_a.method('foo'));
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_read_simpleIdentifier_topLevelVariable() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 int foo = 0;
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.5
 import 'a.dart';
 
@@ -1498,20 +1756,25 @@
   foo;
 }
 ''');
-    var identifier = findNode.simple('foo');
-    assertType(identifier, 'int*');
+      var identifier = findNode.simple('foo');
+      assertType(identifier, 'int*');
 
-    var element = identifier.staticElement as PropertyAccessorElement;
-    _assertLegacyMember(element, _import_a.topGet('foo'));
+      var element = identifier.staticElement as PropertyAccessorElement;
+      _assertLegacyMember(element, _import_a.topGet('foo'));
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_superConstructorInvocation() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {
   A(int a, int? b);
 }
 ''');
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart = 2.5
 import 'a.dart';
 
@@ -1519,12 +1782,15 @@
   B() : super(null, null);
 }
 ''');
-    var instanceCreation = findNode.superConstructorInvocation('super(');
+      var instanceCreation = findNode.superConstructorInvocation('super(');
 
-    _assertLegacyMember(
-      instanceCreation.staticElement,
-      _import_a.unnamedConstructor('A'),
-    );
+      _assertLegacyMember(
+        instanceCreation.staticElement,
+        _import_a.unnamedConstructor('A'),
+      );
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   void _assertLegacyMember(
diff --git a/pkg/analyzer/test/src/diagnostics/null_argument_to_non_null_type_test.dart b/pkg/analyzer/test/src/diagnostics/null_argument_to_non_null_type_test.dart
index 5e9409d..90b423f 100644
--- a/pkg/analyzer/test/src/diagnostics/null_argument_to_non_null_type_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/null_argument_to_non_null_type_test.dart
@@ -3,6 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/src/dart/error/hint_codes.dart';
+import 'package:analyzer/src/utilities/legacy.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import '../dart/resolution/context_collection_resolution.dart';
@@ -36,7 +37,9 @@
   }
 
   test_legacy() async {
-    await assertNoErrorsInCode('''
+    try {
+      noSoundNullSafety = false;
+      await assertNoErrorsInCode('''
 // @dart=2.9
 import 'dart:async';
 
@@ -46,6 +49,9 @@
   c.complete(null);
 }
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_null() async {
@@ -98,13 +104,18 @@
   }
 
   test_legacy() async {
-    await assertNoErrorsInCode('''
+    try {
+      noSoundNullSafety = false;
+      await assertNoErrorsInCode('''
 // @dart=2.9
 void f() {
   Future<int>.value();
   Future<int>.value(null);
 }
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_null() async {
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 320049a..ac9a995 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
@@ -3,6 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/src/error/codes.dart';
+import 'package:analyzer/src/utilities/legacy.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import '../dart/resolution/context_collection_resolution.dart';
@@ -109,7 +110,9 @@
   }
 
   test_optOut() async {
-    await assertNoErrorsInCode('''
+    try {
+      noSoundNullSafety = false;
+      await assertNoErrorsInCode('''
 // @dart = 2.7
 
 void f() {
@@ -118,5 +121,8 @@
   }
 }
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/sdk_version_never_test.dart b/pkg/analyzer/test/src/diagnostics/sdk_version_never_test.dart
index 7f871f8..f7c7922 100644
--- a/pkg/analyzer/test/src/diagnostics/sdk_version_never_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/sdk_version_never_test.dart
@@ -3,6 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/src/error/codes.dart';
+import 'package:analyzer/src/utilities/legacy.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import '../dart/resolution/context_collection_resolution.dart';
@@ -24,12 +25,17 @@
   }
 
   test_experimentEnabled_libraryOptedOut() async {
-    await verifyVersion('2.7.0', r'''
+    try {
+      noSoundNullSafety = false;
+      await verifyVersion('2.7.0', r'''
 // @dart = 2.7
 Never foo = (throw 42);
 ''', expectedErrors: [
-      error(StaticWarningCode.SDK_VERSION_NEVER, 15, 5),
-    ]);
+        error(StaticWarningCode.SDK_VERSION_NEVER, 15, 5),
+      ]);
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 }
 
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 b373ca8..0b1fe1c 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
@@ -3,6 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/src/error/codes.dart';
+import 'package:analyzer/src/utilities/legacy.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import '../dart/resolution/context_collection_resolution.dart';
@@ -49,25 +50,32 @@
   }
 
   test_extends_optIn_fromOptOut_Null() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A<X extends int> {}
 ''');
 
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart=2.6
 import 'a.dart';
 
 class A1<T extends Null> extends A<T> {}
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_extends_optIn_fromOptOut_otherTypeParameter() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 void foo<T extends U, U>() {
 }
 ''');
 
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart=2.6
 import 'a.dart';
 
@@ -78,21 +86,29 @@
   foo<B, A>();
 }
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_extensionOverride_optIn_fromOptOut_Null() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 extension E<X extends int> on List<X> {
   void m() {}
 }
 ''');
 
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart=2.6
 import 'a.dart';
 
 f() => E<Null>([]).m();
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_functionReference() async {
@@ -146,16 +162,21 @@
   }
 
   test_instanceCreation_optIn_fromOptOut_Null() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A<X extends int> {}
 ''');
 
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart=2.6
 import 'a.dart';
 
 f() => A<Null>();
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_metadata_matching() async {
@@ -222,17 +243,22 @@
   }
 
   test_methodInvocation_optIn_fromOptOut_Null() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 class A {
   void m<X extends int>() {}
 ''');
 
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart=2.6
 import 'a.dart';
 
 f() => A().m<Null>();
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_nonFunctionTypeAlias_body_typeArgument_mismatch() async {
@@ -340,13 +366,15 @@
   }
 
   test_redirectingConstructor_optIn_fromOptOut_Null() async {
-    newFile('$testPackageLibPath/a.dart', r'''
+    try {
+      noSoundNullSafety = false;
+      newFile('$testPackageLibPath/a.dart', r'''
 import 'test.dart';
 
 class A<X extends int> implements B {}
 ''');
 
-    await assertNoErrorsInCode(r'''
+      await assertNoErrorsInCode(r'''
 // @dart=2.6
 import 'a.dart';
 
@@ -354,6 +382,9 @@
   factory B() = A<Null>;
 }
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_regression_42196() async {
diff --git a/pkg/analyzer/test/src/diagnostics/undefined_method_test.dart b/pkg/analyzer/test/src/diagnostics/undefined_method_test.dart
index 6b5bc62..2cb678f 100644
--- a/pkg/analyzer/test/src/diagnostics/undefined_method_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/undefined_method_test.dart
@@ -3,6 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/src/error/codes.dart';
+import 'package:analyzer/src/utilities/legacy.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import '../dart/resolution/context_collection_resolution.dart';
@@ -153,12 +154,17 @@
   }
 
   test_leastUpperBoundWithNull() async {
-    await assertErrorsInCode('''
+    try {
+      noSoundNullSafety = false;
+      await assertErrorsInCode('''
 // @dart = 2.9
 f(bool b, int i) => (b ? null : i).foo();
 ''', [
-      error(CompileTimeErrorCode.UNDEFINED_METHOD, 50, 3),
-    ]);
+        error(CompileTimeErrorCode.UNDEFINED_METHOD, 50, 3),
+      ]);
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_method_undefined() async {
@@ -216,15 +222,20 @@
   }
 
   test_method_undefined_onNull() async {
-    await assertErrorsInCode(r'''
+    try {
+      noSoundNullSafety = false;
+      await assertErrorsInCode(r'''
 // @dart = 2.9
 Null f(int x) => null;
 main() {
   f(42).abs();
 }
 ''', [
-      error(CompileTimeErrorCode.UNDEFINED_METHOD, 55, 3),
-    ]);
+        error(CompileTimeErrorCode.UNDEFINED_METHOD, 55, 3),
+      ]);
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_static_conditionalAccess_defined() async {
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 a22d281..2af2ffa 100644
--- a/pkg/analyzer/test/src/diagnostics/unnecessary_null_comparison_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/unnecessary_null_comparison_test.dart
@@ -3,6 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/src/error/codes.dart';
+import 'package:analyzer/src/utilities/legacy.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import '../dart/resolution/context_collection_resolution.dart';
@@ -46,13 +47,18 @@
   }
 
   test_equal_legacyLibrary() async {
-    await assertNoErrorsInCode('''
+    try {
+      noSoundNullSafety = false;
+      await assertNoErrorsInCode('''
 // @dart = 2.5
 f(int a) {
   a == null;
   null == a;
 }
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_equal_notNullable() async {
@@ -109,13 +115,18 @@
   }
 
   test_notEqual_legacyLibrary() async {
-    await assertNoErrorsInCode('''
+    try {
+      noSoundNullSafety = false;
+      await assertNoErrorsInCode('''
 // @dart = 2.5
 f(int a) {
   a != null;
   null != a;
 }
 ''');
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_notEqual_notNullable() async {
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 9069e42..f446a42 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
@@ -3,6 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/src/error/codes.dart';
+import 'package:analyzer/src/utilities/legacy.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import '../dart/resolution/context_collection_resolution.dart';
@@ -39,7 +40,9 @@
     // attempting to use a binary operator with no args as part of a compound
     // assignment would crash the analyzer.  Check that that doesn't happen
     // anymore.
-    await assertErrorsInCode('''
+    try {
+      noSoundNullSafety = false;
+      await assertErrorsInCode('''
 // @dart=2.9
 class C {
   C operator+() => C();
@@ -49,9 +52,12 @@
   c += 1;
 }
 ''', [
-      error(
-          CompileTimeErrorCode.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR, 35, 1),
-    ]);
+        error(CompileTimeErrorCode.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR, 35,
+            1),
+      ]);
+    } finally {
+      noSoundNullSafety = true;
+    }
   }
 
   test_correct_number_of_parameters_binary() async {
diff --git a/pkg/analyzer/test/verify_diagnostics_test.dart b/pkg/analyzer/test/verify_diagnostics_test.dart
index 2849d8f..be6d543 100644
--- a/pkg/analyzer/test/verify_diagnostics_test.dart
+++ b/pkg/analyzer/test/verify_diagnostics_test.dart
@@ -84,6 +84,12 @@
     'CompileTimeErrorCode.UNDEFINED_IDENTIFIER_AWAIT',
     // Produces multiple diagnostic because of poor recovery.
     'CompileTimeErrorCode.YIELD_EACH_IN_NON_GENERATOR',
+
+    // This is not reported after 2.12, and the examples don't compile after 3.0.
+    'FfiCode.FIELD_INITIALIZER_IN_STRUCT',
+    // This is not reported after 2.12, and the examples don't compile after 3.0.
+    'FfiCode.FIELD_IN_STRUCT_WITH_INITIALIZER',
+
     // This no longer works in 3.0.
     'HintCode.DEPRECATED_COLON_FOR_DEFAULT_VALUE',
     // The code has been replaced but is not yet removed.
@@ -96,6 +102,7 @@
     // Produces two diagnostics when it should only produce one (see
     // https://github.com/dart-lang/sdk/issues/43051)
     'HintCode.UNNECESSARY_NULL_COMPARISON_FALSE',
+
     // Produces two diagnostics when it should only produce one (see
     // https://github.com/dart-lang/sdk/issues/43263)
     'StaticWarningCode.DEAD_NULL_AWARE_EXPRESSION',
diff --git a/pkg/analyzer/test/verify_docs_test.dart b/pkg/analyzer/test/verify_docs_test.dart
index bcba407..a34537a 100644
--- a/pkg/analyzer/test/verify_docs_test.dart
+++ b/pkg/analyzer/test/verify_docs_test.dart
@@ -92,7 +92,6 @@
     //  API, write code to compute the list of imports so that new public API
     //  will automatically be allowed.
     String imports = '''
-// @dart = 2.9
 import 'dart:math' as math;
 
 import 'package:analyzer/dart/analysis/analysis_context.dart';
@@ -105,7 +104,7 @@
 import 'package:analyzer/dart/element/visitor.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-void assertNoErrorsInCode(String s) {}
+Future<void> assertNoErrorsInCode(String s) async {}
 void test(String s, void Function() f) {}
 void group(String s, void Function() f) {}
 ''';
diff --git a/pkg/analyzer/tool/diagnostics/diagnostics.md b/pkg/analyzer/tool/diagnostics/diagnostics.md
index 535d11b..8920906 100644
--- a/pkg/analyzer/tool/diagnostics/diagnostics.md
+++ b/pkg/analyzer/tool/diagnostics/diagnostics.md
@@ -7619,7 +7619,7 @@
 Given a [part file][] named `part.dart` that contains the following:
 
 {% prettify dart tag=pre+code %}
-// @dart = 2.6
+// @dart = 2.14
 part of 'test.dart';
 {% endprettify %}
 
@@ -7627,7 +7627,7 @@
 must have the same language version as the defining compilation unit:
 
 {% prettify dart tag=pre+code %}
-// @dart = 2.5
+// @dart = 2.15
 part [!'part.dart'!];
 {% endprettify %}
 
@@ -9001,7 +9001,7 @@
 the word `dart` and the version number:
 
 {% prettify dart tag=pre+code %}
-[!// @Dart 2.9!]
+[!// @Dart 2.13!]
 {% endprettify %}
 
 #### Common fixes
@@ -9010,7 +9010,7 @@
 the comment to follow the correct format:
 
 {% prettify dart tag=pre+code %}
-// @dart = 2.9
+// @dart = 2.13
 {% endprettify %}
 
 ### invalid_literal_annotation
diff --git a/pkg/analyzer_cli/lib/src/driver.dart b/pkg/analyzer_cli/lib/src/driver.dart
index a888460..c2176f7 100644
--- a/pkg/analyzer_cli/lib/src/driver.dart
+++ b/pkg/analyzer_cli/lib/src/driver.dart
@@ -28,6 +28,7 @@
 import 'package:analyzer/src/task/options.dart';
 import 'package:analyzer/src/util/file_paths.dart' as file_paths;
 import 'package:analyzer/src/util/yaml.dart';
+import 'package:analyzer/src/utilities/legacy.dart';
 import 'package:analyzer_cli/src/analyzer_impl.dart';
 import 'package:analyzer_cli/src/batch_mode.dart';
 import 'package:analyzer_cli/src/error_formatter.dart';
@@ -94,6 +95,7 @@
     }
     _isStarted = true;
     var startTime = DateTime.now().millisecondsSinceEpoch;
+    noSoundNullSafety = false;
 
     linter.registerLintRules();
 
diff --git a/pkg/compiler/analysis_options.yaml b/pkg/compiler/analysis_options.yaml
index ee3a90d..4bb3f1b 100644
--- a/pkg/compiler/analysis_options.yaml
+++ b/pkg/compiler/analysis_options.yaml
@@ -7,6 +7,7 @@
     todo: ignore
     # Allow deprecated calls from within the same package
     deprecated_member_use_from_same_package: ignore
+    illegal_language_version_override: ignore
 
 linter:
   rules:
diff --git a/pkg/compiler/test/analysis_options.yaml b/pkg/compiler/test/analysis_options.yaml
index 7926857..7d40a1a 100644
--- a/pkg/compiler/test/analysis_options.yaml
+++ b/pkg/compiler/test/analysis_options.yaml
@@ -6,6 +6,7 @@
   errors:
     todo: ignore
     deprecated_member_use: ignore
+    illegal_language_version_override: ignore
 
   exclude:
     - '**/data/*'
diff --git a/pkg/compiler/test/codesize/swarm/analysis_options.yaml b/pkg/compiler/test/codesize/swarm/analysis_options.yaml
index 08f0661..596db12 100644
--- a/pkg/compiler/test/codesize/swarm/analysis_options.yaml
+++ b/pkg/compiler/test/codesize/swarm/analysis_options.yaml
@@ -6,6 +6,7 @@
   errors:
     todo: ignore
     deprecated_member_use: ignore
+    illegal_language_version_override: ignore
     unused_local_variable: ignore
     unused_field: ignore
     unused_element: ignore
diff --git a/pkg/dartdev/test/utils.dart b/pkg/dartdev/test/utils.dart
index 6688b54..de0ba4f 100644
--- a/pkg/dartdev/test/utils.dart
+++ b/pkg/dartdev/test/utils.dart
@@ -18,7 +18,10 @@
 
 /// This version of dart is the last guaranteed pre-null safety language
 /// version:
-const String dartVersionFilePrefix2_9 = '// @dart = 2.9\n';
+const String dartVersionFilePrefix2_9 = '''
+// ignore: illegal_language_version_override
+// @dart = 2.9
+''';
 
 void initGlobalState() {
   log = Logger.standard();
diff --git a/pkg/front_end/analysis_options.yaml b/pkg/front_end/analysis_options.yaml
index 907c504..771fe35 100644
--- a/pkg/front_end/analysis_options.yaml
+++ b/pkg/front_end/analysis_options.yaml
@@ -4,6 +4,10 @@
 
 include: analysis_options_no_lints.yaml
 
+analyzer:
+  errors:
+    illegal_language_version_override: ignore
+
 linter:
   rules:
     - curly_braces_in_flow_control_structures
diff --git a/pkg/language_versioning_2_7_test/analysis_options.yaml b/pkg/language_versioning_2_7_test/analysis_options.yaml
index 9cd4fca..3e707e8 100644
--- a/pkg/language_versioning_2_7_test/analysis_options.yaml
+++ b/pkg/language_versioning_2_7_test/analysis_options.yaml
@@ -1,6 +1,8 @@
 include: package:lints/recommended.yaml
 
 analyzer:
+  errors:
+    illegal_language_version_override: ignore
   exclude:
     # These files have intentional errors.
     - test/lib_ex2.7_test.dart
diff --git a/pkg/nnbd_migration/test/fix_aggregator_test.dart b/pkg/nnbd_migration/test/fix_aggregator_test.dart
index 9c66681..8de269f 100644
--- a/pkg/nnbd_migration/test/fix_aggregator_test.dart
+++ b/pkg/nnbd_migration/test/fix_aggregator_test.dart
@@ -1721,6 +1721,7 @@
 
   Future<void> test_removeLanguageVersion() async {
     await analyze('''
+// ignore: illegal_language_version_override
 //@dart=2.6
 void main() {}
 ''');
@@ -1729,7 +1730,11 @@
         ..removeLanguageVersionComment = true
     })!;
     // TODO(mfairhurst): Remove beginning \n once it renders properly in preview
-    expect(previewInfo.applyTo(code!), '\nvoid main() {}\n');
+    expect(previewInfo.applyTo(code!), '''
+// ignore: illegal_language_version_override
+
+void main() {}
+''');
   }
 
   Future<void> test_removeLanguageVersion_after_license() async {
@@ -1737,6 +1742,7 @@
 // Some licensing stuff here...
 // Some copyrighting stuff too...
 // etc...
+// ignore: illegal_language_version_override
 // @dart = 2.6
 void main() {}
 ''');
@@ -1749,6 +1755,7 @@
 // Some licensing stuff here...
 // Some copyrighting stuff too...
 // etc...
+// ignore: illegal_language_version_override
 
 void main() {}
 ''');
@@ -1756,6 +1763,7 @@
 
   Future<void> test_removeLanguageVersion_spaces() async {
     await analyze('''
+// ignore: illegal_language_version_override
 // @dart = 2.6
 void main() {}
 ''');
@@ -1764,11 +1772,16 @@
         ..removeLanguageVersionComment = true
     })!;
     // TODO(mfairhurst): Remove beginning \n once it renders properly in preview
-    expect(previewInfo.applyTo(code!), '\nvoid main() {}\n');
+    expect(previewInfo.applyTo(code!), '''
+// ignore: illegal_language_version_override
+
+void main() {}
+''');
   }
 
   Future<void> test_removeLanguageVersion_withOtherChanges() async {
     await analyze('''
+// ignore: illegal_language_version_override
 //@dart=2.6
 int f() => null;
 ''');
@@ -1782,7 +1795,11 @@
             true)
     })!;
     // TODO(mfairhurst): Remove beginning \n once it renders properly in preview
-    expect(previewInfo.applyTo(code!), '\nint? f() => null;\n');
+    expect(previewInfo.applyTo(code!), '''
+// ignore: illegal_language_version_override
+
+int? f() => null;
+''');
   }
 
   Future<void> test_removeNullAwarenessFromMethodInvocation() async {
diff --git a/pkg/nnbd_migration/test/fix_builder_test.dart b/pkg/nnbd_migration/test/fix_builder_test.dart
index 697bd79..5f000a3 100644
--- a/pkg/nnbd_migration/test/fix_builder_test.dart
+++ b/pkg/nnbd_migration/test/fix_builder_test.dart
@@ -3329,6 +3329,7 @@
 
   Future<void> test_removeLanguageVersionComment() async {
     await analyze('''
+// ignore: illegal_language_version_override
 // @dart = 2.6
 void main() {}
 ''');
@@ -3338,6 +3339,7 @@
   Future<void> test_removeLanguageVersionComment_withCopyright() async {
     await analyze('''
 // Some copyright notice here...
+// ignore: illegal_language_version_override
 // @dart = 2.6
 void main() {}
 ''');
diff --git a/pkg/nnbd_migration/test/migration_cli_test.dart b/pkg/nnbd_migration/test/migration_cli_test.dart
index fe32069..7b55b86 100644
--- a/pkg/nnbd_migration/test/migration_cli_test.dart
+++ b/pkg/nnbd_migration/test/migration_cli_test.dart
@@ -575,7 +575,11 @@
   test_lifecycle_already_migrated_file() async {
     Map<String, String?> createProject({bool migrated = false}) {
       var projectContents = simpleProject(sourceText: '''
-${migrated ? '' : '// @dart = 2.6'}
+${migrated ? '''
+// ignore: illegal_language_version_override
+''' : '''
+// ignore: illegal_language_version_override
+// @dart = 2.6'''}
 import 'already_migrated.dart';
 int${migrated ? '?' : ''} x = y;
 ''', migrated: true);
@@ -1876,16 +1880,17 @@
     expect(
         logger.stdoutBuffer.toString(), contains('Please run `dart pub get`'));
     // The Dart source code should still be migrated.
-    assertProjectContents(
-        projectDir, simpleProject(migrated: true, sourceText: '''
+    assertProjectContents(projectDir, simpleProject(
+        migrated: true,
+        sourceText: '''
 import 'package:collection/collection.dart' show IterableExtension;
 
 int? firstEven(Iterable<int> x)
     => x.firstWhereOrNull((x) => x.isEven);
 ''',
-            // Note: section order is weird, but it's valid and this is a rare use
-            // case.
-            pubspecText: '''
+        // Note: section order is weird, but it's valid and this is a rare use
+        // case.
+        pubspecText: '''
 environment:
   sdk: '>=2.12.0 <3.0.0'
 dependencies:
@@ -1906,7 +1911,9 @@
     expect(
         logger.stdoutBuffer.toString(), contains('Please run `dart pub get`'));
     // The Dart source code should still be migrated.
-    assertProjectContents(projectDir, simpleProject(migrated: true, sourceText: '''
+    assertProjectContents(projectDir, simpleProject(
+        migrated: true,
+        sourceText: '''
 import 'package:collection/collection.dart' show IterableExtension;
 
 int? firstEven(Iterable<int> x)