diff --git a/pkg/compiler/test/model/cfe_constant_evaluation_test.dart b/pkg/compiler/test/model/cfe_constant_evaluation_test.dart
index a3d52f9..6ba6b39 100644
--- a/pkg/compiler/test/model/cfe_constant_evaluation_test.dart
+++ b/pkg/compiler/test/model/cfe_constant_evaluation_test.dart
@@ -534,6 +534,47 @@
     ConstantData(
         'const Subclass<B>(B())', 'ConstructedConstant(Subclass<B*>())'),
   ]),
+  TestData('Nested Unevaluated', '''
+//@dart = 2.12
+class Foo {
+  const Foo(
+    int Function(String)? a1,
+    int Function(String)? a2,
+    int Function(String)? a3,
+    int Function(String)? a4,
+  ) : _foo = a1 ??
+            a2 ??
+            a3 ??
+            a4 ??
+            bar;
+  final int Function(String) _foo;
+}
+
+int bar(String o) => int.parse(o);
+ ''', [
+    ConstantData(
+      '''Foo(
+    bool.fromEnvironment("baz") ? int.parse : null,
+    bool.fromEnvironment("baz") ? int.parse : null,
+    bool.fromEnvironment("baz") ? int.parse : null,
+    bool.fromEnvironment("baz") ? int.parse : null,
+  )''',
+      <Map<String, String>, String>{
+        {}: 'ConstructedConstant(Foo(_foo=FunctionConstant(bar)))',
+        {'baz': 'true'}:
+            'ConstructedConstant(Foo(_foo=FunctionConstant(int.parse)))'
+      },
+    ),
+    ConstantData(
+      '''String.fromEnvironment(String.fromEnvironment(String.fromEnvironment("foo")))''',
+      <Map<String, String>, String>{
+        {}: 'StringConstant("")',
+        {'foo': 'bar', 'bar': 'baz'}: 'StringConstant("")',
+        {'foo': 'bar', 'bar': 'baz', 'baz': 'hello'}: 'StringConstant("hello")',
+        {'foo': 'bar', 'bar': 'baz', 'baz': 'world'}: 'StringConstant("world")',
+      },
+    ),
+  ]),
 ];
 
 main(List<String> args) {
diff --git a/pkg/front_end/lib/src/fasta/kernel/constant_collection_builders.dart b/pkg/front_end/lib/src/fasta/kernel/constant_collection_builders.dart
index 37ab572..f52f249 100644
--- a/pkg/front_end/lib/src/fasta/kernel/constant_collection_builders.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/constant_collection_builders.dart
@@ -26,7 +26,7 @@
     if (constant is AbortConstant) return constant;
     if (evaluator.shouldBeUnevaluated) {
       parts.add(evaluator.unevaluated(
-          element, makeLiteral([evaluator.extract(constant)])));
+          element, makeLiteral([evaluator._wrap(constant)])));
       return null;
     } else {
       return addConstant(constant, element);
@@ -134,7 +134,7 @@
         if (part.isEmpty) continue;
         lists.add(new ConstantExpression(new ListConstant(elementType, part)));
       } else if (part is Constant) {
-        lists.add(evaluator.extract(part));
+        lists.add(evaluator._wrap(part));
       } else {
         throw 'Non-constant in constant list';
       }
@@ -208,7 +208,7 @@
         if (part.isEmpty) continue;
         sets.add(new ConstantExpression(new SetConstant(elementType, part)));
       } else if (part is Constant) {
-        sets.add(evaluator.extract(part));
+        sets.add(evaluator._wrap(part));
       } else {
         throw 'Non-constant in constant set';
       }
@@ -247,8 +247,7 @@
       parts.add(evaluator.unevaluated(
           element.key,
           new MapLiteral([
-            new MapLiteralEntry(
-                evaluator.extract(key), evaluator.extract(value))
+            new MapLiteralEntry(evaluator._wrap(key), evaluator._wrap(value))
           ], isConst: true)));
       return null;
     } else {
@@ -347,7 +346,7 @@
         maps.add(
             new ConstantExpression(new MapConstant(keyType, valueType, part)));
       } else if (part is Constant) {
-        maps.add(evaluator.extract(part));
+        maps.add(evaluator._wrap(part));
       } else {
         throw 'Non-constant in constant map';
       }
diff --git a/pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart b/pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart
index e1cffbd..1718ce3 100644
--- a/pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart
@@ -22,7 +22,6 @@
 
 import 'package:kernel/ast.dart';
 import 'package:kernel/class_hierarchy.dart';
-import 'package:kernel/clone.dart';
 import 'package:kernel/core_types.dart';
 import 'package:kernel/src/const_canonical_type.dart';
 import 'package:kernel/src/legacy_erasure.dart';
@@ -835,7 +834,7 @@
   TreeNode visitConstantExpression(
       ConstantExpression node, TreeNode? removalSentinel) {
     Constant constant = node.constant;
-    if (constant is UnevaluatedConstant) {
+    if (constant is UnevaluatedConstant && constantEvaluator.hasEnvironment) {
       Expression expression = constant.expression;
       return evaluateAndTransformWithContext(expression, expression);
     } else {
@@ -898,7 +897,6 @@
 
   final Map<Constant, Constant> canonicalizationCache;
   final Map<Node, Constant?> nodeCache;
-  final CloneVisitorNotMembers cloner = new CloneVisitorNotMembers();
 
   late Map<Class, bool> primitiveEqualCache;
 
@@ -910,7 +908,6 @@
 
   InstanceBuilder? instanceBuilder;
   EvaluationEnvironment env;
-  Set<Expression> replacementNodes = new Set<Expression>.identity();
   Map<Constant, Constant> lowered = new Map<Constant, Constant>.identity();
 
   bool seenUnevaluatedChild = false; // Any children that were left unevaluated?
@@ -1209,17 +1206,11 @@
     return node.accept(new RedundantFileUriExpressionRemover()) as Expression;
   }
 
-  /// Extract an expression from a (possibly unevaluated) constant to become
-  /// part of the expression tree of another unevaluated constant.
-  /// Makes sure a particular expression occurs only once in the tree by
-  /// cloning further instances.
-  Expression extract(Constant constant) {
-    Expression expression = constant.asExpression();
-    if (!replacementNodes.add(expression)) {
-      expression = cloner.clone(expression);
-      replacementNodes.add(expression);
-    }
-    return expression;
+  /// Wrap a constant in a ConstantExpression.
+  ///
+  /// For use with unevaluated constants.
+  ConstantExpression _wrap(Constant constant) {
+    return new ConstantExpression(constant);
   }
 
   /// Enter a region of lazy evaluation. All leaf nodes are evaluated normally
@@ -1754,7 +1745,7 @@
           return error;
         }
         if (constant is UnevaluatedConstant) {
-          instanceBuilder!.unusedArguments.add(extract(constant));
+          instanceBuilder!.unusedArguments.add(_wrap(constant));
         }
       }
       if (error != null) return error;
@@ -2040,7 +2031,7 @@
       }
 
       for (UnevaluatedConstant constant in env.unevaluatedUnreadConstants) {
-        instanceBuilder!.unusedArguments.add(extract(constant));
+        instanceBuilder!.unusedArguments.add(_wrap(constant));
       }
 
       // ignore: unnecessary_null_comparison
@@ -2065,10 +2056,10 @@
         enterLazy();
         Constant constant = _evaluateSubexpression(statement.message!);
         if (constant is AbortConstant) return constant;
-        message = extract(constant);
+        message = _wrap(constant);
         leaveLazy();
       }
-      instanceBuilder!.asserts.add(new AssertStatement(extract(condition),
+      instanceBuilder!.asserts.add(new AssertStatement(_wrap(condition),
           message: message,
           conditionStartOffset: statement.conditionStartOffset,
           conditionEndOffset: statement.conditionEndOffset));
@@ -2081,8 +2072,8 @@
         final Constant message = _evaluateSubexpression(statement.message!);
         if (message is AbortConstant) return message;
         if (shouldBeUnevaluated) {
-          instanceBuilder!.asserts.add(new AssertStatement(extract(condition),
-              message: extract(message),
+          instanceBuilder!.asserts.add(new AssertStatement(_wrap(condition),
+              message: _wrap(message),
               conditionStartOffset: statement.conditionStartOffset,
               conditionEndOffset: statement.conditionEndOffset));
         } else if (message is StringConstant) {
@@ -2150,7 +2141,7 @@
           node,
           new DynamicInvocation(
               node.kind,
-              extract(receiver),
+              _wrap(receiver),
               node.name,
               unevaluatedArguments(
                   positionalArguments, {}, node.arguments.types))
@@ -2195,7 +2186,7 @@
           node,
           new InstanceInvocation(
               node.kind,
-              extract(receiver),
+              _wrap(receiver),
               node.name,
               unevaluatedArguments(
                   positionalArguments, {}, node.arguments.types),
@@ -2293,11 +2284,10 @@
     if (left is AbortConstant) return left;
     final Constant right = _evaluateSubexpression(node.right);
     if (right is AbortConstant) return right;
-
     if (shouldBeUnevaluated) {
       return unevaluated(
           node,
-          new EqualsCall(extract(left), extract(right),
+          new EqualsCall(_wrap(left), _wrap(right),
               functionType: node.functionType,
               interfaceTarget: node.interfaceTarget)
             ..fileOffset = node.fileOffset);
@@ -2313,7 +2303,7 @@
 
     if (shouldBeUnevaluated) {
       return unevaluated(node,
-          new EqualsNull(extract(expression))..fileOffset = node.fileOffset);
+          new EqualsNull(_wrap(expression))..fileOffset = node.fileOffset);
     }
 
     return _handleEquals(node, expression, nullConstant);
@@ -2604,10 +2594,8 @@
       Constant right = _evaluateSubexpression(node.right);
       if (right is AbortConstant) return right;
       leaveLazy();
-      return unevaluated(
-          node,
-          new LogicalExpression(
-              extract(left), node.operatorEnum, extract(right)));
+      return unevaluated(node,
+          new LogicalExpression(_wrap(left), node.operatorEnum, _wrap(right)));
     }
     switch (node.operatorEnum) {
       case LogicalExpressionOperator.OR:
@@ -2688,8 +2676,8 @@
       leaveLazy();
       return unevaluated(
           node,
-          new ConditionalExpression(extract(condition), extract(then),
-              extract(otherwise), env.substituteType(node.staticType)));
+          new ConditionalExpression(_wrap(condition), _wrap(then),
+              _wrap(otherwise), env.substituteType(node.staticType)));
     } else {
       return createEvaluationErrorConstant(
           node.condition,
@@ -2737,7 +2725,7 @@
     } else if (shouldBeUnevaluated) {
       return unevaluated(
           node,
-          new InstanceGet(node.kind, extract(receiver), node.name,
+          new InstanceGet(node.kind, _wrap(receiver), node.name,
               resultType: node.resultType,
               interfaceTarget: node.interfaceTarget));
     } else if (receiver is NullConstant) {
@@ -2797,7 +2785,7 @@
       return canonicalize(intFolder.makeIntConstant(receiver.value.length));
     } else if (shouldBeUnevaluated) {
       return unevaluated(
-          node, new DynamicGet(node.kind, extract(receiver), node.name));
+          node, new DynamicGet(node.kind, _wrap(receiver), node.name));
     } else if (receiver is NullConstant) {
       return createEvaluationErrorConstant(node, messageConstEvalNullValue);
     }
@@ -2979,7 +2967,7 @@
         } else {
           // The value is either unevaluated constant or a non-primitive
           // constant in an unevaluated expression.
-          return extract(value as Constant);
+          return _wrap(value as Constant);
         }
       }, growable: false);
       return unevaluated(node, new StringConcatenation(expressions));
@@ -3254,7 +3242,7 @@
     if (shouldBeUnevaluated) {
       return unevaluated(
           node,
-          new AsExpression(extract(constant), env.substituteType(node.type))
+          new AsExpression(_wrap(constant), env.substituteType(node.type))
             ..isForNonNullableByDefault =
                 _staticTypeContext!.isNonNullableByDefault);
     }
@@ -3277,7 +3265,7 @@
     if (shouldBeUnevaluated) {
       return unevaluated(
           node,
-          new IsExpression(extract(constant), node.type)
+          new IsExpression(_wrap(constant), env.substituteType(node.type))
             ..fileOffset = node.fileOffset
             ..flags = node.flags);
     }
@@ -3349,7 +3337,7 @@
       return makeBoolConstant(constant != trueConstant);
     }
     if (shouldBeUnevaluated) {
-      return unevaluated(node, new Not(extract(constant)));
+      return unevaluated(node, new Not(_wrap(constant)));
     }
     return createEvaluationErrorConstant(
         node,
@@ -3368,7 +3356,7 @@
       return createEvaluationErrorConstant(node, messageConstEvalNonNull);
     }
     if (shouldBeUnevaluated) {
-      return unevaluated(node, new NullCheck(extract(constant)));
+      return unevaluated(node, new NullCheck(_wrap(constant)));
     }
     return constant;
   }
@@ -3397,7 +3385,7 @@
     if (shouldBeUnevaluated) {
       return unevaluated(
           node,
-          new Instantiation(extract(constant),
+          new Instantiation(_wrap(constant),
               node.typeArguments.map((t) => env.substituteType(t)).toList()));
     }
     List<TypeParameter>? typeParameters;
@@ -3691,11 +3679,11 @@
     final List<NamedExpression> named = new List<NamedExpression>.filled(
         namedArgs.length, dummyNamedExpression);
     for (int i = 0; i < positionalArgs.length; ++i) {
-      positional[i] = extract(positionalArgs[i]);
+      positional[i] = _wrap(positionalArgs[i]);
     }
     int i = 0;
     namedArgs.forEach((String name, Constant value) {
-      named[i++] = new NamedExpression(name, extract(value));
+      named[i++] = new NamedExpression(name, _wrap(value));
     });
     return new Arguments(positional, named: named, types: types);
   }
@@ -4146,7 +4134,7 @@
   InstanceCreation buildUnevaluatedInstance() {
     final Map<Reference, Expression> fieldValues = <Reference, Expression>{};
     fields.forEach((Field field, Constant value) {
-      fieldValues[field.fieldReference] = evaluator.extract(value);
+      fieldValues[field.fieldReference] = evaluator._wrap(value);
     });
     return new InstanceCreation(
         klass.reference, typeArguments, fieldValues, asserts, unusedArguments);
@@ -4327,11 +4315,6 @@
   }
 
   @override
-  Expression asExpression() {
-    throw new UnimplementedError();
-  }
-
-  @override
   DartType getType(StaticTypeContext context) {
     throw new UnimplementedError();
   }
@@ -4399,11 +4382,6 @@
   }
 
   @override
-  Expression asExpression() {
-    throw new UnimplementedError();
-  }
-
-  @override
   DartType getType(StaticTypeContext context) {
     throw new UnimplementedError();
   }
@@ -4465,11 +4443,6 @@
   }
 
   @override
-  Expression asExpression() {
-    throw new UnimplementedError();
-  }
-
-  @override
   DartType getType(StaticTypeContext context) {
     throw new UnimplementedError();
   }
@@ -4532,11 +4505,6 @@
   }
 
   @override
-  Expression asExpression() {
-    throw new UnimplementedError();
-  }
-
-  @override
   DartType getType(StaticTypeContext context) {
     throw new UnimplementedError();
   }
diff --git a/pkg/front_end/outline_extraction_testcases/.dart_tool/package_config.json b/pkg/front_end/outline_extraction_testcases/.dart_tool/package_config.json
new file mode 100644
index 0000000..7816160
--- /dev/null
+++ b/pkg/front_end/outline_extraction_testcases/.dart_tool/package_config.json
@@ -0,0 +1,4 @@
+{
+  "configVersion": 2,
+  "packages": []
+}
\ No newline at end of file
diff --git a/pkg/front_end/outline_extraction_testcases/.packages b/pkg/front_end/outline_extraction_testcases/.packages
deleted file mode 100644
index 68325fa..0000000
--- a/pkg/front_end/outline_extraction_testcases/.packages
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
\ No newline at end of file
diff --git a/pkg/front_end/outline_extraction_testcases/factories/.dart_tool/package_config.json b/pkg/front_end/outline_extraction_testcases/factories/.dart_tool/package_config.json
new file mode 100644
index 0000000..140964c
--- /dev/null
+++ b/pkg/front_end/outline_extraction_testcases/factories/.dart_tool/package_config.json
@@ -0,0 +1,9 @@
+{
+  "configVersion": 2,
+  "packages": [
+    {
+      "name": "foo",
+      "rootUri": ".."
+    }
+  ]
+}
\ No newline at end of file
diff --git a/pkg/front_end/outline_extraction_testcases/factories/.packages b/pkg/front_end/outline_extraction_testcases/factories/.packages
deleted file mode 100644
index 6607aec..0000000
--- a/pkg/front_end/outline_extraction_testcases/factories/.packages
+++ /dev/null
@@ -1 +0,0 @@
-foo:.
\ No newline at end of file
diff --git a/pkg/front_end/outline_extraction_testcases/named_import_with_export_and_named_constructor_and_class_type_parameter/.dart_tool/package_config.json b/pkg/front_end/outline_extraction_testcases/named_import_with_export_and_named_constructor_and_class_type_parameter/.dart_tool/package_config.json
new file mode 100644
index 0000000..140964c
--- /dev/null
+++ b/pkg/front_end/outline_extraction_testcases/named_import_with_export_and_named_constructor_and_class_type_parameter/.dart_tool/package_config.json
@@ -0,0 +1,9 @@
+{
+  "configVersion": 2,
+  "packages": [
+    {
+      "name": "foo",
+      "rootUri": ".."
+    }
+  ]
+}
\ No newline at end of file
diff --git a/pkg/front_end/outline_extraction_testcases/named_import_with_export_and_named_constructor_and_class_type_parameter/.packages b/pkg/front_end/outline_extraction_testcases/named_import_with_export_and_named_constructor_and_class_type_parameter/.packages
deleted file mode 100644
index 6607aec..0000000
--- a/pkg/front_end/outline_extraction_testcases/named_import_with_export_and_named_constructor_and_class_type_parameter/.packages
+++ /dev/null
@@ -1 +0,0 @@
-foo:.
\ No newline at end of file
diff --git a/pkg/front_end/outline_extraction_testcases/split_import_export_part/.dart_tool/package_config.json b/pkg/front_end/outline_extraction_testcases/split_import_export_part/.dart_tool/package_config.json
new file mode 100644
index 0000000..de99a55
--- /dev/null
+++ b/pkg/front_end/outline_extraction_testcases/split_import_export_part/.dart_tool/package_config.json
@@ -0,0 +1,9 @@
+{
+  "configVersion": 2,
+  "packages": [
+    {
+      "name": "foobar",
+      "rootUri": ".."
+    }
+  ]
+}
\ No newline at end of file
diff --git a/pkg/front_end/outline_extraction_testcases/split_import_export_part/.packages b/pkg/front_end/outline_extraction_testcases/split_import_export_part/.packages
deleted file mode 100644
index d19a7e0..0000000
--- a/pkg/front_end/outline_extraction_testcases/split_import_export_part/.packages
+++ /dev/null
@@ -1 +0,0 @@
-foobar:.
\ No newline at end of file
diff --git a/pkg/front_end/test/async_but_no_await_git_test.dart b/pkg/front_end/test/async_but_no_await_git_test.dart
index fb27bc2..0823d43 100644
--- a/pkg/front_end/test/async_but_no_await_git_test.dart
+++ b/pkg/front_end/test/async_but_no_await_git_test.dart
@@ -33,7 +33,7 @@
 
   Uri packageConfigUri = repoDir.resolve(".dart_tool/package_config.json");
   if (!new File.fromUri(packageConfigUri).existsSync()) {
-    throw "Couldn't find .packages";
+    throw "Couldn't find .dart_tool/package_config.json";
   }
   compilerOptions.packagesFileUri = packageConfigUri;
 
diff --git a/pkg/front_end/test/fasta/messages_suite.dart b/pkg/front_end/test/fasta/messages_suite.dart
index 3a90827..8c9862a 100644
--- a/pkg/front_end/test/fasta/messages_suite.dart
+++ b/pkg/front_end/test/fasta/messages_suite.dart
@@ -785,14 +785,13 @@
     Uri output =
         suite.fileSystem.currentDirectory.resolve("$dir/main.dart.dill");
 
-    // Setup .packages if it (or package_config.json) doesn't exist.
-    Uri dotPackagesUri =
-        suite.fileSystem.currentDirectory.resolve("$dir/.packages");
-    Uri packageConfigJsonUri = suite.fileSystem.currentDirectory
+    // Setup .dart_tool/package_config.json if it doesn't exist.
+    Uri packageConfigUri = suite.fileSystem.currentDirectory
         .resolve("$dir/.dart_tool/package_config.json");
-    if (!await suite.fileSystem.entityForUri(dotPackagesUri).exists() &&
-        !await suite.fileSystem.entityForUri(packageConfigJsonUri).exists()) {
-      suite.fileSystem.entityForUri(dotPackagesUri).writeAsBytesSync([]);
+    if (!await suite.fileSystem.entityForUri(packageConfigUri).exists()) {
+      suite.fileSystem
+          .entityForUri(packageConfigUri)
+          .writeAsStringSync('{"configVersion": 2, "packages": []}');
     }
 
     print("Compiling $main");
@@ -805,7 +804,7 @@
           ..explicitExperimentalFlags = example.experimentalFlags ?? {}
           ..target = new VmTarget(new TargetFlags())
           ..fileSystem = new HybridFileSystem(suite.fileSystem)
-          ..packagesFileUri = dotPackagesUri
+          ..packagesFileUri = packageConfigUri
           ..onDiagnostic = messages.add
           ..environmentDefines = const {}),
         main,
diff --git a/pkg/front_end/test/flutter_gallery_leak_tester.dart b/pkg/front_end/test/flutter_gallery_leak_tester.dart
index ff245b5..922bb31 100644
--- a/pkg/front_end/test/flutter_gallery_leak_tester.dart
+++ b/pkg/front_end/test/flutter_gallery_leak_tester.dart
@@ -182,7 +182,7 @@
     "--output-dill",
     "$rootPath/flutter_server_tmp.dill",
     "--packages",
-    "$rootPath/gallery/.packages",
+    "$rootPath/gallery/.dart_tool/package_config.json",
     "-Ddart.vm.profile=false",
     "-Ddart.vm.product=false",
     "--enable-asserts",
diff --git a/pkg/front_end/test/id_testing/data/directory_testing/.dart_tool/package_config.json b/pkg/front_end/test/id_testing/data/directory_testing/.dart_tool/package_config.json
new file mode 100644
index 0000000..27929ac
--- /dev/null
+++ b/pkg/front_end/test/id_testing/data/directory_testing/.dart_tool/package_config.json
@@ -0,0 +1,9 @@
+{
+  "configVersion": 2,
+  "packages": [
+    {
+      "name": "foo",
+      "rootUri": "../lib"
+    }
+  ]
+}
diff --git a/pkg/front_end/test/incremental_suite.dart b/pkg/front_end/test/incremental_suite.dart
index e96910b..78f31b4 100644
--- a/pkg/front_end/test/incremental_suite.dart
+++ b/pkg/front_end/test/incremental_suite.dart
@@ -400,7 +400,7 @@
       invalidateFilenames.remove(filename);
     }
     String source = sourceFiles[filename];
-    if (filename == ".packages") {
+    if (filename == ".dart_tool/package_config.json") {
       packagesUri = uri;
     }
     File file = new File.fromUri(uri);
@@ -477,7 +477,7 @@
     Uri? packagesUri;
     for (String filename in module[moduleName].keys) {
       Uri uri = base.resolve(filename);
-      if (uri.pathSegments.last == ".packages") {
+      if (uri.pathSegments.last == "package_config.json") {
         packagesUri = uri;
       } else {
         moduleSources.add(uri);
@@ -683,9 +683,7 @@
       for (String filename in sourceFiles.keys) {
         String data = sourceFiles[filename] ?? "";
         Uri uri = base.resolve(filename);
-        if (filename == ".packages") {
-          packagesUri = uri;
-        } else if (filename == ".dart_tool/package_config.json") {
+        if (filename == ".dart_tool/package_config.json") {
           packagesUri = uri;
         }
         if (world["enableStringReplacement"] == true) {
@@ -693,8 +691,8 @@
         }
         fs.entityForUri(uri).writeAsStringSync(data);
       }
-      if (world["dotPackagesFile"] != null) {
-        packagesUri = base.resolve(world["dotPackagesFile"]);
+      if (world["packageConfigFile"] != null) {
+        packagesUri = base.resolve(world["packageConfigFile"]);
       }
 
       if (brandNewWorld) {
diff --git a/pkg/front_end/test/lint_suite.dart b/pkg/front_end/test/lint_suite.dart
index 2d91952..009efff 100644
--- a/pkg/front_end/test/lint_suite.dart
+++ b/pkg/front_end/test/lint_suite.dart
@@ -167,23 +167,23 @@
       description.cache.firstToken = scanner.tokenize();
       description.cache.lineStarts = scanner.lineStarts;
 
-      Uri dotPackages =
+      Uri packageConfig =
           description.uri.resolve(".dart_tool/package_config.json");
       while (true) {
-        if (new File.fromUri(dotPackages).existsSync()) {
+        if (new File.fromUri(packageConfig).existsSync()) {
           break;
         }
         // Stupid bailout.
-        if (dotPackages.pathSegments.length < Uri.base.pathSegments.length) {
+        if (packageConfig.pathSegments.length < Uri.base.pathSegments.length) {
           break;
         }
-        dotPackages =
-            dotPackages.resolve("../../.dart_tool/package_config.json");
+        packageConfig =
+            packageConfig.resolve("../../.dart_tool/package_config.json");
       }
 
-      File dotPackagesFile = new File.fromUri(dotPackages);
-      if (dotPackagesFile.existsSync()) {
-        description.cache.packages = await loadPackageConfigUri(dotPackages);
+      File packageConfigUri = new File.fromUri(packageConfig);
+      if (packageConfigUri.existsSync()) {
+        description.cache.packages = await loadPackageConfigUri(packageConfig);
       }
     }
 
diff --git a/pkg/front_end/test/outline_extractor_suite.dart b/pkg/front_end/test/outline_extractor_suite.dart
index 4548f0c..42adf8c 100644
--- a/pkg/front_end/test/outline_extractor_suite.dart
+++ b/pkg/front_end/test/outline_extractor_suite.dart
@@ -100,7 +100,7 @@
   @override
   Future<Result<TestDescription>> run(
       TestDescription description, Context context) async {
-    Uri? packages = description.uri.resolve(".packages");
+    Uri? packages = description.uri.resolve(".dart_tool/package_config.json");
     if (!new File.fromUri(packages).existsSync()) {
       packages = null;
     }
@@ -141,7 +141,7 @@
   @override
   Future<Result<TestDescription>> run(
       TestDescription description, Context context) async {
-    Uri? packages = description.uri.resolve(".packages");
+    Uri? packages = description.uri.resolve(".dart_tool/package_config.json");
     if (!new File.fromUri(packages).existsSync()) {
       packages = null;
     }
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_asserts.dart.weak.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_asserts.dart.weak.expect
index 9106d0c..96b1d69 100644
--- a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_asserts.dart.weak.expect
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_asserts.dart.weak.expect
@@ -95,9 +95,9 @@
     : self::Bar::x = x, assert(x.{core::num::<}(0){(core::num) → core::bool}), super core::Object::•()
     ;
 }
-static const field self::Foo foo1 = #C9;
+static const field self::Foo foo1 = #C12;
 static const field self::Foo foo2 = invalid-expression "This assertion failed with message: x is not positive";
-static const field self::Foo foo3 = #C12;
+static const field self::Foo foo3 = #C16;
 static const field self::Foo foo4 = invalid-expression "This assertion failed with a non-String message.";
 static const field self::Foo foo5 = invalid-expression "pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_asserts.dart:16:51: Error: A value of type 'int' can't be assigned to a variable of type 'bool'.
   const Foo.withInvalidCondition(this.x) : assert(x);
@@ -107,7 +107,7 @@
 static const field self::Bar bar3 = invalid-expression "This assertion failed.";
 static const field self::Bar bar4 = invalid-expression "This assertion failed.";
 static method main() → dynamic {
-  core::print(#C9);
+  core::print(#C12);
 }
 
 constants  {
@@ -118,11 +118,15 @@
   #C5 = eval const core::bool::fromEnvironment(#C1)
   #C6 = 1
   #C7 = false
-  #C8 = "foo was "
-  #C9 = eval self::Foo{x:#C6, assert(const core::bool::fromEnvironment(#C1) =={core::Object::==}{(core::Object) → core::bool} #C7, "${#C8}${const core::bool::fromEnvironment(#C1)}"), assert(const core::bool::fromEnvironment(#C1) =={core::Object::==}{(core::Object) → core::bool} #C7)}
-  #C10 = 42
-  #C11 = "btw foo was "
-  #C12 = eval self::Foo{x:#C10, assert(#C7, "${#C11}${const core::bool::fromEnvironment(#C1)}")}
+  #C8 = eval #C2 =={core::Object::==}{(core::Object) → core::bool} #C7
+  #C9 = "foo was "
+  #C10 = eval "${#C9}${#C3}"
+  #C11 = eval #C4 =={core::Object::==}{(core::Object) → core::bool} #C7
+  #C12 = eval self::Foo{x:#C6, assert(#C8, #C10), assert(#C11)}
+  #C13 = 42
+  #C14 = "btw foo was "
+  #C15 = eval "${#C14}${#C5}"
+  #C16 = eval self::Foo{x:#C13, assert(#C7, #C15)}
 }
 
 
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_asserts.dart.weak.modular.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_asserts.dart.weak.modular.expect
index 9106d0c..96b1d69 100644
--- a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_asserts.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_asserts.dart.weak.modular.expect
@@ -95,9 +95,9 @@
     : self::Bar::x = x, assert(x.{core::num::<}(0){(core::num) → core::bool}), super core::Object::•()
     ;
 }
-static const field self::Foo foo1 = #C9;
+static const field self::Foo foo1 = #C12;
 static const field self::Foo foo2 = invalid-expression "This assertion failed with message: x is not positive";
-static const field self::Foo foo3 = #C12;
+static const field self::Foo foo3 = #C16;
 static const field self::Foo foo4 = invalid-expression "This assertion failed with a non-String message.";
 static const field self::Foo foo5 = invalid-expression "pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_asserts.dart:16:51: Error: A value of type 'int' can't be assigned to a variable of type 'bool'.
   const Foo.withInvalidCondition(this.x) : assert(x);
@@ -107,7 +107,7 @@
 static const field self::Bar bar3 = invalid-expression "This assertion failed.";
 static const field self::Bar bar4 = invalid-expression "This assertion failed.";
 static method main() → dynamic {
-  core::print(#C9);
+  core::print(#C12);
 }
 
 constants  {
@@ -118,11 +118,15 @@
   #C5 = eval const core::bool::fromEnvironment(#C1)
   #C6 = 1
   #C7 = false
-  #C8 = "foo was "
-  #C9 = eval self::Foo{x:#C6, assert(const core::bool::fromEnvironment(#C1) =={core::Object::==}{(core::Object) → core::bool} #C7, "${#C8}${const core::bool::fromEnvironment(#C1)}"), assert(const core::bool::fromEnvironment(#C1) =={core::Object::==}{(core::Object) → core::bool} #C7)}
-  #C10 = 42
-  #C11 = "btw foo was "
-  #C12 = eval self::Foo{x:#C10, assert(#C7, "${#C11}${const core::bool::fromEnvironment(#C1)}")}
+  #C8 = eval #C2 =={core::Object::==}{(core::Object) → core::bool} #C7
+  #C9 = "foo was "
+  #C10 = eval "${#C9}${#C3}"
+  #C11 = eval #C4 =={core::Object::==}{(core::Object) → core::bool} #C7
+  #C12 = eval self::Foo{x:#C6, assert(#C8, #C10), assert(#C11)}
+  #C13 = 42
+  #C14 = "btw foo was "
+  #C15 = eval "${#C14}${#C5}"
+  #C16 = eval self::Foo{x:#C13, assert(#C7, #C15)}
 }
 
 
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_asserts.dart.weak.transformed.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_asserts.dart.weak.transformed.expect
index d6b50e0..dc5b38b 100644
--- a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_asserts.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_asserts.dart.weak.transformed.expect
@@ -95,9 +95,9 @@
     : self::Bar::x = x, assert(x.{core::num::<}(0){(core::num) → core::bool}), super core::Object::•()
     ;
 }
-static const field self::Foo foo1 = #C9;
+static const field self::Foo foo1 = #C12;
 static const field self::Foo foo2 = invalid-expression "This assertion failed with message: x is not positive";
-static const field self::Foo foo3 = #C12;
+static const field self::Foo foo3 = #C16;
 static const field self::Foo foo4 = invalid-expression "This assertion failed with a non-String message.";
 static const field self::Foo foo5 = invalid-expression "pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_asserts.dart:16:51: Error: A value of type 'int' can't be assigned to a variable of type 'bool'.
   const Foo.withInvalidCondition(this.x) : assert(x);
@@ -107,7 +107,7 @@
 static const field self::Bar bar3 = invalid-expression "This assertion failed.";
 static const field self::Bar bar4 = invalid-expression "This assertion failed.";
 static method main() → dynamic {
-  core::print(#C13);
+  core::print(#C12);
 }
 
 constants  {
@@ -118,12 +118,15 @@
   #C5 = eval const core::bool::fromEnvironment(#C1)
   #C6 = 1
   #C7 = false
-  #C8 = "foo was "
-  #C9 = eval self::Foo{x:#C6, assert(const core::bool::fromEnvironment(#C1) =={core::Object::==}{(core::Object) → core::bool} #C7, "${#C8}${const core::bool::fromEnvironment(#C1)}"), assert(const core::bool::fromEnvironment(#C1) =={core::Object::==}{(core::Object) → core::bool} #C7)}
-  #C10 = 42
-  #C11 = "btw foo was "
-  #C12 = eval self::Foo{x:#C10, assert(#C7, "${#C11}${const core::bool::fromEnvironment(#C1)}")}
-  #C13 = eval self::Foo{x:#C6, assert(const core::bool::fromEnvironment(#C1) =={core::Object::==}{(core::Object) → core::bool} #C7, "${#C8}${const core::bool::fromEnvironment(#C1)}"), assert(const core::bool::fromEnvironment(#C1) =={core::Object::==}{(core::Object) → core::bool} #C7)}
+  #C8 = eval #C2 =={core::Object::==}{(core::Object) → core::bool} #C7
+  #C9 = "foo was "
+  #C10 = eval "${#C9}${#C3}"
+  #C11 = eval #C4 =={core::Object::==}{(core::Object) → core::bool} #C7
+  #C12 = eval self::Foo{x:#C6, assert(#C8, #C10), assert(#C11)}
+  #C13 = 42
+  #C14 = "btw foo was "
+  #C15 = eval "${#C14}${#C5}"
+  #C16 = eval self::Foo{x:#C13, assert(#C7, #C15)}
 }
 
 Extra constant evaluation status:
@@ -135,7 +138,7 @@
 Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///const_asserts.dart:12:22 -> BoolConstant(false)
 Evaluated with empty environment: StringConcatenation @ org-dartlang-testcase:///const_asserts.dart:14:73 -> StringConstant("btw foo was false")
 Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///const_asserts.dart:14:44 -> BoolConstant(false)
-Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///const_asserts.dart:25:24 -> InstanceConstant(const Foo{Foo.x: 1})
+Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///const_asserts.dart:36:9 -> InstanceConstant(const Foo{Foo.x: 1})
 Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///const_asserts.dart:25:24 -> InstanceConstant(const Foo{Foo.x: 1})
 Extra constant evaluation: evaluated: 31, effectively constant: 10
 
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_collections.dart.weak.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_collections.dart.weak.expect
index 4f9249f..531858a 100644
--- a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_collections.dart.weak.expect
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_collections.dart.weak.expect
@@ -9,44 +9,55 @@
 import self as self;
 import "dart:core" as core;
 
-static const field core::List<core::bool> listWithUnevaluated = #C5;
-static const field core::List<core::bool> listWithUnevaluatedSpread = #C8;
-static const field core::Set<core::bool> setWithUnevaluated = #C10;
-static const field core::Set<core::bool> setWithUnevaluatedSpread = #C12;
-static const field core::List<core::int> a = #C13;
-static const field core::List<core::int?> b = #C14;
-static const field core::Set<core::List<core::int?>> setNotAgnosticOK = #C15;
-static const field invalid-type MapWithUnevaluated = #C16;
-static const field core::Map<core::List<core::int?>, core::int> mapNotAgnosticOK = #C19;
+static const field core::List<core::bool> listWithUnevaluated = #C9;
+static const field core::List<core::bool> listWithUnevaluatedSpread = #C12;
+static const field core::Set<core::bool> setWithUnevaluated = #C18;
+static const field core::Set<core::bool> setWithUnevaluatedSpread = #C20;
+static const field core::List<core::int> a = #C21;
+static const field core::List<core::int?> b = #C22;
+static const field core::Set<core::List<core::int?>> setNotAgnosticOK = #C23;
+static const field invalid-type MapWithUnevaluated = #C27;
+static const field core::Map<core::List<core::int?>, core::int> mapNotAgnosticOK = #C30;
 static method main() → dynamic {
-  core::print(#C5);
-  core::print(#C8);
-  core::print(#C10);
+  core::print(#C9);
   core::print(#C12);
+  core::print(#C18);
+  core::print(#C20);
   core::print(<core::String>{"hello"});
-  core::print(#C21);
+  core::print(#C32);
 }
 
 constants  {
   #C1 = "foo"
-  #C2 = "bar"
-  #C3 = true
-  #C4 = <core::bool*>[#C3]
-  #C5 = eval const <dynamic>[const core::bool::fromEnvironment(#C1)] + const <dynamic>[const core::bool::fromEnvironment(#C2)] + #C4
-  #C6 = false
-  #C7 = <core::bool*>[#C6]
-  #C8 = eval #C4 + const <dynamic>[const core::bool::fromEnvironment(#C1)] + const <dynamic>[const core::bool::fromEnvironment(#C2)] + #C4 + #C7
-  #C9 = <core::bool*>{#C3}
-  #C10 = eval const <dynamic>{const core::bool::fromEnvironment(#C1)} + const <dynamic>{const core::bool::fromEnvironment(#C2)} + #C9
-  #C11 = <core::bool*>{#C6}
-  #C12 = eval #C9 + const <dynamic>{const core::bool::fromEnvironment(#C1)} + const <dynamic>{const core::bool::fromEnvironment(#C2)} + #C9 + #C11
-  #C13 = <core::int*>[]
-  #C14 = <core::int?>[]
-  #C15 = <core::List<core::int?>*>{#C13, #C14}
-  #C16 = eval const <dynamic, dynamic>{const core::bool::fromEnvironment(#C1): const core::bool::fromEnvironment(#C2)}
-  #C17 = 0
-  #C18 = 1
-  #C19 = <core::List<core::int?>*, core::int*>{#C13:#C17, #C14:#C18)
-  #C20 = "hello"
-  #C21 = <core::String*>{#C20}
+  #C2 = eval const core::bool::fromEnvironment(#C1)
+  #C3 = eval const <dynamic>[#C2]
+  #C4 = "bar"
+  #C5 = eval const core::bool::fromEnvironment(#C4)
+  #C6 = eval const <dynamic>[#C5]
+  #C7 = true
+  #C8 = <core::bool*>[#C7]
+  #C9 = eval #C3 + #C6 + #C8
+  #C10 = false
+  #C11 = <core::bool*>[#C10]
+  #C12 = eval #C8 + #C9 + #C11
+  #C13 = eval const core::bool::fromEnvironment(#C1)
+  #C14 = eval const <dynamic>{#C13}
+  #C15 = eval const core::bool::fromEnvironment(#C4)
+  #C16 = eval const <dynamic>{#C15}
+  #C17 = <core::bool*>{#C7}
+  #C18 = eval #C14 + #C16 + #C17
+  #C19 = <core::bool*>{#C10}
+  #C20 = eval #C17 + #C18 + #C19
+  #C21 = <core::int*>[]
+  #C22 = <core::int?>[]
+  #C23 = <core::List<core::int?>*>{#C21, #C22}
+  #C24 = eval const core::bool::fromEnvironment(#C1)
+  #C25 = eval const core::bool::fromEnvironment(#C4)
+  #C26 = eval const <dynamic, dynamic>{#C24: #C25}
+  #C27 = eval #C26
+  #C28 = 0
+  #C29 = 1
+  #C30 = <core::List<core::int?>*, core::int*>{#C21:#C28, #C22:#C29)
+  #C31 = "hello"
+  #C32 = <core::String*>{#C31}
 }
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_collections.dart.weak.modular.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_collections.dart.weak.modular.expect
index 4f9249f..531858a 100644
--- a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_collections.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_collections.dart.weak.modular.expect
@@ -9,44 +9,55 @@
 import self as self;
 import "dart:core" as core;
 
-static const field core::List<core::bool> listWithUnevaluated = #C5;
-static const field core::List<core::bool> listWithUnevaluatedSpread = #C8;
-static const field core::Set<core::bool> setWithUnevaluated = #C10;
-static const field core::Set<core::bool> setWithUnevaluatedSpread = #C12;
-static const field core::List<core::int> a = #C13;
-static const field core::List<core::int?> b = #C14;
-static const field core::Set<core::List<core::int?>> setNotAgnosticOK = #C15;
-static const field invalid-type MapWithUnevaluated = #C16;
-static const field core::Map<core::List<core::int?>, core::int> mapNotAgnosticOK = #C19;
+static const field core::List<core::bool> listWithUnevaluated = #C9;
+static const field core::List<core::bool> listWithUnevaluatedSpread = #C12;
+static const field core::Set<core::bool> setWithUnevaluated = #C18;
+static const field core::Set<core::bool> setWithUnevaluatedSpread = #C20;
+static const field core::List<core::int> a = #C21;
+static const field core::List<core::int?> b = #C22;
+static const field core::Set<core::List<core::int?>> setNotAgnosticOK = #C23;
+static const field invalid-type MapWithUnevaluated = #C27;
+static const field core::Map<core::List<core::int?>, core::int> mapNotAgnosticOK = #C30;
 static method main() → dynamic {
-  core::print(#C5);
-  core::print(#C8);
-  core::print(#C10);
+  core::print(#C9);
   core::print(#C12);
+  core::print(#C18);
+  core::print(#C20);
   core::print(<core::String>{"hello"});
-  core::print(#C21);
+  core::print(#C32);
 }
 
 constants  {
   #C1 = "foo"
-  #C2 = "bar"
-  #C3 = true
-  #C4 = <core::bool*>[#C3]
-  #C5 = eval const <dynamic>[const core::bool::fromEnvironment(#C1)] + const <dynamic>[const core::bool::fromEnvironment(#C2)] + #C4
-  #C6 = false
-  #C7 = <core::bool*>[#C6]
-  #C8 = eval #C4 + const <dynamic>[const core::bool::fromEnvironment(#C1)] + const <dynamic>[const core::bool::fromEnvironment(#C2)] + #C4 + #C7
-  #C9 = <core::bool*>{#C3}
-  #C10 = eval const <dynamic>{const core::bool::fromEnvironment(#C1)} + const <dynamic>{const core::bool::fromEnvironment(#C2)} + #C9
-  #C11 = <core::bool*>{#C6}
-  #C12 = eval #C9 + const <dynamic>{const core::bool::fromEnvironment(#C1)} + const <dynamic>{const core::bool::fromEnvironment(#C2)} + #C9 + #C11
-  #C13 = <core::int*>[]
-  #C14 = <core::int?>[]
-  #C15 = <core::List<core::int?>*>{#C13, #C14}
-  #C16 = eval const <dynamic, dynamic>{const core::bool::fromEnvironment(#C1): const core::bool::fromEnvironment(#C2)}
-  #C17 = 0
-  #C18 = 1
-  #C19 = <core::List<core::int?>*, core::int*>{#C13:#C17, #C14:#C18)
-  #C20 = "hello"
-  #C21 = <core::String*>{#C20}
+  #C2 = eval const core::bool::fromEnvironment(#C1)
+  #C3 = eval const <dynamic>[#C2]
+  #C4 = "bar"
+  #C5 = eval const core::bool::fromEnvironment(#C4)
+  #C6 = eval const <dynamic>[#C5]
+  #C7 = true
+  #C8 = <core::bool*>[#C7]
+  #C9 = eval #C3 + #C6 + #C8
+  #C10 = false
+  #C11 = <core::bool*>[#C10]
+  #C12 = eval #C8 + #C9 + #C11
+  #C13 = eval const core::bool::fromEnvironment(#C1)
+  #C14 = eval const <dynamic>{#C13}
+  #C15 = eval const core::bool::fromEnvironment(#C4)
+  #C16 = eval const <dynamic>{#C15}
+  #C17 = <core::bool*>{#C7}
+  #C18 = eval #C14 + #C16 + #C17
+  #C19 = <core::bool*>{#C10}
+  #C20 = eval #C17 + #C18 + #C19
+  #C21 = <core::int*>[]
+  #C22 = <core::int?>[]
+  #C23 = <core::List<core::int?>*>{#C21, #C22}
+  #C24 = eval const core::bool::fromEnvironment(#C1)
+  #C25 = eval const core::bool::fromEnvironment(#C4)
+  #C26 = eval const <dynamic, dynamic>{#C24: #C25}
+  #C27 = eval #C26
+  #C28 = 0
+  #C29 = 1
+  #C30 = <core::List<core::int?>*, core::int*>{#C21:#C28, #C22:#C29)
+  #C31 = "hello"
+  #C32 = <core::String*>{#C31}
 }
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_collections.dart.weak.transformed.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_collections.dart.weak.transformed.expect
index 68271db..a7630c4 100644
--- a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_collections.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_collections.dart.weak.transformed.expect
@@ -9,55 +9,62 @@
 import self as self;
 import "dart:core" as core;
 
-static const field core::List<core::bool> listWithUnevaluated = #C5;
-static const field core::List<core::bool> listWithUnevaluatedSpread = #C8;
-static const field core::Set<core::bool> setWithUnevaluated = #C10;
-static const field core::Set<core::bool> setWithUnevaluatedSpread = #C12;
-static const field core::List<core::int> a = #C13;
-static const field core::List<core::int?> b = #C14;
-static const field core::Set<core::List<core::int?>> setNotAgnosticOK = #C15;
-static const field invalid-type MapWithUnevaluated = #C16;
-static const field core::Map<core::List<core::int?>, core::int> mapNotAgnosticOK = #C19;
+static const field core::List<core::bool> listWithUnevaluated = #C9;
+static const field core::List<core::bool> listWithUnevaluatedSpread = #C12;
+static const field core::Set<core::bool> setWithUnevaluated = #C18;
+static const field core::Set<core::bool> setWithUnevaluatedSpread = #C20;
+static const field core::List<core::int> a = #C21;
+static const field core::List<core::int?> b = #C22;
+static const field core::Set<core::List<core::int?>> setNotAgnosticOK = #C23;
+static const field invalid-type MapWithUnevaluated = #C27;
+static const field core::Map<core::List<core::int?>, core::int> mapNotAgnosticOK = #C30;
 static method main() → dynamic {
+  core::print(#C9);
+  core::print(#C12);
+  core::print(#C18);
   core::print(#C20);
-  core::print(#C21);
-  core::print(#C22);
-  core::print(#C23);
   core::print(<core::String>{"hello"});
-  core::print(#C25);
+  core::print(#C32);
 }
 
 constants  {
   #C1 = "foo"
-  #C2 = "bar"
-  #C3 = true
-  #C4 = <core::bool*>[#C3]
-  #C5 = eval const <dynamic>[const core::bool::fromEnvironment(#C1)] + const <dynamic>[const core::bool::fromEnvironment(#C2)] + #C4
-  #C6 = false
-  #C7 = <core::bool*>[#C6]
-  #C8 = eval #C4 + const <dynamic>[const core::bool::fromEnvironment(#C1)] + const <dynamic>[const core::bool::fromEnvironment(#C2)] + #C4 + #C7
-  #C9 = <core::bool*>{#C3}
-  #C10 = eval const <dynamic>{const core::bool::fromEnvironment(#C1)} + const <dynamic>{const core::bool::fromEnvironment(#C2)} + #C9
-  #C11 = <core::bool*>{#C6}
-  #C12 = eval #C9 + const <dynamic>{const core::bool::fromEnvironment(#C1)} + const <dynamic>{const core::bool::fromEnvironment(#C2)} + #C9 + #C11
-  #C13 = <core::int*>[]
-  #C14 = <core::int?>[]
-  #C15 = <core::List<core::int?>*>{#C13, #C14}
-  #C16 = eval const <dynamic, dynamic>{const core::bool::fromEnvironment(#C1): const core::bool::fromEnvironment(#C2)}
-  #C17 = 0
-  #C18 = 1
-  #C19 = <core::List<core::int?>*, core::int*>{#C13:#C17, #C14:#C18)
-  #C20 = eval const <dynamic>[const core::bool::fromEnvironment(#C1)] + const <dynamic>[const core::bool::fromEnvironment(#C2)] + #C4
-  #C21 = eval #C4 + const <dynamic>[const core::bool::fromEnvironment(#C1)] + const <dynamic>[const core::bool::fromEnvironment(#C2)] + #C4 + #C7
-  #C22 = eval const <dynamic>{const core::bool::fromEnvironment(#C1)} + const <dynamic>{const core::bool::fromEnvironment(#C2)} + #C9
-  #C23 = eval #C9 + const <dynamic>{const core::bool::fromEnvironment(#C1)} + const <dynamic>{const core::bool::fromEnvironment(#C2)} + #C9 + #C11
-  #C24 = "hello"
-  #C25 = <core::String*>{#C24}
+  #C2 = eval const core::bool::fromEnvironment(#C1)
+  #C3 = eval const <dynamic>[#C2]
+  #C4 = "bar"
+  #C5 = eval const core::bool::fromEnvironment(#C4)
+  #C6 = eval const <dynamic>[#C5]
+  #C7 = true
+  #C8 = <core::bool*>[#C7]
+  #C9 = eval #C3 + #C6 + #C8
+  #C10 = false
+  #C11 = <core::bool*>[#C10]
+  #C12 = eval #C8 + #C9 + #C11
+  #C13 = eval const core::bool::fromEnvironment(#C1)
+  #C14 = eval const <dynamic>{#C13}
+  #C15 = eval const core::bool::fromEnvironment(#C4)
+  #C16 = eval const <dynamic>{#C15}
+  #C17 = <core::bool*>{#C7}
+  #C18 = eval #C14 + #C16 + #C17
+  #C19 = <core::bool*>{#C10}
+  #C20 = eval #C17 + #C18 + #C19
+  #C21 = <core::int*>[]
+  #C22 = <core::int?>[]
+  #C23 = <core::List<core::int?>*>{#C21, #C22}
+  #C24 = eval const core::bool::fromEnvironment(#C1)
+  #C25 = eval const core::bool::fromEnvironment(#C4)
+  #C26 = eval const <dynamic, dynamic>{#C24: #C25}
+  #C27 = eval #C26
+  #C28 = 0
+  #C29 = 1
+  #C30 = <core::List<core::int?>*, core::int*>{#C21:#C28, #C22:#C29)
+  #C31 = "hello"
+  #C32 = <core::String*>{#C31}
 }
 
 Extra constant evaluation status:
-Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///const_collections.dart:5:40 -> ListConstant(const <bool*>[false, false, true])
-Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///const_collections.dart:10:46 -> ListConstant(const <bool*>[true, false, false, true, false])
+Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///const_collections.dart:34:9 -> ListConstant(const <bool*>[false, false, true])
+Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///const_collections.dart:35:9 -> ListConstant(const <bool*>[true, false, false, true, false])
 Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///const_collections.dart:5:40 -> ListConstant(const <bool*>[false, false, true])
 Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///const_collections.dart:10:46 -> ListConstant(const <bool*>[true, false, false, true, false])
 Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///const_collections.dart:27:38 -> MapConstant(const <bool*, bool*>{false: false})
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_collections_2.dart.weak.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_collections_2.dart.weak.expect
index 19a8cfb..6f8ad9e 100644
--- a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_collections_2.dart.weak.expect
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_collections_2.dart.weak.expect
@@ -2,37 +2,53 @@
 import self as self;
 import "dart:core" as core;
 
-static const field core::List<core::String> listWithUnevaluatedUnevaluatedFirst = #C6;
-static const field core::List<core::String> listWithUnevaluatedUnevaluatedMiddle = #C14;
-static const field core::Set<core::String> setWithUnevaluatedUnevaluatedFirst = #C16;
-static const field core::Set<core::String> setWithUnevaluatedUnevaluatedMiddle = #C19;
-static const field core::Map<core::String, core::int> mapWithUnevaluatedUnevaluatedFirst = #C22;
-static const field core::Map<core::String, core::int> mapWithUnevaluatedUnevaluatedMiddle = #C25;
+static const field core::List<core::String> listWithUnevaluatedUnevaluatedFirst = #C10;
+static const field core::List<core::String> listWithUnevaluatedUnevaluatedMiddle = #C22;
+static const field core::Set<core::String> setWithUnevaluatedUnevaluatedFirst = #C26;
+static const field core::Set<core::String> setWithUnevaluatedUnevaluatedMiddle = #C31;
+static const field core::Map<core::String, core::int> mapWithUnevaluatedUnevaluatedFirst = #C36;
+static const field core::Map<core::String, core::int> mapWithUnevaluatedUnevaluatedMiddle = #C41;
 
 constants  {
   #C1 = "foo"
-  #C2 = "bar"
-  #C3 = "hello"
-  #C4 = "world"
-  #C5 = <core::String*>[#C3, #C4]
-  #C6 = eval const <dynamic>[const core::String::fromEnvironment(#C1)] + const <dynamic>[const core::String::fromEnvironment(#C2)] + #C5
-  #C7 = "A"
-  #C8 = "few"
-  #C9 = "strings"
-  #C10 = <core::String*>[#C7, #C8, #C9]
-  #C11 = "and"
-  #C12 = "more"
-  #C13 = <core::String*>[#C3, #C4, #C11, #C12]
-  #C14 = eval #C10 + const <dynamic>[const core::String::fromEnvironment(#C1)] + const <dynamic>[const core::String::fromEnvironment(#C2)] + #C13
-  #C15 = <core::String*>{#C3, #C4}
-  #C16 = eval const <dynamic>{const core::String::fromEnvironment(#C1)} + #C15
-  #C17 = <core::String*>{#C7, #C8, #C9}
-  #C18 = <core::String*>{#C3, #C4, #C11, #C12}
-  #C19 = eval #C17 + const <dynamic>{const core::String::fromEnvironment(#C1)} + #C18
-  #C20 = 42
-  #C21 = <core::String*, core::int*>{#C3:#C20, #C4:#C20)
-  #C22 = eval const <dynamic, dynamic>{const core::String::fromEnvironment(#C1): #C20} + #C21
-  #C23 = <core::String*, core::int*>{#C7:#C20, #C8:#C20, #C9:#C20)
-  #C24 = <core::String*, core::int*>{#C3:#C20, #C4:#C20, #C11:#C20, #C12:#C20)
-  #C25 = eval #C23 + const <dynamic, dynamic>{const core::String::fromEnvironment(#C1): #C20} + #C24
+  #C2 = eval const core::String::fromEnvironment(#C1)
+  #C3 = eval const <dynamic>[#C2]
+  #C4 = "bar"
+  #C5 = eval const core::String::fromEnvironment(#C4)
+  #C6 = eval const <dynamic>[#C5]
+  #C7 = "hello"
+  #C8 = "world"
+  #C9 = <core::String*>[#C7, #C8]
+  #C10 = eval #C3 + #C6 + #C9
+  #C11 = "A"
+  #C12 = "few"
+  #C13 = "strings"
+  #C14 = <core::String*>[#C11, #C12, #C13]
+  #C15 = eval const core::String::fromEnvironment(#C1)
+  #C16 = eval const <dynamic>[#C15]
+  #C17 = eval const core::String::fromEnvironment(#C4)
+  #C18 = eval const <dynamic>[#C17]
+  #C19 = "and"
+  #C20 = "more"
+  #C21 = <core::String*>[#C7, #C8, #C19, #C20]
+  #C22 = eval #C14 + #C16 + #C18 + #C21
+  #C23 = eval const core::String::fromEnvironment(#C1)
+  #C24 = eval const <dynamic>{#C23}
+  #C25 = <core::String*>{#C7, #C8}
+  #C26 = eval #C24 + #C25
+  #C27 = <core::String*>{#C11, #C12, #C13}
+  #C28 = eval const core::String::fromEnvironment(#C1)
+  #C29 = eval const <dynamic>{#C28}
+  #C30 = <core::String*>{#C7, #C8, #C19, #C20}
+  #C31 = eval #C27 + #C29 + #C30
+  #C32 = eval const core::String::fromEnvironment(#C1)
+  #C33 = 42
+  #C34 = eval const <dynamic, dynamic>{#C32: #C33}
+  #C35 = <core::String*, core::int*>{#C7:#C33, #C8:#C33)
+  #C36 = eval #C34 + #C35
+  #C37 = <core::String*, core::int*>{#C11:#C33, #C12:#C33, #C13:#C33)
+  #C38 = eval const core::String::fromEnvironment(#C1)
+  #C39 = eval const <dynamic, dynamic>{#C38: #C33}
+  #C40 = <core::String*, core::int*>{#C7:#C33, #C8:#C33, #C19:#C33, #C20:#C33)
+  #C41 = eval #C37 + #C39 + #C40
 }
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_collections_2.dart.weak.modular.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_collections_2.dart.weak.modular.expect
index 19a8cfb..6f8ad9e 100644
--- a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_collections_2.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_collections_2.dart.weak.modular.expect
@@ -2,37 +2,53 @@
 import self as self;
 import "dart:core" as core;
 
-static const field core::List<core::String> listWithUnevaluatedUnevaluatedFirst = #C6;
-static const field core::List<core::String> listWithUnevaluatedUnevaluatedMiddle = #C14;
-static const field core::Set<core::String> setWithUnevaluatedUnevaluatedFirst = #C16;
-static const field core::Set<core::String> setWithUnevaluatedUnevaluatedMiddle = #C19;
-static const field core::Map<core::String, core::int> mapWithUnevaluatedUnevaluatedFirst = #C22;
-static const field core::Map<core::String, core::int> mapWithUnevaluatedUnevaluatedMiddle = #C25;
+static const field core::List<core::String> listWithUnevaluatedUnevaluatedFirst = #C10;
+static const field core::List<core::String> listWithUnevaluatedUnevaluatedMiddle = #C22;
+static const field core::Set<core::String> setWithUnevaluatedUnevaluatedFirst = #C26;
+static const field core::Set<core::String> setWithUnevaluatedUnevaluatedMiddle = #C31;
+static const field core::Map<core::String, core::int> mapWithUnevaluatedUnevaluatedFirst = #C36;
+static const field core::Map<core::String, core::int> mapWithUnevaluatedUnevaluatedMiddle = #C41;
 
 constants  {
   #C1 = "foo"
-  #C2 = "bar"
-  #C3 = "hello"
-  #C4 = "world"
-  #C5 = <core::String*>[#C3, #C4]
-  #C6 = eval const <dynamic>[const core::String::fromEnvironment(#C1)] + const <dynamic>[const core::String::fromEnvironment(#C2)] + #C5
-  #C7 = "A"
-  #C8 = "few"
-  #C9 = "strings"
-  #C10 = <core::String*>[#C7, #C8, #C9]
-  #C11 = "and"
-  #C12 = "more"
-  #C13 = <core::String*>[#C3, #C4, #C11, #C12]
-  #C14 = eval #C10 + const <dynamic>[const core::String::fromEnvironment(#C1)] + const <dynamic>[const core::String::fromEnvironment(#C2)] + #C13
-  #C15 = <core::String*>{#C3, #C4}
-  #C16 = eval const <dynamic>{const core::String::fromEnvironment(#C1)} + #C15
-  #C17 = <core::String*>{#C7, #C8, #C9}
-  #C18 = <core::String*>{#C3, #C4, #C11, #C12}
-  #C19 = eval #C17 + const <dynamic>{const core::String::fromEnvironment(#C1)} + #C18
-  #C20 = 42
-  #C21 = <core::String*, core::int*>{#C3:#C20, #C4:#C20)
-  #C22 = eval const <dynamic, dynamic>{const core::String::fromEnvironment(#C1): #C20} + #C21
-  #C23 = <core::String*, core::int*>{#C7:#C20, #C8:#C20, #C9:#C20)
-  #C24 = <core::String*, core::int*>{#C3:#C20, #C4:#C20, #C11:#C20, #C12:#C20)
-  #C25 = eval #C23 + const <dynamic, dynamic>{const core::String::fromEnvironment(#C1): #C20} + #C24
+  #C2 = eval const core::String::fromEnvironment(#C1)
+  #C3 = eval const <dynamic>[#C2]
+  #C4 = "bar"
+  #C5 = eval const core::String::fromEnvironment(#C4)
+  #C6 = eval const <dynamic>[#C5]
+  #C7 = "hello"
+  #C8 = "world"
+  #C9 = <core::String*>[#C7, #C8]
+  #C10 = eval #C3 + #C6 + #C9
+  #C11 = "A"
+  #C12 = "few"
+  #C13 = "strings"
+  #C14 = <core::String*>[#C11, #C12, #C13]
+  #C15 = eval const core::String::fromEnvironment(#C1)
+  #C16 = eval const <dynamic>[#C15]
+  #C17 = eval const core::String::fromEnvironment(#C4)
+  #C18 = eval const <dynamic>[#C17]
+  #C19 = "and"
+  #C20 = "more"
+  #C21 = <core::String*>[#C7, #C8, #C19, #C20]
+  #C22 = eval #C14 + #C16 + #C18 + #C21
+  #C23 = eval const core::String::fromEnvironment(#C1)
+  #C24 = eval const <dynamic>{#C23}
+  #C25 = <core::String*>{#C7, #C8}
+  #C26 = eval #C24 + #C25
+  #C27 = <core::String*>{#C11, #C12, #C13}
+  #C28 = eval const core::String::fromEnvironment(#C1)
+  #C29 = eval const <dynamic>{#C28}
+  #C30 = <core::String*>{#C7, #C8, #C19, #C20}
+  #C31 = eval #C27 + #C29 + #C30
+  #C32 = eval const core::String::fromEnvironment(#C1)
+  #C33 = 42
+  #C34 = eval const <dynamic, dynamic>{#C32: #C33}
+  #C35 = <core::String*, core::int*>{#C7:#C33, #C8:#C33)
+  #C36 = eval #C34 + #C35
+  #C37 = <core::String*, core::int*>{#C11:#C33, #C12:#C33, #C13:#C33)
+  #C38 = eval const core::String::fromEnvironment(#C1)
+  #C39 = eval const <dynamic, dynamic>{#C38: #C33}
+  #C40 = <core::String*, core::int*>{#C7:#C33, #C8:#C33, #C19:#C33, #C20:#C33)
+  #C41 = eval #C37 + #C39 + #C40
 }
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_collections_2.dart.weak.transformed.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_collections_2.dart.weak.transformed.expect
index 53c1c60..8fdfafe 100644
--- a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_collections_2.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/const_collections_2.dart.weak.transformed.expect
@@ -2,39 +2,55 @@
 import self as self;
 import "dart:core" as core;
 
-static const field core::List<core::String> listWithUnevaluatedUnevaluatedFirst = #C6;
-static const field core::List<core::String> listWithUnevaluatedUnevaluatedMiddle = #C14;
-static const field core::Set<core::String> setWithUnevaluatedUnevaluatedFirst = #C16;
-static const field core::Set<core::String> setWithUnevaluatedUnevaluatedMiddle = #C19;
-static const field core::Map<core::String, core::int> mapWithUnevaluatedUnevaluatedFirst = #C22;
-static const field core::Map<core::String, core::int> mapWithUnevaluatedUnevaluatedMiddle = #C25;
+static const field core::List<core::String> listWithUnevaluatedUnevaluatedFirst = #C10;
+static const field core::List<core::String> listWithUnevaluatedUnevaluatedMiddle = #C22;
+static const field core::Set<core::String> setWithUnevaluatedUnevaluatedFirst = #C26;
+static const field core::Set<core::String> setWithUnevaluatedUnevaluatedMiddle = #C31;
+static const field core::Map<core::String, core::int> mapWithUnevaluatedUnevaluatedFirst = #C36;
+static const field core::Map<core::String, core::int> mapWithUnevaluatedUnevaluatedMiddle = #C41;
 
 constants  {
   #C1 = "foo"
-  #C2 = "bar"
-  #C3 = "hello"
-  #C4 = "world"
-  #C5 = <core::String*>[#C3, #C4]
-  #C6 = eval const <dynamic>[const core::String::fromEnvironment(#C1)] + const <dynamic>[const core::String::fromEnvironment(#C2)] + #C5
-  #C7 = "A"
-  #C8 = "few"
-  #C9 = "strings"
-  #C10 = <core::String*>[#C7, #C8, #C9]
-  #C11 = "and"
-  #C12 = "more"
-  #C13 = <core::String*>[#C3, #C4, #C11, #C12]
-  #C14 = eval #C10 + const <dynamic>[const core::String::fromEnvironment(#C1)] + const <dynamic>[const core::String::fromEnvironment(#C2)] + #C13
-  #C15 = <core::String*>{#C3, #C4}
-  #C16 = eval const <dynamic>{const core::String::fromEnvironment(#C1)} + #C15
-  #C17 = <core::String*>{#C7, #C8, #C9}
-  #C18 = <core::String*>{#C3, #C4, #C11, #C12}
-  #C19 = eval #C17 + const <dynamic>{const core::String::fromEnvironment(#C1)} + #C18
-  #C20 = 42
-  #C21 = <core::String*, core::int*>{#C3:#C20, #C4:#C20)
-  #C22 = eval const <dynamic, dynamic>{const core::String::fromEnvironment(#C1): #C20} + #C21
-  #C23 = <core::String*, core::int*>{#C7:#C20, #C8:#C20, #C9:#C20)
-  #C24 = <core::String*, core::int*>{#C3:#C20, #C4:#C20, #C11:#C20, #C12:#C20)
-  #C25 = eval #C23 + const <dynamic, dynamic>{const core::String::fromEnvironment(#C1): #C20} + #C24
+  #C2 = eval const core::String::fromEnvironment(#C1)
+  #C3 = eval const <dynamic>[#C2]
+  #C4 = "bar"
+  #C5 = eval const core::String::fromEnvironment(#C4)
+  #C6 = eval const <dynamic>[#C5]
+  #C7 = "hello"
+  #C8 = "world"
+  #C9 = <core::String*>[#C7, #C8]
+  #C10 = eval #C3 + #C6 + #C9
+  #C11 = "A"
+  #C12 = "few"
+  #C13 = "strings"
+  #C14 = <core::String*>[#C11, #C12, #C13]
+  #C15 = eval const core::String::fromEnvironment(#C1)
+  #C16 = eval const <dynamic>[#C15]
+  #C17 = eval const core::String::fromEnvironment(#C4)
+  #C18 = eval const <dynamic>[#C17]
+  #C19 = "and"
+  #C20 = "more"
+  #C21 = <core::String*>[#C7, #C8, #C19, #C20]
+  #C22 = eval #C14 + #C16 + #C18 + #C21
+  #C23 = eval const core::String::fromEnvironment(#C1)
+  #C24 = eval const <dynamic>{#C23}
+  #C25 = <core::String*>{#C7, #C8}
+  #C26 = eval #C24 + #C25
+  #C27 = <core::String*>{#C11, #C12, #C13}
+  #C28 = eval const core::String::fromEnvironment(#C1)
+  #C29 = eval const <dynamic>{#C28}
+  #C30 = <core::String*>{#C7, #C8, #C19, #C20}
+  #C31 = eval #C27 + #C29 + #C30
+  #C32 = eval const core::String::fromEnvironment(#C1)
+  #C33 = 42
+  #C34 = eval const <dynamic, dynamic>{#C32: #C33}
+  #C35 = <core::String*, core::int*>{#C7:#C33, #C8:#C33)
+  #C36 = eval #C34 + #C35
+  #C37 = <core::String*, core::int*>{#C11:#C33, #C12:#C33, #C13:#C33)
+  #C38 = eval const core::String::fromEnvironment(#C1)
+  #C39 = eval const <dynamic, dynamic>{#C38: #C33}
+  #C40 = <core::String*, core::int*>{#C7:#C33, #C8:#C33, #C19:#C33, #C20:#C33)
+  #C41 = eval #C37 + #C39 + #C40
 }
 
 Extra constant evaluation status:
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245.dart.weak.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245.dart.weak.expect
index 7218dfd..2bbe5db 100644
--- a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245.dart.weak.expect
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245.dart.weak.expect
@@ -11,15 +11,20 @@
 static method bar<T extends core::Object? = dynamic>(core::String o) → self::bar::T%
   return o as{ForNonNullableByDefault} self::bar::T%;
 static method main() → void {
-  const self::Foo<core::int> myValue = #C5;
+  const self::Foo<core::int> myValue = #C10;
 }
 
 constants  {
   #C1 = static-tearoff self::bar
   #C2 = "baz"
-  #C3 = static-tearoff core::int::parse
-  #C4 = null
-  #C5 = eval self::Foo<core::int*>{_foo:(const core::bool::fromEnvironment(#C2) ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C3 : #C4) == null ?{(core::String) → core::int*} #C1<core::int*> : const core::bool::fromEnvironment(#C2) ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C3 : #C4}
+  #C3 = eval const core::bool::fromEnvironment(#C2)
+  #C4 = static-tearoff core::int::parse
+  #C5 = null
+  #C6 = eval #C3 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C7 = eval #C6 == null
+  #C8 = eval #C1<core::int*>
+  #C9 = eval #C7 ?{(core::String) → core::int*} #C8 : #C6
+  #C10 = eval self::Foo<core::int*>{_foo:#C9}
 }
 
 
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245.dart.weak.modular.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245.dart.weak.modular.expect
index 7218dfd..2bbe5db 100644
--- a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245.dart.weak.modular.expect
@@ -11,15 +11,20 @@
 static method bar<T extends core::Object? = dynamic>(core::String o) → self::bar::T%
   return o as{ForNonNullableByDefault} self::bar::T%;
 static method main() → void {
-  const self::Foo<core::int> myValue = #C5;
+  const self::Foo<core::int> myValue = #C10;
 }
 
 constants  {
   #C1 = static-tearoff self::bar
   #C2 = "baz"
-  #C3 = static-tearoff core::int::parse
-  #C4 = null
-  #C5 = eval self::Foo<core::int*>{_foo:(const core::bool::fromEnvironment(#C2) ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C3 : #C4) == null ?{(core::String) → core::int*} #C1<core::int*> : const core::bool::fromEnvironment(#C2) ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C3 : #C4}
+  #C3 = eval const core::bool::fromEnvironment(#C2)
+  #C4 = static-tearoff core::int::parse
+  #C5 = null
+  #C6 = eval #C3 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C7 = eval #C6 == null
+  #C8 = eval #C1<core::int*>
+  #C9 = eval #C7 ?{(core::String) → core::int*} #C8 : #C6
+  #C10 = eval self::Foo<core::int*>{_foo:#C9}
 }
 
 
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245.dart.weak.transformed.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245.dart.weak.transformed.expect
index 5a4f3bf..49f00a5 100644
--- a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245.dart.weak.transformed.expect
@@ -11,15 +11,20 @@
 static method bar<T extends core::Object? = dynamic>(core::String o) → self::bar::T%
   return o as{ForNonNullableByDefault} self::bar::T%;
 static method main() → void {
-  const self::Foo<core::int> myValue = #C5;
+  const self::Foo<core::int> myValue = #C10;
 }
 
 constants  {
   #C1 = static-tearoff self::bar
   #C2 = "baz"
-  #C3 = static-tearoff core::int::parse
-  #C4 = null
-  #C5 = eval self::Foo<core::int*>{_foo:(const core::bool::fromEnvironment(#C2) ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C3 : #C4) == null ?{(core::String) → core::int*} #C1<core::int*> : const core::bool::fromEnvironment(#C2) ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C3 : #C4}
+  #C3 = eval const core::bool::fromEnvironment(#C2)
+  #C4 = static-tearoff core::int::parse
+  #C5 = null
+  #C6 = eval #C3 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C7 = eval #C6 == null
+  #C8 = eval #C1<core::int*>
+  #C9 = eval #C7 ?{(core::String) → core::int*} #C8 : #C6
+  #C10 = eval self::Foo<core::int*>{_foo:#C9}
 }
 
 Extra constant evaluation status:
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245_variation_is.dart b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245_variation_is.dart
new file mode 100644
index 0000000..b0fb40c33
--- /dev/null
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245_variation_is.dart
@@ -0,0 +1,14 @@
+// Copyright (c) 2022, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+class Foo<T> {
+  final List<int> foo;
+  const Foo(List x) : foo = x is List<T> ? const [1] : const [2];
+}
+
+main() {
+  const Foo<int> foo = const Foo<int>(bool.fromEnvironment("foo") ? [1] : [2]);
+  print(foo);
+  print(foo);
+}
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245_variation_is.dart.textual_outline.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245_variation_is.dart.textual_outline.expect
new file mode 100644
index 0000000..5b687d0
--- /dev/null
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245_variation_is.dart.textual_outline.expect
@@ -0,0 +1,6 @@
+class Foo<T> {
+  final List<int> foo;
+  const Foo(List x) : foo = x is List<T> ? const [1] : const [2];
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245_variation_is.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245_variation_is.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..40cbc00
--- /dev/null
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245_variation_is.dart.textual_outline_modelled.expect
@@ -0,0 +1,6 @@
+class Foo<T> {
+  const Foo(List x) : foo = x is List<T> ? const [1] : const [2];
+  final List<int> foo;
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245_variation_is.dart.weak.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245_variation_is.dart.weak.expect
new file mode 100644
index 0000000..94f0c4f
--- /dev/null
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245_variation_is.dart.weak.expect
@@ -0,0 +1,38 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class Foo<T extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/  {
+  final field core::List<core::int> foo;
+  const constructor •(core::List<dynamic> x) → self::Foo<self::Foo::T%>
+    : self::Foo::foo = x is{ForNonNullableByDefault} core::List<self::Foo::T%> ?{core::List<core::int>} #C2 : #C4, super core::Object::•()
+    ;
+}
+static method main() → dynamic {
+  const self::Foo<core::int> foo = #C14;
+  core::print(#C14);
+  core::print(#C14);
+}
+
+constants  {
+  #C1 = 1
+  #C2 = <core::int*>[#C1]
+  #C3 = 2
+  #C4 = <core::int*>[#C3]
+  #C5 = "foo"
+  #C6 = eval const core::bool::fromEnvironment(#C5)
+  #C7 = eval const <dynamic>[#C1]
+  #C8 = eval #C7
+  #C9 = eval const <dynamic>[#C3]
+  #C10 = eval #C9
+  #C11 = eval #C6 ?{core::List<dynamic>} #C8 : #C10
+  #C12 = eval #C11 is{ForNonNullableByDefault} core::List<core::int*>
+  #C13 = eval #C12 ?{core::List<core::int>} #C2 : #C4
+  #C14 = eval self::Foo<core::int*>{foo:#C13}
+}
+
+
+Constructor coverage from constants:
+org-dartlang-testcase:///issue_49245_variation_is.dart:
+- Foo. (from org-dartlang-testcase:///issue_49245_variation_is.dart:7:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245_variation_is.dart.weak.modular.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245_variation_is.dart.weak.modular.expect
new file mode 100644
index 0000000..94f0c4f
--- /dev/null
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245_variation_is.dart.weak.modular.expect
@@ -0,0 +1,38 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class Foo<T extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/  {
+  final field core::List<core::int> foo;
+  const constructor •(core::List<dynamic> x) → self::Foo<self::Foo::T%>
+    : self::Foo::foo = x is{ForNonNullableByDefault} core::List<self::Foo::T%> ?{core::List<core::int>} #C2 : #C4, super core::Object::•()
+    ;
+}
+static method main() → dynamic {
+  const self::Foo<core::int> foo = #C14;
+  core::print(#C14);
+  core::print(#C14);
+}
+
+constants  {
+  #C1 = 1
+  #C2 = <core::int*>[#C1]
+  #C3 = 2
+  #C4 = <core::int*>[#C3]
+  #C5 = "foo"
+  #C6 = eval const core::bool::fromEnvironment(#C5)
+  #C7 = eval const <dynamic>[#C1]
+  #C8 = eval #C7
+  #C9 = eval const <dynamic>[#C3]
+  #C10 = eval #C9
+  #C11 = eval #C6 ?{core::List<dynamic>} #C8 : #C10
+  #C12 = eval #C11 is{ForNonNullableByDefault} core::List<core::int*>
+  #C13 = eval #C12 ?{core::List<core::int>} #C2 : #C4
+  #C14 = eval self::Foo<core::int*>{foo:#C13}
+}
+
+
+Constructor coverage from constants:
+org-dartlang-testcase:///issue_49245_variation_is.dart:
+- Foo. (from org-dartlang-testcase:///issue_49245_variation_is.dart:7:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245_variation_is.dart.weak.outline.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245_variation_is.dart.weak.outline.expect
new file mode 100644
index 0000000..dc10831
--- /dev/null
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245_variation_is.dart.weak.outline.expect
@@ -0,0 +1,18 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class Foo<T extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/  {
+  final field core::List<core::int> foo;
+  const constructor •(core::List<dynamic> x) → self::Foo<self::Foo::T%>
+    : self::Foo::foo = x is{ForNonNullableByDefault} core::List<self::Foo::T%> ?{core::List<core::int>} const <core::int>[1] : const <core::int>[2], super core::Object::•()
+    ;
+}
+static method main() → dynamic
+  ;
+
+
+Extra constant evaluation status:
+Evaluated: ListLiteral @ org-dartlang-testcase:///issue_49245_variation_is.dart:7:44 -> ListConstant(const <int*>[1])
+Evaluated: ListLiteral @ org-dartlang-testcase:///issue_49245_variation_is.dart:7:56 -> ListConstant(const <int*>[2])
+Extra constant evaluation: evaluated: 5, effectively constant: 2
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245_variation_is.dart.weak.transformed.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245_variation_is.dart.weak.transformed.expect
new file mode 100644
index 0000000..35c8cc9
--- /dev/null
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245_variation_is.dart.weak.transformed.expect
@@ -0,0 +1,44 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class Foo<T extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/  {
+  final field core::List<core::int> foo;
+  const constructor •(core::List<dynamic> x) → self::Foo<self::Foo::T%>
+    : self::Foo::foo = x is{ForNonNullableByDefault} core::List<self::Foo::T%> ?{core::List<core::int>} #C2 : #C4, super core::Object::•()
+    ;
+}
+static method main() → dynamic {
+  const self::Foo<core::int> foo = #C14;
+  core::print(#C14);
+  core::print(#C14);
+}
+
+constants  {
+  #C1 = 1
+  #C2 = <core::int*>[#C1]
+  #C3 = 2
+  #C4 = <core::int*>[#C3]
+  #C5 = "foo"
+  #C6 = eval const core::bool::fromEnvironment(#C5)
+  #C7 = eval const <dynamic>[#C1]
+  #C8 = eval #C7
+  #C9 = eval const <dynamic>[#C3]
+  #C10 = eval #C9
+  #C11 = eval #C6 ?{core::List<dynamic>} #C8 : #C10
+  #C12 = eval #C11 is{ForNonNullableByDefault} core::List<core::int*>
+  #C13 = eval #C12 ?{core::List<core::int>} #C2 : #C4
+  #C14 = eval self::Foo<core::int*>{foo:#C13}
+}
+
+Extra constant evaluation status:
+Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///issue_49245_variation_is.dart:11:30 -> InstanceConstant(const Foo<int*>{Foo.foo: const <int*>[2]})
+Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///issue_49245_variation_is.dart:12:9 -> InstanceConstant(const Foo<int*>{Foo.foo: const <int*>[2]})
+Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///issue_49245_variation_is.dart:13:9 -> InstanceConstant(const Foo<int*>{Foo.foo: const <int*>[2]})
+Extra constant evaluation: evaluated: 8, effectively constant: 3
+
+
+Constructor coverage from constants:
+org-dartlang-testcase:///issue_49245_variation_is.dart:
+- Foo. (from org-dartlang-testcase:///issue_49245_variation_is.dart:7:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245_variation_potential_exponential_blowup.dart b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245_variation_potential_exponential_blowup.dart
new file mode 100644
index 0000000..1a9d689
--- /dev/null
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245_variation_potential_exponential_blowup.dart
@@ -0,0 +1,93 @@
+// Copyright (c) 2022, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+class Foo {
+  const Foo(
+    int Function(String)? a1,
+    int Function(String)? a2,
+    int Function(String)? a3,
+    int Function(String)? a4,
+    int Function(String)? a5,
+    int Function(String)? a6,
+    int Function(String)? a7,
+    int Function(String)? a8,
+    int Function(String)? a9,
+    int Function(String)? a10,
+    int Function(String)? a11,
+    int Function(String)? a12,
+    int Function(String)? a13,
+    int Function(String)? a14,
+    int Function(String)? a15,
+    int Function(String)? a16,
+    int Function(String)? a17,
+    int Function(String)? a18,
+    int Function(String)? a19,
+    int Function(String)? a20,
+    int Function(String)? a21,
+    int Function(String)? a22,
+    int Function(String)? a23,
+    int Function(String)? a24,
+  ) : _foo = a1 ??
+            a2 ??
+            a3 ??
+            a4 ??
+            a5 ??
+            a6 ??
+            a7 ??
+            a8 ??
+            a9 ??
+            a10 ??
+            a11 ??
+            a12 ??
+            a13 ??
+            a14 ??
+            a15 ??
+            a16 ??
+            a17 ??
+            a18 ??
+            a19 ??
+            a20 ??
+            a21 ??
+            a22 ??
+            a23 ??
+            a24 ??
+            bar;
+  final int Function(String) _foo;
+}
+
+int bar(String o) => int.parse(o);
+
+void main() {
+  const Foo myValue = Foo(
+    bool.fromEnvironment("baz") ? int.parse : null,
+    bool.fromEnvironment("baz") ? int.parse : null,
+    bool.fromEnvironment("baz") ? int.parse : null,
+    bool.fromEnvironment("baz") ? int.parse : null,
+    bool.fromEnvironment("baz") ? int.parse : null,
+    bool.fromEnvironment("baz") ? int.parse : null,
+    bool.fromEnvironment("baz") ? int.parse : null,
+    bool.fromEnvironment("baz") ? int.parse : null,
+    bool.fromEnvironment("baz") ? int.parse : null,
+    bool.fromEnvironment("baz") ? int.parse : null,
+    bool.fromEnvironment("baz") ? int.parse : null,
+    bool.fromEnvironment("baz") ? int.parse : null,
+    bool.fromEnvironment("baz") ? int.parse : null,
+    bool.fromEnvironment("baz") ? int.parse : null,
+    bool.fromEnvironment("baz") ? int.parse : null,
+    bool.fromEnvironment("baz") ? int.parse : null,
+    bool.fromEnvironment("baz") ? int.parse : null,
+    bool.fromEnvironment("baz") ? int.parse : null,
+    bool.fromEnvironment("baz") ? int.parse : null,
+    bool.fromEnvironment("baz") ? int.parse : null,
+    bool.fromEnvironment("baz") ? int.parse : null,
+    bool.fromEnvironment("baz") ? int.parse : null,
+    bool.fromEnvironment("baz") ? int.parse : null,
+    bool.fromEnvironment("baz") ? int.parse : null,
+  );
+
+  print(myValue);
+  print(myValue);
+  print(myValue);
+  print(myValue);
+}
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245_variation_potential_exponential_blowup.dart.textual_outline.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245_variation_potential_exponential_blowup.dart.textual_outline.expect
new file mode 100644
index 0000000..5f28e20
--- /dev/null
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245_variation_potential_exponential_blowup.dart.textual_outline.expect
@@ -0,0 +1,56 @@
+class Foo {
+  const Foo(
+    int Function(String)? a1,
+    int Function(String)? a2,
+    int Function(String)? a3,
+    int Function(String)? a4,
+    int Function(String)? a5,
+    int Function(String)? a6,
+    int Function(String)? a7,
+    int Function(String)? a8,
+    int Function(String)? a9,
+    int Function(String)? a10,
+    int Function(String)? a11,
+    int Function(String)? a12,
+    int Function(String)? a13,
+    int Function(String)? a14,
+    int Function(String)? a15,
+    int Function(String)? a16,
+    int Function(String)? a17,
+    int Function(String)? a18,
+    int Function(String)? a19,
+    int Function(String)? a20,
+    int Function(String)? a21,
+    int Function(String)? a22,
+    int Function(String)? a23,
+    int Function(String)? a24,
+  ) : _foo = a1 ??
+            a2 ??
+            a3 ??
+            a4 ??
+            a5 ??
+            a6 ??
+            a7 ??
+            a8 ??
+            a9 ??
+            a10 ??
+            a11 ??
+            a12 ??
+            a13 ??
+            a14 ??
+            a15 ??
+            a16 ??
+            a17 ??
+            a18 ??
+            a19 ??
+            a20 ??
+            a21 ??
+            a22 ??
+            a23 ??
+            a24 ??
+            bar;
+  final int Function(String) _foo;
+}
+
+int bar(String o) => int.parse(o);
+void main() {}
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245_variation_potential_exponential_blowup.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245_variation_potential_exponential_blowup.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..5f28e20
--- /dev/null
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245_variation_potential_exponential_blowup.dart.textual_outline_modelled.expect
@@ -0,0 +1,56 @@
+class Foo {
+  const Foo(
+    int Function(String)? a1,
+    int Function(String)? a2,
+    int Function(String)? a3,
+    int Function(String)? a4,
+    int Function(String)? a5,
+    int Function(String)? a6,
+    int Function(String)? a7,
+    int Function(String)? a8,
+    int Function(String)? a9,
+    int Function(String)? a10,
+    int Function(String)? a11,
+    int Function(String)? a12,
+    int Function(String)? a13,
+    int Function(String)? a14,
+    int Function(String)? a15,
+    int Function(String)? a16,
+    int Function(String)? a17,
+    int Function(String)? a18,
+    int Function(String)? a19,
+    int Function(String)? a20,
+    int Function(String)? a21,
+    int Function(String)? a22,
+    int Function(String)? a23,
+    int Function(String)? a24,
+  ) : _foo = a1 ??
+            a2 ??
+            a3 ??
+            a4 ??
+            a5 ??
+            a6 ??
+            a7 ??
+            a8 ??
+            a9 ??
+            a10 ??
+            a11 ??
+            a12 ??
+            a13 ??
+            a14 ??
+            a15 ??
+            a16 ??
+            a17 ??
+            a18 ??
+            a19 ??
+            a20 ??
+            a21 ??
+            a22 ??
+            a23 ??
+            a24 ??
+            bar;
+  final int Function(String) _foo;
+}
+
+int bar(String o) => int.parse(o);
+void main() {}
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245_variation_potential_exponential_blowup.dart.weak.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245_variation_potential_exponential_blowup.dart.weak.expect
new file mode 100644
index 0000000..33444f1
--- /dev/null
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245_variation_potential_exponential_blowup.dart.weak.expect
@@ -0,0 +1,129 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class Foo extends core::Object /*hasConstConstructor*/  {
+  final field (core::String) → core::int _foo;
+  const constructor •((core::String) →? core::int a1, (core::String) →? core::int a2, (core::String) →? core::int a3, (core::String) →? core::int a4, (core::String) →? core::int a5, (core::String) →? core::int a6, (core::String) →? core::int a7, (core::String) →? core::int a8, (core::String) →? core::int a9, (core::String) →? core::int a10, (core::String) →? core::int a11, (core::String) →? core::int a12, (core::String) →? core::int a13, (core::String) →? core::int a14, (core::String) →? core::int a15, (core::String) →? core::int a16, (core::String) →? core::int a17, (core::String) →? core::int a18, (core::String) →? core::int a19, (core::String) →? core::int a20, (core::String) →? core::int a21, (core::String) →? core::int a22, (core::String) →? core::int a23, (core::String) →? core::int a24) → self::Foo
+    : self::Foo::_foo = let final (core::String) →? core::int #t1 = let final (core::String) →? core::int #t2 = let final (core::String) →? core::int #t3 = let final (core::String) →? core::int #t4 = let final (core::String) →? core::int #t5 = let final (core::String) →? core::int #t6 = let final (core::String) →? core::int #t7 = let final (core::String) →? core::int #t8 = let final (core::String) →? core::int #t9 = let final (core::String) →? core::int #t10 = let final (core::String) →? core::int #t11 = let final (core::String) →? core::int #t12 = let final (core::String) →? core::int #t13 = let final (core::String) →? core::int #t14 = let final (core::String) →? core::int #t15 = let final (core::String) →? core::int #t16 = let final (core::String) →? core::int #t17 = let final (core::String) →? core::int #t18 = let final (core::String) →? core::int #t19 = let final (core::String) →? core::int #t20 = let final (core::String) →? core::int #t21 = let final (core::String) →? core::int #t22 = let final (core::String) →? core::int #t23 = let final (core::String) →? core::int #t24 = a1 in #t24 == null ?{(core::String) →? core::int} a2 : #t24{(core::String) → core::int} in #t23 == null ?{(core::String) →? core::int} a3 : #t23{(core::String) → core::int} in #t22 == null ?{(core::String) →? core::int} a4 : #t22{(core::String) → core::int} in #t21 == null ?{(core::String) →? core::int} a5 : #t21{(core::String) → core::int} in #t20 == null ?{(core::String) →? core::int} a6 : #t20{(core::String) → core::int} in #t19 == null ?{(core::String) →? core::int} a7 : #t19{(core::String) → core::int} in #t18 == null ?{(core::String) →? core::int} a8 : #t18{(core::String) → core::int} in #t17 == null ?{(core::String) →? core::int} a9 : #t17{(core::String) → core::int} in #t16 == null ?{(core::String) →? core::int} a10 : #t16{(core::String) → core::int} in #t15 == null ?{(core::String) →? core::int} a11 : #t15{(core::String) → core::int} in #t14 == null ?{(core::String) →? core::int} a12 : #t14{(core::String) → core::int} in #t13 == null ?{(core::String) →? core::int} a13 : #t13{(core::String) → core::int} in #t12 == null ?{(core::String) →? core::int} a14 : #t12{(core::String) → core::int} in #t11 == null ?{(core::String) →? core::int} a15 : #t11{(core::String) → core::int} in #t10 == null ?{(core::String) →? core::int} a16 : #t10{(core::String) → core::int} in #t9 == null ?{(core::String) →? core::int} a17 : #t9{(core::String) → core::int} in #t8 == null ?{(core::String) →? core::int} a18 : #t8{(core::String) → core::int} in #t7 == null ?{(core::String) →? core::int} a19 : #t7{(core::String) → core::int} in #t6 == null ?{(core::String) →? core::int} a20 : #t6{(core::String) → core::int} in #t5 == null ?{(core::String) →? core::int} a21 : #t5{(core::String) → core::int} in #t4 == null ?{(core::String) →? core::int} a22 : #t4{(core::String) → core::int} in #t3 == null ?{(core::String) →? core::int} a23 : #t3{(core::String) → core::int} in #t2 == null ?{(core::String) →? core::int} a24 : #t2{(core::String) → core::int} in #t1 == null ?{(core::String) → core::int} #C1 : #t1{(core::String) → core::int}, super core::Object::•()
+    ;
+}
+static method bar(core::String o) → core::int
+  return core::int::parse(o);
+static method main() → void {
+  const self::Foo myValue = #C101;
+  core::print(#C101);
+  core::print(#C101);
+  core::print(#C101);
+  core::print(#C101);
+}
+
+constants  {
+  #C1 = static-tearoff self::bar
+  #C2 = "baz"
+  #C3 = eval const core::bool::fromEnvironment(#C2)
+  #C4 = static-tearoff core::int::parse
+  #C5 = null
+  #C6 = eval #C3 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C7 = eval #C6 == null
+  #C8 = eval const core::bool::fromEnvironment(#C2)
+  #C9 = eval #C8 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C10 = eval #C7 ?{(core::String) →? core::int} #C9 : #C6
+  #C11 = eval #C10 == null
+  #C12 = eval const core::bool::fromEnvironment(#C2)
+  #C13 = eval #C12 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C14 = eval #C11 ?{(core::String) →? core::int} #C13 : #C10
+  #C15 = eval #C14 == null
+  #C16 = eval const core::bool::fromEnvironment(#C2)
+  #C17 = eval #C16 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C18 = eval #C15 ?{(core::String) →? core::int} #C17 : #C14
+  #C19 = eval #C18 == null
+  #C20 = eval const core::bool::fromEnvironment(#C2)
+  #C21 = eval #C20 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C22 = eval #C19 ?{(core::String) →? core::int} #C21 : #C18
+  #C23 = eval #C22 == null
+  #C24 = eval const core::bool::fromEnvironment(#C2)
+  #C25 = eval #C24 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C26 = eval #C23 ?{(core::String) →? core::int} #C25 : #C22
+  #C27 = eval #C26 == null
+  #C28 = eval const core::bool::fromEnvironment(#C2)
+  #C29 = eval #C28 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C30 = eval #C27 ?{(core::String) →? core::int} #C29 : #C26
+  #C31 = eval #C30 == null
+  #C32 = eval const core::bool::fromEnvironment(#C2)
+  #C33 = eval #C32 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C34 = eval #C31 ?{(core::String) →? core::int} #C33 : #C30
+  #C35 = eval #C34 == null
+  #C36 = eval const core::bool::fromEnvironment(#C2)
+  #C37 = eval #C36 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C38 = eval #C35 ?{(core::String) →? core::int} #C37 : #C34
+  #C39 = eval #C38 == null
+  #C40 = eval const core::bool::fromEnvironment(#C2)
+  #C41 = eval #C40 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C42 = eval #C39 ?{(core::String) →? core::int} #C41 : #C38
+  #C43 = eval #C42 == null
+  #C44 = eval const core::bool::fromEnvironment(#C2)
+  #C45 = eval #C44 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C46 = eval #C43 ?{(core::String) →? core::int} #C45 : #C42
+  #C47 = eval #C46 == null
+  #C48 = eval const core::bool::fromEnvironment(#C2)
+  #C49 = eval #C48 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C50 = eval #C47 ?{(core::String) →? core::int} #C49 : #C46
+  #C51 = eval #C50 == null
+  #C52 = eval const core::bool::fromEnvironment(#C2)
+  #C53 = eval #C52 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C54 = eval #C51 ?{(core::String) →? core::int} #C53 : #C50
+  #C55 = eval #C54 == null
+  #C56 = eval const core::bool::fromEnvironment(#C2)
+  #C57 = eval #C56 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C58 = eval #C55 ?{(core::String) →? core::int} #C57 : #C54
+  #C59 = eval #C58 == null
+  #C60 = eval const core::bool::fromEnvironment(#C2)
+  #C61 = eval #C60 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C62 = eval #C59 ?{(core::String) →? core::int} #C61 : #C58
+  #C63 = eval #C62 == null
+  #C64 = eval const core::bool::fromEnvironment(#C2)
+  #C65 = eval #C64 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C66 = eval #C63 ?{(core::String) →? core::int} #C65 : #C62
+  #C67 = eval #C66 == null
+  #C68 = eval const core::bool::fromEnvironment(#C2)
+  #C69 = eval #C68 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C70 = eval #C67 ?{(core::String) →? core::int} #C69 : #C66
+  #C71 = eval #C70 == null
+  #C72 = eval const core::bool::fromEnvironment(#C2)
+  #C73 = eval #C72 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C74 = eval #C71 ?{(core::String) →? core::int} #C73 : #C70
+  #C75 = eval #C74 == null
+  #C76 = eval const core::bool::fromEnvironment(#C2)
+  #C77 = eval #C76 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C78 = eval #C75 ?{(core::String) →? core::int} #C77 : #C74
+  #C79 = eval #C78 == null
+  #C80 = eval const core::bool::fromEnvironment(#C2)
+  #C81 = eval #C80 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C82 = eval #C79 ?{(core::String) →? core::int} #C81 : #C78
+  #C83 = eval #C82 == null
+  #C84 = eval const core::bool::fromEnvironment(#C2)
+  #C85 = eval #C84 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C86 = eval #C83 ?{(core::String) →? core::int} #C85 : #C82
+  #C87 = eval #C86 == null
+  #C88 = eval const core::bool::fromEnvironment(#C2)
+  #C89 = eval #C88 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C90 = eval #C87 ?{(core::String) →? core::int} #C89 : #C86
+  #C91 = eval #C90 == null
+  #C92 = eval const core::bool::fromEnvironment(#C2)
+  #C93 = eval #C92 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C94 = eval #C91 ?{(core::String) →? core::int} #C93 : #C90
+  #C95 = eval #C94 == null
+  #C96 = eval const core::bool::fromEnvironment(#C2)
+  #C97 = eval #C96 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C98 = eval #C95 ?{(core::String) →? core::int} #C97 : #C94
+  #C99 = eval #C98 == null
+  #C100 = eval #C99 ?{(core::String) → core::int} #C1 : #C98
+  #C101 = eval self::Foo{_foo:#C100}
+}
+
+
+Constructor coverage from constants:
+org-dartlang-testcase:///issue_49245_variation_potential_exponential_blowup.dart:
+- Foo. (from org-dartlang-testcase:///issue_49245_variation_potential_exponential_blowup.dart:6:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245_variation_potential_exponential_blowup.dart.weak.modular.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245_variation_potential_exponential_blowup.dart.weak.modular.expect
new file mode 100644
index 0000000..33444f1
--- /dev/null
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245_variation_potential_exponential_blowup.dart.weak.modular.expect
@@ -0,0 +1,129 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class Foo extends core::Object /*hasConstConstructor*/  {
+  final field (core::String) → core::int _foo;
+  const constructor •((core::String) →? core::int a1, (core::String) →? core::int a2, (core::String) →? core::int a3, (core::String) →? core::int a4, (core::String) →? core::int a5, (core::String) →? core::int a6, (core::String) →? core::int a7, (core::String) →? core::int a8, (core::String) →? core::int a9, (core::String) →? core::int a10, (core::String) →? core::int a11, (core::String) →? core::int a12, (core::String) →? core::int a13, (core::String) →? core::int a14, (core::String) →? core::int a15, (core::String) →? core::int a16, (core::String) →? core::int a17, (core::String) →? core::int a18, (core::String) →? core::int a19, (core::String) →? core::int a20, (core::String) →? core::int a21, (core::String) →? core::int a22, (core::String) →? core::int a23, (core::String) →? core::int a24) → self::Foo
+    : self::Foo::_foo = let final (core::String) →? core::int #t1 = let final (core::String) →? core::int #t2 = let final (core::String) →? core::int #t3 = let final (core::String) →? core::int #t4 = let final (core::String) →? core::int #t5 = let final (core::String) →? core::int #t6 = let final (core::String) →? core::int #t7 = let final (core::String) →? core::int #t8 = let final (core::String) →? core::int #t9 = let final (core::String) →? core::int #t10 = let final (core::String) →? core::int #t11 = let final (core::String) →? core::int #t12 = let final (core::String) →? core::int #t13 = let final (core::String) →? core::int #t14 = let final (core::String) →? core::int #t15 = let final (core::String) →? core::int #t16 = let final (core::String) →? core::int #t17 = let final (core::String) →? core::int #t18 = let final (core::String) →? core::int #t19 = let final (core::String) →? core::int #t20 = let final (core::String) →? core::int #t21 = let final (core::String) →? core::int #t22 = let final (core::String) →? core::int #t23 = let final (core::String) →? core::int #t24 = a1 in #t24 == null ?{(core::String) →? core::int} a2 : #t24{(core::String) → core::int} in #t23 == null ?{(core::String) →? core::int} a3 : #t23{(core::String) → core::int} in #t22 == null ?{(core::String) →? core::int} a4 : #t22{(core::String) → core::int} in #t21 == null ?{(core::String) →? core::int} a5 : #t21{(core::String) → core::int} in #t20 == null ?{(core::String) →? core::int} a6 : #t20{(core::String) → core::int} in #t19 == null ?{(core::String) →? core::int} a7 : #t19{(core::String) → core::int} in #t18 == null ?{(core::String) →? core::int} a8 : #t18{(core::String) → core::int} in #t17 == null ?{(core::String) →? core::int} a9 : #t17{(core::String) → core::int} in #t16 == null ?{(core::String) →? core::int} a10 : #t16{(core::String) → core::int} in #t15 == null ?{(core::String) →? core::int} a11 : #t15{(core::String) → core::int} in #t14 == null ?{(core::String) →? core::int} a12 : #t14{(core::String) → core::int} in #t13 == null ?{(core::String) →? core::int} a13 : #t13{(core::String) → core::int} in #t12 == null ?{(core::String) →? core::int} a14 : #t12{(core::String) → core::int} in #t11 == null ?{(core::String) →? core::int} a15 : #t11{(core::String) → core::int} in #t10 == null ?{(core::String) →? core::int} a16 : #t10{(core::String) → core::int} in #t9 == null ?{(core::String) →? core::int} a17 : #t9{(core::String) → core::int} in #t8 == null ?{(core::String) →? core::int} a18 : #t8{(core::String) → core::int} in #t7 == null ?{(core::String) →? core::int} a19 : #t7{(core::String) → core::int} in #t6 == null ?{(core::String) →? core::int} a20 : #t6{(core::String) → core::int} in #t5 == null ?{(core::String) →? core::int} a21 : #t5{(core::String) → core::int} in #t4 == null ?{(core::String) →? core::int} a22 : #t4{(core::String) → core::int} in #t3 == null ?{(core::String) →? core::int} a23 : #t3{(core::String) → core::int} in #t2 == null ?{(core::String) →? core::int} a24 : #t2{(core::String) → core::int} in #t1 == null ?{(core::String) → core::int} #C1 : #t1{(core::String) → core::int}, super core::Object::•()
+    ;
+}
+static method bar(core::String o) → core::int
+  return core::int::parse(o);
+static method main() → void {
+  const self::Foo myValue = #C101;
+  core::print(#C101);
+  core::print(#C101);
+  core::print(#C101);
+  core::print(#C101);
+}
+
+constants  {
+  #C1 = static-tearoff self::bar
+  #C2 = "baz"
+  #C3 = eval const core::bool::fromEnvironment(#C2)
+  #C4 = static-tearoff core::int::parse
+  #C5 = null
+  #C6 = eval #C3 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C7 = eval #C6 == null
+  #C8 = eval const core::bool::fromEnvironment(#C2)
+  #C9 = eval #C8 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C10 = eval #C7 ?{(core::String) →? core::int} #C9 : #C6
+  #C11 = eval #C10 == null
+  #C12 = eval const core::bool::fromEnvironment(#C2)
+  #C13 = eval #C12 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C14 = eval #C11 ?{(core::String) →? core::int} #C13 : #C10
+  #C15 = eval #C14 == null
+  #C16 = eval const core::bool::fromEnvironment(#C2)
+  #C17 = eval #C16 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C18 = eval #C15 ?{(core::String) →? core::int} #C17 : #C14
+  #C19 = eval #C18 == null
+  #C20 = eval const core::bool::fromEnvironment(#C2)
+  #C21 = eval #C20 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C22 = eval #C19 ?{(core::String) →? core::int} #C21 : #C18
+  #C23 = eval #C22 == null
+  #C24 = eval const core::bool::fromEnvironment(#C2)
+  #C25 = eval #C24 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C26 = eval #C23 ?{(core::String) →? core::int} #C25 : #C22
+  #C27 = eval #C26 == null
+  #C28 = eval const core::bool::fromEnvironment(#C2)
+  #C29 = eval #C28 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C30 = eval #C27 ?{(core::String) →? core::int} #C29 : #C26
+  #C31 = eval #C30 == null
+  #C32 = eval const core::bool::fromEnvironment(#C2)
+  #C33 = eval #C32 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C34 = eval #C31 ?{(core::String) →? core::int} #C33 : #C30
+  #C35 = eval #C34 == null
+  #C36 = eval const core::bool::fromEnvironment(#C2)
+  #C37 = eval #C36 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C38 = eval #C35 ?{(core::String) →? core::int} #C37 : #C34
+  #C39 = eval #C38 == null
+  #C40 = eval const core::bool::fromEnvironment(#C2)
+  #C41 = eval #C40 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C42 = eval #C39 ?{(core::String) →? core::int} #C41 : #C38
+  #C43 = eval #C42 == null
+  #C44 = eval const core::bool::fromEnvironment(#C2)
+  #C45 = eval #C44 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C46 = eval #C43 ?{(core::String) →? core::int} #C45 : #C42
+  #C47 = eval #C46 == null
+  #C48 = eval const core::bool::fromEnvironment(#C2)
+  #C49 = eval #C48 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C50 = eval #C47 ?{(core::String) →? core::int} #C49 : #C46
+  #C51 = eval #C50 == null
+  #C52 = eval const core::bool::fromEnvironment(#C2)
+  #C53 = eval #C52 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C54 = eval #C51 ?{(core::String) →? core::int} #C53 : #C50
+  #C55 = eval #C54 == null
+  #C56 = eval const core::bool::fromEnvironment(#C2)
+  #C57 = eval #C56 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C58 = eval #C55 ?{(core::String) →? core::int} #C57 : #C54
+  #C59 = eval #C58 == null
+  #C60 = eval const core::bool::fromEnvironment(#C2)
+  #C61 = eval #C60 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C62 = eval #C59 ?{(core::String) →? core::int} #C61 : #C58
+  #C63 = eval #C62 == null
+  #C64 = eval const core::bool::fromEnvironment(#C2)
+  #C65 = eval #C64 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C66 = eval #C63 ?{(core::String) →? core::int} #C65 : #C62
+  #C67 = eval #C66 == null
+  #C68 = eval const core::bool::fromEnvironment(#C2)
+  #C69 = eval #C68 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C70 = eval #C67 ?{(core::String) →? core::int} #C69 : #C66
+  #C71 = eval #C70 == null
+  #C72 = eval const core::bool::fromEnvironment(#C2)
+  #C73 = eval #C72 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C74 = eval #C71 ?{(core::String) →? core::int} #C73 : #C70
+  #C75 = eval #C74 == null
+  #C76 = eval const core::bool::fromEnvironment(#C2)
+  #C77 = eval #C76 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C78 = eval #C75 ?{(core::String) →? core::int} #C77 : #C74
+  #C79 = eval #C78 == null
+  #C80 = eval const core::bool::fromEnvironment(#C2)
+  #C81 = eval #C80 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C82 = eval #C79 ?{(core::String) →? core::int} #C81 : #C78
+  #C83 = eval #C82 == null
+  #C84 = eval const core::bool::fromEnvironment(#C2)
+  #C85 = eval #C84 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C86 = eval #C83 ?{(core::String) →? core::int} #C85 : #C82
+  #C87 = eval #C86 == null
+  #C88 = eval const core::bool::fromEnvironment(#C2)
+  #C89 = eval #C88 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C90 = eval #C87 ?{(core::String) →? core::int} #C89 : #C86
+  #C91 = eval #C90 == null
+  #C92 = eval const core::bool::fromEnvironment(#C2)
+  #C93 = eval #C92 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C94 = eval #C91 ?{(core::String) →? core::int} #C93 : #C90
+  #C95 = eval #C94 == null
+  #C96 = eval const core::bool::fromEnvironment(#C2)
+  #C97 = eval #C96 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C98 = eval #C95 ?{(core::String) →? core::int} #C97 : #C94
+  #C99 = eval #C98 == null
+  #C100 = eval #C99 ?{(core::String) → core::int} #C1 : #C98
+  #C101 = eval self::Foo{_foo:#C100}
+}
+
+
+Constructor coverage from constants:
+org-dartlang-testcase:///issue_49245_variation_potential_exponential_blowup.dart:
+- Foo. (from org-dartlang-testcase:///issue_49245_variation_potential_exponential_blowup.dart:6:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245_variation_potential_exponential_blowup.dart.weak.outline.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245_variation_potential_exponential_blowup.dart.weak.outline.expect
new file mode 100644
index 0000000..5fa732f
--- /dev/null
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245_variation_potential_exponential_blowup.dart.weak.outline.expect
@@ -0,0 +1,19 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class Foo extends core::Object /*hasConstConstructor*/  {
+  final field (core::String) → core::int _foo;
+  const constructor •((core::String) →? core::int a1, (core::String) →? core::int a2, (core::String) →? core::int a3, (core::String) →? core::int a4, (core::String) →? core::int a5, (core::String) →? core::int a6, (core::String) →? core::int a7, (core::String) →? core::int a8, (core::String) →? core::int a9, (core::String) →? core::int a10, (core::String) →? core::int a11, (core::String) →? core::int a12, (core::String) →? core::int a13, (core::String) →? core::int a14, (core::String) →? core::int a15, (core::String) →? core::int a16, (core::String) →? core::int a17, (core::String) →? core::int a18, (core::String) →? core::int a19, (core::String) →? core::int a20, (core::String) →? core::int a21, (core::String) →? core::int a22, (core::String) →? core::int a23, (core::String) →? core::int a24) → self::Foo
+    : self::Foo::_foo = let final (core::String) →? core::int #t1 = let final (core::String) →? core::int #t2 = let final (core::String) →? core::int #t3 = let final (core::String) →? core::int #t4 = let final (core::String) →? core::int #t5 = let final (core::String) →? core::int #t6 = let final (core::String) →? core::int #t7 = let final (core::String) →? core::int #t8 = let final (core::String) →? core::int #t9 = let final (core::String) →? core::int #t10 = let final (core::String) →? core::int #t11 = let final (core::String) →? core::int #t12 = let final (core::String) →? core::int #t13 = let final (core::String) →? core::int #t14 = let final (core::String) →? core::int #t15 = let final (core::String) →? core::int #t16 = let final (core::String) →? core::int #t17 = let final (core::String) →? core::int #t18 = let final (core::String) →? core::int #t19 = let final (core::String) →? core::int #t20 = let final (core::String) →? core::int #t21 = let final (core::String) →? core::int #t22 = let final (core::String) →? core::int #t23 = let final (core::String) →? core::int #t24 = a1 in #t24 == null ?{(core::String) →? core::int} a2 : #t24{(core::String) → core::int} in #t23 == null ?{(core::String) →? core::int} a3 : #t23{(core::String) → core::int} in #t22 == null ?{(core::String) →? core::int} a4 : #t22{(core::String) → core::int} in #t21 == null ?{(core::String) →? core::int} a5 : #t21{(core::String) → core::int} in #t20 == null ?{(core::String) →? core::int} a6 : #t20{(core::String) → core::int} in #t19 == null ?{(core::String) →? core::int} a7 : #t19{(core::String) → core::int} in #t18 == null ?{(core::String) →? core::int} a8 : #t18{(core::String) → core::int} in #t17 == null ?{(core::String) →? core::int} a9 : #t17{(core::String) → core::int} in #t16 == null ?{(core::String) →? core::int} a10 : #t16{(core::String) → core::int} in #t15 == null ?{(core::String) →? core::int} a11 : #t15{(core::String) → core::int} in #t14 == null ?{(core::String) →? core::int} a12 : #t14{(core::String) → core::int} in #t13 == null ?{(core::String) →? core::int} a13 : #t13{(core::String) → core::int} in #t12 == null ?{(core::String) →? core::int} a14 : #t12{(core::String) → core::int} in #t11 == null ?{(core::String) →? core::int} a15 : #t11{(core::String) → core::int} in #t10 == null ?{(core::String) →? core::int} a16 : #t10{(core::String) → core::int} in #t9 == null ?{(core::String) →? core::int} a17 : #t9{(core::String) → core::int} in #t8 == null ?{(core::String) →? core::int} a18 : #t8{(core::String) → core::int} in #t7 == null ?{(core::String) →? core::int} a19 : #t7{(core::String) → core::int} in #t6 == null ?{(core::String) →? core::int} a20 : #t6{(core::String) → core::int} in #t5 == null ?{(core::String) →? core::int} a21 : #t5{(core::String) → core::int} in #t4 == null ?{(core::String) →? core::int} a22 : #t4{(core::String) → core::int} in #t3 == null ?{(core::String) →? core::int} a23 : #t3{(core::String) → core::int} in #t2 == null ?{(core::String) →? core::int} a24 : #t2{(core::String) → core::int} in #t1 == null ?{(core::String) → core::int} self::bar : #t1{(core::String) → core::int}, super core::Object::•()
+    ;
+}
+static method bar(core::String o) → core::int
+  ;
+static method main() → void
+  ;
+
+
+Extra constant evaluation status:
+Evaluated: StaticTearOff @ org-dartlang-testcase:///issue_49245_variation_potential_exponential_blowup.dart:55:13 -> StaticTearOffConstant(bar)
+Extra constant evaluation: evaluated: 145, effectively constant: 1
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245_variation_potential_exponential_blowup.dart.weak.transformed.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245_variation_potential_exponential_blowup.dart.weak.transformed.expect
new file mode 100644
index 0000000..b9d60de
--- /dev/null
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245_variation_potential_exponential_blowup.dart.weak.transformed.expect
@@ -0,0 +1,137 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class Foo extends core::Object /*hasConstConstructor*/  {
+  final field (core::String) → core::int _foo;
+  const constructor •((core::String) →? core::int a1, (core::String) →? core::int a2, (core::String) →? core::int a3, (core::String) →? core::int a4, (core::String) →? core::int a5, (core::String) →? core::int a6, (core::String) →? core::int a7, (core::String) →? core::int a8, (core::String) →? core::int a9, (core::String) →? core::int a10, (core::String) →? core::int a11, (core::String) →? core::int a12, (core::String) →? core::int a13, (core::String) →? core::int a14, (core::String) →? core::int a15, (core::String) →? core::int a16, (core::String) →? core::int a17, (core::String) →? core::int a18, (core::String) →? core::int a19, (core::String) →? core::int a20, (core::String) →? core::int a21, (core::String) →? core::int a22, (core::String) →? core::int a23, (core::String) →? core::int a24) → self::Foo
+    : self::Foo::_foo = let final (core::String) →? core::int #t1 = let final (core::String) →? core::int #t2 = let final (core::String) →? core::int #t3 = let final (core::String) →? core::int #t4 = let final (core::String) →? core::int #t5 = let final (core::String) →? core::int #t6 = let final (core::String) →? core::int #t7 = let final (core::String) →? core::int #t8 = let final (core::String) →? core::int #t9 = let final (core::String) →? core::int #t10 = let final (core::String) →? core::int #t11 = let final (core::String) →? core::int #t12 = let final (core::String) →? core::int #t13 = let final (core::String) →? core::int #t14 = let final (core::String) →? core::int #t15 = let final (core::String) →? core::int #t16 = let final (core::String) →? core::int #t17 = let final (core::String) →? core::int #t18 = let final (core::String) →? core::int #t19 = let final (core::String) →? core::int #t20 = let final (core::String) →? core::int #t21 = let final (core::String) →? core::int #t22 = let final (core::String) →? core::int #t23 = let final (core::String) →? core::int #t24 = a1 in #t24 == null ?{(core::String) →? core::int} a2 : #t24{(core::String) → core::int} in #t23 == null ?{(core::String) →? core::int} a3 : #t23{(core::String) → core::int} in #t22 == null ?{(core::String) →? core::int} a4 : #t22{(core::String) → core::int} in #t21 == null ?{(core::String) →? core::int} a5 : #t21{(core::String) → core::int} in #t20 == null ?{(core::String) →? core::int} a6 : #t20{(core::String) → core::int} in #t19 == null ?{(core::String) →? core::int} a7 : #t19{(core::String) → core::int} in #t18 == null ?{(core::String) →? core::int} a8 : #t18{(core::String) → core::int} in #t17 == null ?{(core::String) →? core::int} a9 : #t17{(core::String) → core::int} in #t16 == null ?{(core::String) →? core::int} a10 : #t16{(core::String) → core::int} in #t15 == null ?{(core::String) →? core::int} a11 : #t15{(core::String) → core::int} in #t14 == null ?{(core::String) →? core::int} a12 : #t14{(core::String) → core::int} in #t13 == null ?{(core::String) →? core::int} a13 : #t13{(core::String) → core::int} in #t12 == null ?{(core::String) →? core::int} a14 : #t12{(core::String) → core::int} in #t11 == null ?{(core::String) →? core::int} a15 : #t11{(core::String) → core::int} in #t10 == null ?{(core::String) →? core::int} a16 : #t10{(core::String) → core::int} in #t9 == null ?{(core::String) →? core::int} a17 : #t9{(core::String) → core::int} in #t8 == null ?{(core::String) →? core::int} a18 : #t8{(core::String) → core::int} in #t7 == null ?{(core::String) →? core::int} a19 : #t7{(core::String) → core::int} in #t6 == null ?{(core::String) →? core::int} a20 : #t6{(core::String) → core::int} in #t5 == null ?{(core::String) →? core::int} a21 : #t5{(core::String) → core::int} in #t4 == null ?{(core::String) →? core::int} a22 : #t4{(core::String) → core::int} in #t3 == null ?{(core::String) →? core::int} a23 : #t3{(core::String) → core::int} in #t2 == null ?{(core::String) →? core::int} a24 : #t2{(core::String) → core::int} in #t1 == null ?{(core::String) → core::int} #C1 : #t1{(core::String) → core::int}, super core::Object::•()
+    ;
+}
+static method bar(core::String o) → core::int
+  return core::int::parse(o);
+static method main() → void {
+  const self::Foo myValue = #C101;
+  core::print(#C101);
+  core::print(#C101);
+  core::print(#C101);
+  core::print(#C101);
+}
+
+constants  {
+  #C1 = static-tearoff self::bar
+  #C2 = "baz"
+  #C3 = eval const core::bool::fromEnvironment(#C2)
+  #C4 = static-tearoff core::int::parse
+  #C5 = null
+  #C6 = eval #C3 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C7 = eval #C6 == null
+  #C8 = eval const core::bool::fromEnvironment(#C2)
+  #C9 = eval #C8 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C10 = eval #C7 ?{(core::String) →? core::int} #C9 : #C6
+  #C11 = eval #C10 == null
+  #C12 = eval const core::bool::fromEnvironment(#C2)
+  #C13 = eval #C12 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C14 = eval #C11 ?{(core::String) →? core::int} #C13 : #C10
+  #C15 = eval #C14 == null
+  #C16 = eval const core::bool::fromEnvironment(#C2)
+  #C17 = eval #C16 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C18 = eval #C15 ?{(core::String) →? core::int} #C17 : #C14
+  #C19 = eval #C18 == null
+  #C20 = eval const core::bool::fromEnvironment(#C2)
+  #C21 = eval #C20 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C22 = eval #C19 ?{(core::String) →? core::int} #C21 : #C18
+  #C23 = eval #C22 == null
+  #C24 = eval const core::bool::fromEnvironment(#C2)
+  #C25 = eval #C24 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C26 = eval #C23 ?{(core::String) →? core::int} #C25 : #C22
+  #C27 = eval #C26 == null
+  #C28 = eval const core::bool::fromEnvironment(#C2)
+  #C29 = eval #C28 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C30 = eval #C27 ?{(core::String) →? core::int} #C29 : #C26
+  #C31 = eval #C30 == null
+  #C32 = eval const core::bool::fromEnvironment(#C2)
+  #C33 = eval #C32 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C34 = eval #C31 ?{(core::String) →? core::int} #C33 : #C30
+  #C35 = eval #C34 == null
+  #C36 = eval const core::bool::fromEnvironment(#C2)
+  #C37 = eval #C36 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C38 = eval #C35 ?{(core::String) →? core::int} #C37 : #C34
+  #C39 = eval #C38 == null
+  #C40 = eval const core::bool::fromEnvironment(#C2)
+  #C41 = eval #C40 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C42 = eval #C39 ?{(core::String) →? core::int} #C41 : #C38
+  #C43 = eval #C42 == null
+  #C44 = eval const core::bool::fromEnvironment(#C2)
+  #C45 = eval #C44 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C46 = eval #C43 ?{(core::String) →? core::int} #C45 : #C42
+  #C47 = eval #C46 == null
+  #C48 = eval const core::bool::fromEnvironment(#C2)
+  #C49 = eval #C48 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C50 = eval #C47 ?{(core::String) →? core::int} #C49 : #C46
+  #C51 = eval #C50 == null
+  #C52 = eval const core::bool::fromEnvironment(#C2)
+  #C53 = eval #C52 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C54 = eval #C51 ?{(core::String) →? core::int} #C53 : #C50
+  #C55 = eval #C54 == null
+  #C56 = eval const core::bool::fromEnvironment(#C2)
+  #C57 = eval #C56 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C58 = eval #C55 ?{(core::String) →? core::int} #C57 : #C54
+  #C59 = eval #C58 == null
+  #C60 = eval const core::bool::fromEnvironment(#C2)
+  #C61 = eval #C60 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C62 = eval #C59 ?{(core::String) →? core::int} #C61 : #C58
+  #C63 = eval #C62 == null
+  #C64 = eval const core::bool::fromEnvironment(#C2)
+  #C65 = eval #C64 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C66 = eval #C63 ?{(core::String) →? core::int} #C65 : #C62
+  #C67 = eval #C66 == null
+  #C68 = eval const core::bool::fromEnvironment(#C2)
+  #C69 = eval #C68 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C70 = eval #C67 ?{(core::String) →? core::int} #C69 : #C66
+  #C71 = eval #C70 == null
+  #C72 = eval const core::bool::fromEnvironment(#C2)
+  #C73 = eval #C72 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C74 = eval #C71 ?{(core::String) →? core::int} #C73 : #C70
+  #C75 = eval #C74 == null
+  #C76 = eval const core::bool::fromEnvironment(#C2)
+  #C77 = eval #C76 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C78 = eval #C75 ?{(core::String) →? core::int} #C77 : #C74
+  #C79 = eval #C78 == null
+  #C80 = eval const core::bool::fromEnvironment(#C2)
+  #C81 = eval #C80 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C82 = eval #C79 ?{(core::String) →? core::int} #C81 : #C78
+  #C83 = eval #C82 == null
+  #C84 = eval const core::bool::fromEnvironment(#C2)
+  #C85 = eval #C84 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C86 = eval #C83 ?{(core::String) →? core::int} #C85 : #C82
+  #C87 = eval #C86 == null
+  #C88 = eval const core::bool::fromEnvironment(#C2)
+  #C89 = eval #C88 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C90 = eval #C87 ?{(core::String) →? core::int} #C89 : #C86
+  #C91 = eval #C90 == null
+  #C92 = eval const core::bool::fromEnvironment(#C2)
+  #C93 = eval #C92 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C94 = eval #C91 ?{(core::String) →? core::int} #C93 : #C90
+  #C95 = eval #C94 == null
+  #C96 = eval const core::bool::fromEnvironment(#C2)
+  #C97 = eval #C96 ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C4 : #C5
+  #C98 = eval #C95 ?{(core::String) →? core::int} #C97 : #C94
+  #C99 = eval #C98 == null
+  #C100 = eval #C99 ?{(core::String) → core::int} #C1 : #C98
+  #C101 = eval self::Foo{_foo:#C100}
+}
+
+Extra constant evaluation status:
+Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///issue_49245_variation_potential_exponential_blowup.dart:62:23 -> InstanceConstant(const Foo{Foo._foo: bar})
+Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///issue_49245_variation_potential_exponential_blowup.dart:89:9 -> InstanceConstant(const Foo{Foo._foo: bar})
+Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///issue_49245_variation_potential_exponential_blowup.dart:90:9 -> InstanceConstant(const Foo{Foo._foo: bar})
+Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///issue_49245_variation_potential_exponential_blowup.dart:91:9 -> InstanceConstant(const Foo{Foo._foo: bar})
+Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///issue_49245_variation_potential_exponential_blowup.dart:92:9 -> InstanceConstant(const Foo{Foo._foo: bar})
+Extra constant evaluation: evaluated: 155, effectively constant: 5
+
+
+Constructor coverage from constants:
+org-dartlang-testcase:///issue_49245_variation_potential_exponential_blowup.dart:
+- Foo. (from org-dartlang-testcase:///issue_49245_variation_potential_exponential_blowup.dart:6:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/many_fields_pointing_to_previous_field.dart.weak.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/many_fields_pointing_to_previous_field.dart.weak.expect
index 8a84689..308adbd 100644
--- a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/many_fields_pointing_to_previous_field.dart.weak.expect
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/many_fields_pointing_to_previous_field.dart.weak.expect
@@ -2,57 +2,57 @@
 import self as self;
 import "dart:core" as core;
 
-static const field core::List<core::String> original = #C11;
-static const field core::List<core::String> copy1 = #C11;
-static const field core::List<core::String> copy2 = #C11;
-static const field core::List<core::String> copy3 = #C11;
-static const field core::List<core::String> copy4 = #C11;
-static const field core::List<core::String> copy5 = #C11;
-static const field core::List<core::String> copy6 = #C11;
-static const field core::List<core::String> copy7 = #C11;
-static const field core::List<core::String> copy8 = #C11;
-static const field core::List<core::String> copy9 = #C11;
-static const field core::List<core::String> copy10 = #C11;
-static const field core::List<core::String> copy11 = #C11;
-static const field core::List<core::String> copy12 = #C11;
-static const field core::List<core::String> copy13 = #C11;
-static const field core::List<core::String> copy14 = #C11;
-static const field core::List<core::String> copy15 = #C11;
-static const field core::List<core::String> copy16 = #C11;
-static const field core::List<core::String> copy17 = #C11;
-static const field core::List<core::String> copy18 = #C11;
-static const field core::List<core::String> copy19 = #C11;
-static const field core::List<core::String> copy20 = #C11;
-static const field core::List<core::String> copy21 = #C11;
-static const field core::List<core::String> copy22 = #C11;
-static const field core::List<core::String> copy23 = #C11;
-static const field core::List<core::String> copy24 = #C11;
-static const field core::List<core::String> copy25 = #C11;
-static const field core::List<core::String> copy26 = #C11;
-static const field core::List<core::String> copy27 = #C11;
-static const field core::List<core::String> copy28 = #C11;
-static const field core::List<core::String> copy29 = #C11;
-static const field core::List<core::String> copy30 = #C11;
-static const field core::List<core::String> copy31 = #C11;
-static const field core::List<core::String> copy32 = #C11;
-static const field core::List<core::String> copy33 = #C11;
-static const field core::List<core::String> copy34 = #C11;
-static const field core::List<core::String> copy35 = #C11;
-static const field core::List<core::String> copy36 = #C11;
-static const field core::List<core::String> copy37 = #C11;
-static const field core::List<core::String> copy38 = #C11;
-static const field core::List<core::String> copy39 = #C11;
-static const field core::List<core::String> copy40 = #C11;
-static const field core::List<core::String> copy41 = #C11;
-static const field core::List<core::String> copy42 = #C11;
-static const field core::List<core::String> copy43 = #C11;
-static const field core::List<core::String> copy44 = #C11;
-static const field core::List<core::String> copy45 = #C11;
-static const field core::List<core::String> copy46 = #C11;
-static const field core::List<core::String> copy47 = #C11;
-static const field core::List<core::String> copy48 = #C11;
-static const field core::List<core::String> copy49 = #C11;
-static const field core::List<core::String> copy50 = #C11;
+static const field core::List<core::String> original = #C13;
+static const field core::List<core::String> copy1 = #C13;
+static const field core::List<core::String> copy2 = #C13;
+static const field core::List<core::String> copy3 = #C13;
+static const field core::List<core::String> copy4 = #C13;
+static const field core::List<core::String> copy5 = #C13;
+static const field core::List<core::String> copy6 = #C13;
+static const field core::List<core::String> copy7 = #C13;
+static const field core::List<core::String> copy8 = #C13;
+static const field core::List<core::String> copy9 = #C13;
+static const field core::List<core::String> copy10 = #C13;
+static const field core::List<core::String> copy11 = #C13;
+static const field core::List<core::String> copy12 = #C13;
+static const field core::List<core::String> copy13 = #C13;
+static const field core::List<core::String> copy14 = #C13;
+static const field core::List<core::String> copy15 = #C13;
+static const field core::List<core::String> copy16 = #C13;
+static const field core::List<core::String> copy17 = #C13;
+static const field core::List<core::String> copy18 = #C13;
+static const field core::List<core::String> copy19 = #C13;
+static const field core::List<core::String> copy20 = #C13;
+static const field core::List<core::String> copy21 = #C13;
+static const field core::List<core::String> copy22 = #C13;
+static const field core::List<core::String> copy23 = #C13;
+static const field core::List<core::String> copy24 = #C13;
+static const field core::List<core::String> copy25 = #C13;
+static const field core::List<core::String> copy26 = #C13;
+static const field core::List<core::String> copy27 = #C13;
+static const field core::List<core::String> copy28 = #C13;
+static const field core::List<core::String> copy29 = #C13;
+static const field core::List<core::String> copy30 = #C13;
+static const field core::List<core::String> copy31 = #C13;
+static const field core::List<core::String> copy32 = #C13;
+static const field core::List<core::String> copy33 = #C13;
+static const field core::List<core::String> copy34 = #C13;
+static const field core::List<core::String> copy35 = #C13;
+static const field core::List<core::String> copy36 = #C13;
+static const field core::List<core::String> copy37 = #C13;
+static const field core::List<core::String> copy38 = #C13;
+static const field core::List<core::String> copy39 = #C13;
+static const field core::List<core::String> copy40 = #C13;
+static const field core::List<core::String> copy41 = #C13;
+static const field core::List<core::String> copy42 = #C13;
+static const field core::List<core::String> copy43 = #C13;
+static const field core::List<core::String> copy44 = #C13;
+static const field core::List<core::String> copy45 = #C13;
+static const field core::List<core::String> copy46 = #C13;
+static const field core::List<core::String> copy47 = #C13;
+static const field core::List<core::String> copy48 = #C13;
+static const field core::List<core::String> copy49 = #C13;
+static const field core::List<core::String> copy50 = #C13;
 
 constants  {
   #C1 = "lots"
@@ -60,10 +60,12 @@
   #C3 = "strings"
   #C4 = <core::String*>[#C1, #C2, #C3]
   #C5 = "original"
-  #C6 = "that"
-  #C7 = "are"
-  #C8 = "already"
-  #C9 = "constants"
-  #C10 = <core::String*>[#C6, #C7, #C8, #C9]
-  #C11 = eval #C4 + const <dynamic>[const core::String::fromEnvironment(#C5)] + #C10
+  #C6 = eval const core::String::fromEnvironment(#C5)
+  #C7 = eval const <dynamic>[#C6]
+  #C8 = "that"
+  #C9 = "are"
+  #C10 = "already"
+  #C11 = "constants"
+  #C12 = <core::String*>[#C8, #C9, #C10, #C11]
+  #C13 = eval #C4 + #C7 + #C12
 }
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/many_fields_pointing_to_previous_field.dart.weak.modular.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/many_fields_pointing_to_previous_field.dart.weak.modular.expect
index 8a84689..308adbd 100644
--- a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/many_fields_pointing_to_previous_field.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/many_fields_pointing_to_previous_field.dart.weak.modular.expect
@@ -2,57 +2,57 @@
 import self as self;
 import "dart:core" as core;
 
-static const field core::List<core::String> original = #C11;
-static const field core::List<core::String> copy1 = #C11;
-static const field core::List<core::String> copy2 = #C11;
-static const field core::List<core::String> copy3 = #C11;
-static const field core::List<core::String> copy4 = #C11;
-static const field core::List<core::String> copy5 = #C11;
-static const field core::List<core::String> copy6 = #C11;
-static const field core::List<core::String> copy7 = #C11;
-static const field core::List<core::String> copy8 = #C11;
-static const field core::List<core::String> copy9 = #C11;
-static const field core::List<core::String> copy10 = #C11;
-static const field core::List<core::String> copy11 = #C11;
-static const field core::List<core::String> copy12 = #C11;
-static const field core::List<core::String> copy13 = #C11;
-static const field core::List<core::String> copy14 = #C11;
-static const field core::List<core::String> copy15 = #C11;
-static const field core::List<core::String> copy16 = #C11;
-static const field core::List<core::String> copy17 = #C11;
-static const field core::List<core::String> copy18 = #C11;
-static const field core::List<core::String> copy19 = #C11;
-static const field core::List<core::String> copy20 = #C11;
-static const field core::List<core::String> copy21 = #C11;
-static const field core::List<core::String> copy22 = #C11;
-static const field core::List<core::String> copy23 = #C11;
-static const field core::List<core::String> copy24 = #C11;
-static const field core::List<core::String> copy25 = #C11;
-static const field core::List<core::String> copy26 = #C11;
-static const field core::List<core::String> copy27 = #C11;
-static const field core::List<core::String> copy28 = #C11;
-static const field core::List<core::String> copy29 = #C11;
-static const field core::List<core::String> copy30 = #C11;
-static const field core::List<core::String> copy31 = #C11;
-static const field core::List<core::String> copy32 = #C11;
-static const field core::List<core::String> copy33 = #C11;
-static const field core::List<core::String> copy34 = #C11;
-static const field core::List<core::String> copy35 = #C11;
-static const field core::List<core::String> copy36 = #C11;
-static const field core::List<core::String> copy37 = #C11;
-static const field core::List<core::String> copy38 = #C11;
-static const field core::List<core::String> copy39 = #C11;
-static const field core::List<core::String> copy40 = #C11;
-static const field core::List<core::String> copy41 = #C11;
-static const field core::List<core::String> copy42 = #C11;
-static const field core::List<core::String> copy43 = #C11;
-static const field core::List<core::String> copy44 = #C11;
-static const field core::List<core::String> copy45 = #C11;
-static const field core::List<core::String> copy46 = #C11;
-static const field core::List<core::String> copy47 = #C11;
-static const field core::List<core::String> copy48 = #C11;
-static const field core::List<core::String> copy49 = #C11;
-static const field core::List<core::String> copy50 = #C11;
+static const field core::List<core::String> original = #C13;
+static const field core::List<core::String> copy1 = #C13;
+static const field core::List<core::String> copy2 = #C13;
+static const field core::List<core::String> copy3 = #C13;
+static const field core::List<core::String> copy4 = #C13;
+static const field core::List<core::String> copy5 = #C13;
+static const field core::List<core::String> copy6 = #C13;
+static const field core::List<core::String> copy7 = #C13;
+static const field core::List<core::String> copy8 = #C13;
+static const field core::List<core::String> copy9 = #C13;
+static const field core::List<core::String> copy10 = #C13;
+static const field core::List<core::String> copy11 = #C13;
+static const field core::List<core::String> copy12 = #C13;
+static const field core::List<core::String> copy13 = #C13;
+static const field core::List<core::String> copy14 = #C13;
+static const field core::List<core::String> copy15 = #C13;
+static const field core::List<core::String> copy16 = #C13;
+static const field core::List<core::String> copy17 = #C13;
+static const field core::List<core::String> copy18 = #C13;
+static const field core::List<core::String> copy19 = #C13;
+static const field core::List<core::String> copy20 = #C13;
+static const field core::List<core::String> copy21 = #C13;
+static const field core::List<core::String> copy22 = #C13;
+static const field core::List<core::String> copy23 = #C13;
+static const field core::List<core::String> copy24 = #C13;
+static const field core::List<core::String> copy25 = #C13;
+static const field core::List<core::String> copy26 = #C13;
+static const field core::List<core::String> copy27 = #C13;
+static const field core::List<core::String> copy28 = #C13;
+static const field core::List<core::String> copy29 = #C13;
+static const field core::List<core::String> copy30 = #C13;
+static const field core::List<core::String> copy31 = #C13;
+static const field core::List<core::String> copy32 = #C13;
+static const field core::List<core::String> copy33 = #C13;
+static const field core::List<core::String> copy34 = #C13;
+static const field core::List<core::String> copy35 = #C13;
+static const field core::List<core::String> copy36 = #C13;
+static const field core::List<core::String> copy37 = #C13;
+static const field core::List<core::String> copy38 = #C13;
+static const field core::List<core::String> copy39 = #C13;
+static const field core::List<core::String> copy40 = #C13;
+static const field core::List<core::String> copy41 = #C13;
+static const field core::List<core::String> copy42 = #C13;
+static const field core::List<core::String> copy43 = #C13;
+static const field core::List<core::String> copy44 = #C13;
+static const field core::List<core::String> copy45 = #C13;
+static const field core::List<core::String> copy46 = #C13;
+static const field core::List<core::String> copy47 = #C13;
+static const field core::List<core::String> copy48 = #C13;
+static const field core::List<core::String> copy49 = #C13;
+static const field core::List<core::String> copy50 = #C13;
 
 constants  {
   #C1 = "lots"
@@ -60,10 +60,12 @@
   #C3 = "strings"
   #C4 = <core::String*>[#C1, #C2, #C3]
   #C5 = "original"
-  #C6 = "that"
-  #C7 = "are"
-  #C8 = "already"
-  #C9 = "constants"
-  #C10 = <core::String*>[#C6, #C7, #C8, #C9]
-  #C11 = eval #C4 + const <dynamic>[const core::String::fromEnvironment(#C5)] + #C10
+  #C6 = eval const core::String::fromEnvironment(#C5)
+  #C7 = eval const <dynamic>[#C6]
+  #C8 = "that"
+  #C9 = "are"
+  #C10 = "already"
+  #C11 = "constants"
+  #C12 = <core::String*>[#C8, #C9, #C10, #C11]
+  #C13 = eval #C4 + #C7 + #C12
 }
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/many_fields_pointing_to_previous_field.dart.weak.transformed.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/many_fields_pointing_to_previous_field.dart.weak.transformed.expect
index ee64a31..d1633f7 100644
--- a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/many_fields_pointing_to_previous_field.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/many_fields_pointing_to_previous_field.dart.weak.transformed.expect
@@ -2,57 +2,57 @@
 import self as self;
 import "dart:core" as core;
 
-static const field core::List<core::String> original = #C11;
-static const field core::List<core::String> copy1 = #C11;
-static const field core::List<core::String> copy2 = #C11;
-static const field core::List<core::String> copy3 = #C11;
-static const field core::List<core::String> copy4 = #C11;
-static const field core::List<core::String> copy5 = #C11;
-static const field core::List<core::String> copy6 = #C11;
-static const field core::List<core::String> copy7 = #C11;
-static const field core::List<core::String> copy8 = #C11;
-static const field core::List<core::String> copy9 = #C11;
-static const field core::List<core::String> copy10 = #C11;
-static const field core::List<core::String> copy11 = #C11;
-static const field core::List<core::String> copy12 = #C11;
-static const field core::List<core::String> copy13 = #C11;
-static const field core::List<core::String> copy14 = #C11;
-static const field core::List<core::String> copy15 = #C11;
-static const field core::List<core::String> copy16 = #C11;
-static const field core::List<core::String> copy17 = #C11;
-static const field core::List<core::String> copy18 = #C11;
-static const field core::List<core::String> copy19 = #C11;
-static const field core::List<core::String> copy20 = #C11;
-static const field core::List<core::String> copy21 = #C11;
-static const field core::List<core::String> copy22 = #C11;
-static const field core::List<core::String> copy23 = #C11;
-static const field core::List<core::String> copy24 = #C11;
-static const field core::List<core::String> copy25 = #C11;
-static const field core::List<core::String> copy26 = #C11;
-static const field core::List<core::String> copy27 = #C11;
-static const field core::List<core::String> copy28 = #C11;
-static const field core::List<core::String> copy29 = #C11;
-static const field core::List<core::String> copy30 = #C11;
-static const field core::List<core::String> copy31 = #C11;
-static const field core::List<core::String> copy32 = #C11;
-static const field core::List<core::String> copy33 = #C11;
-static const field core::List<core::String> copy34 = #C11;
-static const field core::List<core::String> copy35 = #C11;
-static const field core::List<core::String> copy36 = #C11;
-static const field core::List<core::String> copy37 = #C11;
-static const field core::List<core::String> copy38 = #C11;
-static const field core::List<core::String> copy39 = #C11;
-static const field core::List<core::String> copy40 = #C11;
-static const field core::List<core::String> copy41 = #C11;
-static const field core::List<core::String> copy42 = #C11;
-static const field core::List<core::String> copy43 = #C11;
-static const field core::List<core::String> copy44 = #C11;
-static const field core::List<core::String> copy45 = #C11;
-static const field core::List<core::String> copy46 = #C11;
-static const field core::List<core::String> copy47 = #C11;
-static const field core::List<core::String> copy48 = #C11;
-static const field core::List<core::String> copy49 = #C11;
-static const field core::List<core::String> copy50 = #C11;
+static const field core::List<core::String> original = #C13;
+static const field core::List<core::String> copy1 = #C13;
+static const field core::List<core::String> copy2 = #C13;
+static const field core::List<core::String> copy3 = #C13;
+static const field core::List<core::String> copy4 = #C13;
+static const field core::List<core::String> copy5 = #C13;
+static const field core::List<core::String> copy6 = #C13;
+static const field core::List<core::String> copy7 = #C13;
+static const field core::List<core::String> copy8 = #C13;
+static const field core::List<core::String> copy9 = #C13;
+static const field core::List<core::String> copy10 = #C13;
+static const field core::List<core::String> copy11 = #C13;
+static const field core::List<core::String> copy12 = #C13;
+static const field core::List<core::String> copy13 = #C13;
+static const field core::List<core::String> copy14 = #C13;
+static const field core::List<core::String> copy15 = #C13;
+static const field core::List<core::String> copy16 = #C13;
+static const field core::List<core::String> copy17 = #C13;
+static const field core::List<core::String> copy18 = #C13;
+static const field core::List<core::String> copy19 = #C13;
+static const field core::List<core::String> copy20 = #C13;
+static const field core::List<core::String> copy21 = #C13;
+static const field core::List<core::String> copy22 = #C13;
+static const field core::List<core::String> copy23 = #C13;
+static const field core::List<core::String> copy24 = #C13;
+static const field core::List<core::String> copy25 = #C13;
+static const field core::List<core::String> copy26 = #C13;
+static const field core::List<core::String> copy27 = #C13;
+static const field core::List<core::String> copy28 = #C13;
+static const field core::List<core::String> copy29 = #C13;
+static const field core::List<core::String> copy30 = #C13;
+static const field core::List<core::String> copy31 = #C13;
+static const field core::List<core::String> copy32 = #C13;
+static const field core::List<core::String> copy33 = #C13;
+static const field core::List<core::String> copy34 = #C13;
+static const field core::List<core::String> copy35 = #C13;
+static const field core::List<core::String> copy36 = #C13;
+static const field core::List<core::String> copy37 = #C13;
+static const field core::List<core::String> copy38 = #C13;
+static const field core::List<core::String> copy39 = #C13;
+static const field core::List<core::String> copy40 = #C13;
+static const field core::List<core::String> copy41 = #C13;
+static const field core::List<core::String> copy42 = #C13;
+static const field core::List<core::String> copy43 = #C13;
+static const field core::List<core::String> copy44 = #C13;
+static const field core::List<core::String> copy45 = #C13;
+static const field core::List<core::String> copy46 = #C13;
+static const field core::List<core::String> copy47 = #C13;
+static const field core::List<core::String> copy48 = #C13;
+static const field core::List<core::String> copy49 = #C13;
+static const field core::List<core::String> copy50 = #C13;
 
 constants  {
   #C1 = "lots"
@@ -60,12 +60,14 @@
   #C3 = "strings"
   #C4 = <core::String*>[#C1, #C2, #C3]
   #C5 = "original"
-  #C6 = "that"
-  #C7 = "are"
-  #C8 = "already"
-  #C9 = "constants"
-  #C10 = <core::String*>[#C6, #C7, #C8, #C9]
-  #C11 = eval #C4 + const <dynamic>[const core::String::fromEnvironment(#C5)] + #C10
+  #C6 = eval const core::String::fromEnvironment(#C5)
+  #C7 = eval const <dynamic>[#C6]
+  #C8 = "that"
+  #C9 = "are"
+  #C10 = "already"
+  #C11 = "constants"
+  #C12 = <core::String*>[#C8, #C9, #C10, #C11]
+  #C13 = eval #C4 + #C7 + #C12
 }
 
 Extra constant evaluation status:
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/rudimentary_test_01.dart.weak.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/rudimentary_test_01.dart.weak.expect
index 9505b07..57db3b7 100644
--- a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/rudimentary_test_01.dart.weak.expect
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/rudimentary_test_01.dart.weak.expect
@@ -3,17 +3,17 @@
 import "dart:core" as core;
 
 static const field core::int foo = #C1;
-static const field core::String bar = #C6;
-static const field core::bool baz = #C7;
-static const field core::Symbol blaSymbol = #C8;
+static const field core::String bar = #C7;
+static const field core::bool baz = #C8;
+static const field core::Symbol blaSymbol = #C9;
 static method main() → dynamic {
   self::_x();
-  #C10;
-  core::print(#C6);
+  #C11;
+  core::print(#C7);
 }
 static method _x() → void {
   core::print(#C1);
-  core::print(#C6);
+  core::print(#C7);
 }
 
 constants  {
@@ -21,10 +21,11 @@
   #C2 = "hello "
   #C3 = "baz"
   #C4 = "world"
-  #C5 = "!"
-  #C6 = eval "${#C2}${const core::String::fromEnvironment(#C3, defaultValue: #C4)}${#C5}"
-  #C7 = true
-  #C8 = #org-dartlang-testcase:///rudimentary_test_01.dart::_x
-  #C9 = "foo"
-  #C10 = eval const core::bool::fromEnvironment(#C9)
+  #C5 = eval const core::String::fromEnvironment(#C3, defaultValue: #C4)
+  #C6 = "!"
+  #C7 = eval "${#C2}${#C5}${#C6}"
+  #C8 = true
+  #C9 = #org-dartlang-testcase:///rudimentary_test_01.dart::_x
+  #C10 = "foo"
+  #C11 = eval const core::bool::fromEnvironment(#C10)
 }
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/rudimentary_test_01.dart.weak.modular.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/rudimentary_test_01.dart.weak.modular.expect
index 9505b07..57db3b7 100644
--- a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/rudimentary_test_01.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/rudimentary_test_01.dart.weak.modular.expect
@@ -3,17 +3,17 @@
 import "dart:core" as core;
 
 static const field core::int foo = #C1;
-static const field core::String bar = #C6;
-static const field core::bool baz = #C7;
-static const field core::Symbol blaSymbol = #C8;
+static const field core::String bar = #C7;
+static const field core::bool baz = #C8;
+static const field core::Symbol blaSymbol = #C9;
 static method main() → dynamic {
   self::_x();
-  #C10;
-  core::print(#C6);
+  #C11;
+  core::print(#C7);
 }
 static method _x() → void {
   core::print(#C1);
-  core::print(#C6);
+  core::print(#C7);
 }
 
 constants  {
@@ -21,10 +21,11 @@
   #C2 = "hello "
   #C3 = "baz"
   #C4 = "world"
-  #C5 = "!"
-  #C6 = eval "${#C2}${const core::String::fromEnvironment(#C3, defaultValue: #C4)}${#C5}"
-  #C7 = true
-  #C8 = #org-dartlang-testcase:///rudimentary_test_01.dart::_x
-  #C9 = "foo"
-  #C10 = eval const core::bool::fromEnvironment(#C9)
+  #C5 = eval const core::String::fromEnvironment(#C3, defaultValue: #C4)
+  #C6 = "!"
+  #C7 = eval "${#C2}${#C5}${#C6}"
+  #C8 = true
+  #C9 = #org-dartlang-testcase:///rudimentary_test_01.dart::_x
+  #C10 = "foo"
+  #C11 = eval const core::bool::fromEnvironment(#C10)
 }
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/rudimentary_test_01.dart.weak.transformed.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/rudimentary_test_01.dart.weak.transformed.expect
index 6bce502..c3d31c5 100644
--- a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/rudimentary_test_01.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/rudimentary_test_01.dart.weak.transformed.expect
@@ -3,17 +3,17 @@
 import "dart:core" as core;
 
 static const field core::int foo = #C1;
-static const field core::String bar = #C6;
-static const field core::bool baz = #C7;
-static const field core::Symbol blaSymbol = #C8;
+static const field core::String bar = #C7;
+static const field core::bool baz = #C8;
+static const field core::Symbol blaSymbol = #C9;
 static method main() → dynamic {
   self::_x();
-  #C10;
-  core::print(#C11);
+  #C11;
+  core::print(#C7);
 }
 static method _x() → void {
   core::print(#C1);
-  core::print(#C11);
+  core::print(#C7);
 }
 
 constants  {
@@ -21,18 +21,18 @@
   #C2 = "hello "
   #C3 = "baz"
   #C4 = "world"
-  #C5 = "!"
-  #C6 = eval "${#C2}${const core::String::fromEnvironment(#C3, defaultValue: #C4)}${#C5}"
-  #C7 = true
-  #C8 = #org-dartlang-testcase:///rudimentary_test_01.dart::_x
-  #C9 = "foo"
-  #C10 = eval const core::bool::fromEnvironment(#C9)
-  #C11 = eval "${#C2}${const core::String::fromEnvironment(#C3, defaultValue: #C4)}${#C5}"
+  #C5 = eval const core::String::fromEnvironment(#C3, defaultValue: #C4)
+  #C6 = "!"
+  #C7 = eval "${#C2}${#C5}${#C6}"
+  #C8 = true
+  #C9 = #org-dartlang-testcase:///rudimentary_test_01.dart::_x
+  #C10 = "foo"
+  #C11 = eval const core::bool::fromEnvironment(#C10)
 }
 
 Extra constant evaluation status:
 Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///rudimentary_test_01.dart:13:9 -> BoolConstant(false)
-Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///rudimentary_test_01.dart:6:18 -> StringConstant("hello world!")
-Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///rudimentary_test_01.dart:6:18 -> StringConstant("hello world!")
+Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///rudimentary_test_01.dart:14:9 -> StringConstant("hello world!")
+Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///rudimentary_test_01.dart:19:9 -> StringConstant("hello world!")
 Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///rudimentary_test_01.dart:6:18 -> StringConstant("hello world!")
 Extra constant evaluation: evaluated: 8, effectively constant: 4
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart.weak.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart.weak.expect
index d340989..07abf86 100644
--- a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart.weak.expect
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart.weak.expect
@@ -56,9 +56,9 @@
 class Foo<E extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/  {
   final field core::bool saved;
   final field core::bool saved2;
-  field core::bool initialized = #C3;
+  field core::bool initialized = #C4;
   final field self::Foo::E% value;
-  const constructor •(self::Foo::E% value, {core::bool saved2 = #C4, core::bool x = #C5}) → self::Foo<self::Foo::E%>
+  const constructor •(self::Foo::E% value, {core::bool saved2 = #C5, core::bool x = #C6}) → self::Foo<self::Foo::E%>
     : self::Foo::value = value, self::Foo::saved2 = saved2, self::Foo::saved = x, super core::Object::•()
     ;
 }
@@ -108,136 +108,166 @@
     : self::ConstClassWithF::foo = foo, super core::Object::•()
     ;
 }
-static const field core::bool barFromEnv = #C6;
+static const field core::bool barFromEnv = #C3;
 static const field core::bool hasBarEnv = #C7;
-static const field core::bool? barFromEnvOrNull0 = #C10;
-static const field core::bool barFromEnvOrNull = #C11;
-static const field core::bool notBarFromEnvOrNull = #C12;
-static const field core::bool conditionalOnNull = #C14;
-static const field core::bool nullAwareOnNull = #C15;
-static const field core::bool andOnNull = #C16;
-static const field core::bool andOnNull2 = #C11;
-static const field core::bool orOnNull = #C17;
-static const field core::bool orOnNull2 = #C18;
-static const field core::bool orOnNull3 = #C8;
-static const field core::bool orOnNull4 = #C11;
+static const field core::bool? barFromEnvOrNull0 = #C11;
+static const field core::bool barFromEnvOrNull = #C13;
+static const field core::bool notBarFromEnvOrNull = #C14;
+static const field core::bool conditionalOnNull = #C16;
+static const field core::bool nullAwareOnNull = #C18;
+static const field core::bool andOnNull = #C19;
+static const field core::bool andOnNull2 = #C13;
+static const field core::bool orOnNull = #C20;
+static const field core::bool orOnNull2 = #C21;
+static const field core::bool orOnNull3 = #C9;
+static const field core::bool orOnNull4 = #C13;
 static const field core::int fromDeferredLib = invalid-expression "'lib' can't be used in a constant expression because it's marked as 'deferred' which means it isn't available until loaded.";
-static const field self::Foo<core::int> x = #C20;
-static const field core::bool? y = #C8;
-static const field core::bool z = #C13;
-static const field core::Object maybeInt = #C21;
-static const field core::bool isItInt = #C22;
-static const field core::Object maybeInt2 = #C8;
-static const field core::bool isItInt2 = #C13;
-static const field core::int? maybeInt3 = #C9;
-static const field core::bool isItInt3 = #C13;
-static const field dynamic listOfNull = #C23;
-static const field core::bool isListOfNull = #C8;
-static const field dynamic listOfInt = #C24;
-static const field core::bool isListOfInt = #C8;
-static const field core::bool isList = #C8;
-static const field dynamic setOfInt = #C25;
-static const field core::bool isSetOfInt = #C8;
-static const field dynamic mapOfInt = #C26;
-static const field core::bool isMapOfInt = #C8;
-static const field dynamic listOfListOfInt = #C27;
-static const field core::bool isListOfListOfInt = #C8;
-static const field dynamic setOfSetOfInt = #C28;
-static const field core::bool isSetOfSetOfInt = #C8;
-static const field dynamic mapOfMapOfInt1 = #C29;
-static const field dynamic mapOfMapOfInt2 = #C30;
-static const field core::bool isMapOfMapOfInt1 = #C8;
-static const field core::bool isMapOfMapOfInt2 = #C8;
-static const field core::Symbol symbolWithUnevaluatedParameter = #C31;
-static const field core::Symbol symbolWithInvalidName = #C32;
-static const field self::Class<self::B>? c0 = #C34;
+static const field self::Foo<core::int> x = #C23;
+static const field core::bool? y = #C9;
+static const field core::bool z = #C15;
+static const field core::Object maybeInt = #C25;
+static const field core::bool isItInt = #C27;
+static const field core::Object maybeInt2 = #C9;
+static const field core::bool isItInt2 = #C15;
+static const field core::int? maybeInt3 = #C10;
+static const field core::bool isItInt3 = #C15;
+static const field dynamic listOfNull = #C28;
+static const field core::bool isListOfNull = #C9;
+static const field dynamic listOfInt = #C29;
+static const field core::bool isListOfInt = #C9;
+static const field core::bool isList = #C9;
+static const field dynamic setOfInt = #C30;
+static const field core::bool isSetOfInt = #C9;
+static const field dynamic mapOfInt = #C31;
+static const field core::bool isMapOfInt = #C9;
+static const field dynamic listOfListOfInt = #C32;
+static const field core::bool isListOfListOfInt = #C9;
+static const field dynamic setOfSetOfInt = #C33;
+static const field core::bool isSetOfSetOfInt = #C9;
+static const field dynamic mapOfMapOfInt1 = #C34;
+static const field dynamic mapOfMapOfInt2 = #C35;
+static const field core::bool isMapOfMapOfInt1 = #C9;
+static const field core::bool isMapOfMapOfInt2 = #C9;
+static const field core::Symbol symbolWithUnevaluatedParameter = #C37;
+static const field core::Symbol symbolWithInvalidName = #C38;
+static const field self::Class<self::B>? c0 = #C44;
 static const field self::Class<self::A>? c1 = invalid-expression "pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart:100:34: Error: The argument type 'A' can't be assigned to the parameter type 'T'.
  - 'A' is from 'pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart'.
   const Class.method(T t) : this(-t);
                                  ^";
-static const field self::Subclass<self::B>? c2 = #C35;
-static const field self::Class<self::A>? c3 = #C36;
-static const field self::Class<self::B>? c4 = #C37;
-static const field self::Subclass<self::A>? c5 = #C38;
-static const field self::Subclass<self::B>? c6 = #C39;
-static const field core::Type f = #C40;
-static field self::ConstClassWithF constClassWithF1 = #C42;
-static const field self::ConstClassWithF constClassWithF2 = #C42;
-static const field core::bool unevaluatedBool = #C43;
-static const field core::bool notUnevaluatedBool = #C44;
-static const field core::bool? unevaluatedBoolOrNull = #C45;
-static const field core::bool unevaluatedBoolNotNull = #C46;
-static method procedure(core::int i, {core::int named = #C9}) → core::int
+static const field self::Subclass<self::B>? c2 = #C49;
+static const field self::Class<self::A>? c3 = #C53;
+static const field self::Class<self::B>? c4 = #C58;
+static const field self::Subclass<self::A>? c5 = #C63;
+static const field self::Subclass<self::B>? c6 = #C68;
+static const field core::Type f = #C69;
+static field self::ConstClassWithF constClassWithF1 = #C71;
+static const field self::ConstClassWithF constClassWithF2 = #C71;
+static const field core::bool unevaluatedBool = #C72;
+static const field core::bool notUnevaluatedBool = #C73;
+static const field core::bool? unevaluatedBoolOrNull = #C75;
+static const field core::bool unevaluatedBoolNotNull = #C76;
+static method procedure(core::int i, {core::int named = #C10}) → core::int
   return i;
 static method main() → dynamic {
-  core::print(#C34);
+  core::print(#C44);
   core::print(invalid-expression "pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart:100:34: Error: The argument type 'A' can't be assigned to the parameter type 'T'.
  - 'A' is from 'pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart'.
   const Class.method(T t) : this(-t);
                                  ^");
-  core::print(#C35);
-  core::print(#C36);
-  core::print(#C37);
-  core::print(#C38);
-  core::print(#C39);
-  core::print(#C20);
-  core::print(#C20.{self::Foo::saved}{core::bool});
-  core::print(#C20.{self::Foo::value}{core::int});
+  core::print(#C49);
+  core::print(#C53);
+  core::print(#C58);
+  core::print(#C63);
+  core::print(#C68);
+  core::print(#C23);
+  core::print(#C23.{self::Foo::saved}{core::bool});
+  core::print(#C23.{self::Foo::value}{core::int});
 }
 
 library /*isNonNullableByDefault*/;
 import self as self2;
 import "dart:core" as core;
 
-static const field core::int x = #C19;
+static const field core::int x = #C22;
 
 constants  {
   #C1 = "foo"
   #C2 = "bar"
-  #C3 = eval const core::bool::fromEnvironment(#C1, defaultValue: const core::bool::fromEnvironment(#C2))
-  #C4 = eval const core::bool::fromEnvironment(#C1, defaultValue: const core::bool::fromEnvironment(#C2))
-  #C5 = eval const core::bool::fromEnvironment(#C1, defaultValue: const core::bool::fromEnvironment(#C2))
-  #C6 = eval const core::bool::fromEnvironment(#C2)
+  #C3 = eval const core::bool::fromEnvironment(#C2)
+  #C4 = eval const core::bool::fromEnvironment(#C1, defaultValue: #C3)
+  #C5 = eval const core::bool::fromEnvironment(#C1, defaultValue: #C3)
+  #C6 = eval const core::bool::fromEnvironment(#C1, defaultValue: #C3)
   #C7 = eval const core::bool::hasEnvironment(#C2)
-  #C8 = true
-  #C9 = null
-  #C10 = eval const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9
-  #C11 = eval const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!)
-  #C12 = eval !const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!)
-  #C13 = false
-  #C14 = eval const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!) ?{core::bool} #C8 : #C13
-  #C15 = eval const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!) == null ?{core::bool} #C8 : const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!)
-  #C16 = eval const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!) && #C8
-  #C17 = eval const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!) || #C8
-  #C18 = eval const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!) || #C13
-  #C19 = 42
-  #C20 = eval self::Foo<core::int*>{saved:const core::bool::fromEnvironment(#C1, defaultValue: const core::bool::fromEnvironment(#C2)), saved2:const core::bool::fromEnvironment(#C1, defaultValue: const core::bool::fromEnvironment(#C2)), initialized:const core::bool::fromEnvironment(#C1, defaultValue: const core::bool::fromEnvironment(#C2)), value:#C19}
-  #C21 = eval const core::bool::fromEnvironment(#C1) ?{core::Object} #C19 : #C8
-  #C22 = eval (const core::bool::fromEnvironment(#C1) ?{core::Object} #C19 : #C8) is{ForNonNullableByDefault} core::int ?{core::bool} #C8 : #C13
-  #C23 = <Null>[#C9]
-  #C24 = <core::int*>[#C19]
-  #C25 = <core::int*>{#C19}
-  #C26 = <core::int*, core::int*>{#C19:#C19)
-  #C27 = <core::List<core::int*>*>[#C24]
-  #C28 = <core::Set<core::int*>*>{#C25}
-  #C29 = <core::Map<core::int*, core::int*>*, core::int*>{#C26:#C19)
-  #C30 = <core::int*, core::Map<core::int*, core::int*>*>{#C19:#C26)
-  #C31 = eval const _in::Symbol::•(const core::String::fromEnvironment(#C1))
-  #C32 = #42
-  #C33 = "x"
-  #C34 = eval const core::bool::fromEnvironment(#C33) ?{self::Class<self::B>?} #C9 : self::Class<self::B*>{(self::C{}) as{ForNonNullableByDefault} self::B*}
-  #C35 = eval const core::bool::fromEnvironment(#C33) ?{self::Subclass<self::B>?} #C9 : self::Subclass<self::B*>{(self::C{}) as{ForNonNullableByDefault} self::B*}
-  #C36 = eval const core::bool::fromEnvironment(#C33) ?{self::Class<self::A>?} #C9 : self::Class<self::A*>{self::A{}}
-  #C37 = eval const core::bool::fromEnvironment(#C33) ?{self::Class<self::B>?} #C9 : self::Class<self::B*>{(self::B{}) as{ForNonNullableByDefault} self::B*}
-  #C38 = eval const core::bool::fromEnvironment(#C33) ?{self::Subclass<self::A>?} #C9 : self::Subclass<self::A*>{(self::A{}) as{ForNonNullableByDefault} self::A*}
-  #C39 = eval const core::bool::fromEnvironment(#C33) ?{self::Subclass<self::B>?} #C9 : self::Subclass<self::B*>{(self::B{}) as{ForNonNullableByDefault} self::B*}
-  #C40 = TypeLiteralConstant((core::int*, {named: core::int*}) →* core::int*)
-  #C41 = static-tearoff self::procedure
-  #C42 = self::ConstClassWithF {foo:#C41}
-  #C43 = eval const core::bool::fromEnvironment(#C1)
-  #C44 = eval !const core::bool::fromEnvironment(#C1)
-  #C45 = eval const core::bool::fromEnvironment(#C2) ?{core::bool?} const core::bool::fromEnvironment(#C1) : #C9
-  #C46 = eval (const core::bool::fromEnvironment(#C2) ?{core::bool?} const core::bool::fromEnvironment(#C1) : #C9)!
+  #C8 = eval const core::bool::fromEnvironment(#C2)
+  #C9 = true
+  #C10 = null
+  #C11 = eval #C8 ?{core::bool?} #C9 : #C10
+  #C12 = eval #C11!
+  #C13 = eval const core::bool::fromEnvironment(#C2, defaultValue: #C12)
+  #C14 = eval !#C13
+  #C15 = false
+  #C16 = eval #C13 ?{core::bool} #C9 : #C15
+  #C17 = eval #C13 == null
+  #C18 = eval #C17 ?{core::bool} #C9 : #C13
+  #C19 = eval #C13 && #C9
+  #C20 = eval #C13 || #C9
+  #C21 = eval #C13 || #C15
+  #C22 = 42
+  #C23 = eval self::Foo<core::int*>{saved:#C6, saved2:#C5, initialized:#C4, value:#C22}
+  #C24 = eval const core::bool::fromEnvironment(#C1)
+  #C25 = eval #C24 ?{core::Object} #C22 : #C9
+  #C26 = eval #C25 is{ForNonNullableByDefault} core::int
+  #C27 = eval #C26 ?{core::bool} #C9 : #C15
+  #C28 = <Null>[#C10]
+  #C29 = <core::int*>[#C22]
+  #C30 = <core::int*>{#C22}
+  #C31 = <core::int*, core::int*>{#C22:#C22)
+  #C32 = <core::List<core::int*>*>[#C29]
+  #C33 = <core::Set<core::int*>*>{#C30}
+  #C34 = <core::Map<core::int*, core::int*>*, core::int*>{#C31:#C22)
+  #C35 = <core::int*, core::Map<core::int*, core::int*>*>{#C22:#C31)
+  #C36 = eval const core::String::fromEnvironment(#C1)
+  #C37 = eval const _in::Symbol::•(#C36)
+  #C38 = #42
+  #C39 = "x"
+  #C40 = eval const core::bool::fromEnvironment(#C39)
+  #C41 = eval self::C{}
+  #C42 = eval #C41 as{ForNonNullableByDefault} self::B*
+  #C43 = eval self::Class<self::B*>{#C42}
+  #C44 = eval #C40 ?{self::Class<self::B>?} #C10 : #C43
+  #C45 = eval const core::bool::fromEnvironment(#C39)
+  #C46 = eval self::C{}
+  #C47 = eval #C46 as{ForNonNullableByDefault} self::B*
+  #C48 = eval self::Subclass<self::B*>{#C47}
+  #C49 = eval #C45 ?{self::Subclass<self::B>?} #C10 : #C48
+  #C50 = eval const core::bool::fromEnvironment(#C39)
+  #C51 = eval self::A{}
+  #C52 = eval self::Class<self::A*>{#C51}
+  #C53 = eval #C50 ?{self::Class<self::A>?} #C10 : #C52
+  #C54 = eval const core::bool::fromEnvironment(#C39)
+  #C55 = eval self::B{}
+  #C56 = eval #C55 as{ForNonNullableByDefault} self::B*
+  #C57 = eval self::Class<self::B*>{#C56}
+  #C58 = eval #C54 ?{self::Class<self::B>?} #C10 : #C57
+  #C59 = eval const core::bool::fromEnvironment(#C39)
+  #C60 = eval self::A{}
+  #C61 = eval #C60 as{ForNonNullableByDefault} self::A*
+  #C62 = eval self::Subclass<self::A*>{#C61}
+  #C63 = eval #C59 ?{self::Subclass<self::A>?} #C10 : #C62
+  #C64 = eval const core::bool::fromEnvironment(#C39)
+  #C65 = eval self::B{}
+  #C66 = eval #C65 as{ForNonNullableByDefault} self::B*
+  #C67 = eval self::Subclass<self::B*>{#C66}
+  #C68 = eval #C64 ?{self::Subclass<self::B>?} #C10 : #C67
+  #C69 = TypeLiteralConstant((core::int*, {named: core::int*}) →* core::int*)
+  #C70 = static-tearoff self::procedure
+  #C71 = self::ConstClassWithF {foo:#C70}
+  #C72 = eval const core::bool::fromEnvironment(#C1)
+  #C73 = eval !#C72
+  #C74 = eval const core::bool::fromEnvironment(#C2)
+  #C75 = eval #C74 ?{core::bool?} #C72 : #C10
+  #C76 = eval #C75!
 }
 
 
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart.weak.modular.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart.weak.modular.expect
index d340989..07abf86 100644
--- a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart.weak.modular.expect
@@ -56,9 +56,9 @@
 class Foo<E extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/  {
   final field core::bool saved;
   final field core::bool saved2;
-  field core::bool initialized = #C3;
+  field core::bool initialized = #C4;
   final field self::Foo::E% value;
-  const constructor •(self::Foo::E% value, {core::bool saved2 = #C4, core::bool x = #C5}) → self::Foo<self::Foo::E%>
+  const constructor •(self::Foo::E% value, {core::bool saved2 = #C5, core::bool x = #C6}) → self::Foo<self::Foo::E%>
     : self::Foo::value = value, self::Foo::saved2 = saved2, self::Foo::saved = x, super core::Object::•()
     ;
 }
@@ -108,136 +108,166 @@
     : self::ConstClassWithF::foo = foo, super core::Object::•()
     ;
 }
-static const field core::bool barFromEnv = #C6;
+static const field core::bool barFromEnv = #C3;
 static const field core::bool hasBarEnv = #C7;
-static const field core::bool? barFromEnvOrNull0 = #C10;
-static const field core::bool barFromEnvOrNull = #C11;
-static const field core::bool notBarFromEnvOrNull = #C12;
-static const field core::bool conditionalOnNull = #C14;
-static const field core::bool nullAwareOnNull = #C15;
-static const field core::bool andOnNull = #C16;
-static const field core::bool andOnNull2 = #C11;
-static const field core::bool orOnNull = #C17;
-static const field core::bool orOnNull2 = #C18;
-static const field core::bool orOnNull3 = #C8;
-static const field core::bool orOnNull4 = #C11;
+static const field core::bool? barFromEnvOrNull0 = #C11;
+static const field core::bool barFromEnvOrNull = #C13;
+static const field core::bool notBarFromEnvOrNull = #C14;
+static const field core::bool conditionalOnNull = #C16;
+static const field core::bool nullAwareOnNull = #C18;
+static const field core::bool andOnNull = #C19;
+static const field core::bool andOnNull2 = #C13;
+static const field core::bool orOnNull = #C20;
+static const field core::bool orOnNull2 = #C21;
+static const field core::bool orOnNull3 = #C9;
+static const field core::bool orOnNull4 = #C13;
 static const field core::int fromDeferredLib = invalid-expression "'lib' can't be used in a constant expression because it's marked as 'deferred' which means it isn't available until loaded.";
-static const field self::Foo<core::int> x = #C20;
-static const field core::bool? y = #C8;
-static const field core::bool z = #C13;
-static const field core::Object maybeInt = #C21;
-static const field core::bool isItInt = #C22;
-static const field core::Object maybeInt2 = #C8;
-static const field core::bool isItInt2 = #C13;
-static const field core::int? maybeInt3 = #C9;
-static const field core::bool isItInt3 = #C13;
-static const field dynamic listOfNull = #C23;
-static const field core::bool isListOfNull = #C8;
-static const field dynamic listOfInt = #C24;
-static const field core::bool isListOfInt = #C8;
-static const field core::bool isList = #C8;
-static const field dynamic setOfInt = #C25;
-static const field core::bool isSetOfInt = #C8;
-static const field dynamic mapOfInt = #C26;
-static const field core::bool isMapOfInt = #C8;
-static const field dynamic listOfListOfInt = #C27;
-static const field core::bool isListOfListOfInt = #C8;
-static const field dynamic setOfSetOfInt = #C28;
-static const field core::bool isSetOfSetOfInt = #C8;
-static const field dynamic mapOfMapOfInt1 = #C29;
-static const field dynamic mapOfMapOfInt2 = #C30;
-static const field core::bool isMapOfMapOfInt1 = #C8;
-static const field core::bool isMapOfMapOfInt2 = #C8;
-static const field core::Symbol symbolWithUnevaluatedParameter = #C31;
-static const field core::Symbol symbolWithInvalidName = #C32;
-static const field self::Class<self::B>? c0 = #C34;
+static const field self::Foo<core::int> x = #C23;
+static const field core::bool? y = #C9;
+static const field core::bool z = #C15;
+static const field core::Object maybeInt = #C25;
+static const field core::bool isItInt = #C27;
+static const field core::Object maybeInt2 = #C9;
+static const field core::bool isItInt2 = #C15;
+static const field core::int? maybeInt3 = #C10;
+static const field core::bool isItInt3 = #C15;
+static const field dynamic listOfNull = #C28;
+static const field core::bool isListOfNull = #C9;
+static const field dynamic listOfInt = #C29;
+static const field core::bool isListOfInt = #C9;
+static const field core::bool isList = #C9;
+static const field dynamic setOfInt = #C30;
+static const field core::bool isSetOfInt = #C9;
+static const field dynamic mapOfInt = #C31;
+static const field core::bool isMapOfInt = #C9;
+static const field dynamic listOfListOfInt = #C32;
+static const field core::bool isListOfListOfInt = #C9;
+static const field dynamic setOfSetOfInt = #C33;
+static const field core::bool isSetOfSetOfInt = #C9;
+static const field dynamic mapOfMapOfInt1 = #C34;
+static const field dynamic mapOfMapOfInt2 = #C35;
+static const field core::bool isMapOfMapOfInt1 = #C9;
+static const field core::bool isMapOfMapOfInt2 = #C9;
+static const field core::Symbol symbolWithUnevaluatedParameter = #C37;
+static const field core::Symbol symbolWithInvalidName = #C38;
+static const field self::Class<self::B>? c0 = #C44;
 static const field self::Class<self::A>? c1 = invalid-expression "pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart:100:34: Error: The argument type 'A' can't be assigned to the parameter type 'T'.
  - 'A' is from 'pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart'.
   const Class.method(T t) : this(-t);
                                  ^";
-static const field self::Subclass<self::B>? c2 = #C35;
-static const field self::Class<self::A>? c3 = #C36;
-static const field self::Class<self::B>? c4 = #C37;
-static const field self::Subclass<self::A>? c5 = #C38;
-static const field self::Subclass<self::B>? c6 = #C39;
-static const field core::Type f = #C40;
-static field self::ConstClassWithF constClassWithF1 = #C42;
-static const field self::ConstClassWithF constClassWithF2 = #C42;
-static const field core::bool unevaluatedBool = #C43;
-static const field core::bool notUnevaluatedBool = #C44;
-static const field core::bool? unevaluatedBoolOrNull = #C45;
-static const field core::bool unevaluatedBoolNotNull = #C46;
-static method procedure(core::int i, {core::int named = #C9}) → core::int
+static const field self::Subclass<self::B>? c2 = #C49;
+static const field self::Class<self::A>? c3 = #C53;
+static const field self::Class<self::B>? c4 = #C58;
+static const field self::Subclass<self::A>? c5 = #C63;
+static const field self::Subclass<self::B>? c6 = #C68;
+static const field core::Type f = #C69;
+static field self::ConstClassWithF constClassWithF1 = #C71;
+static const field self::ConstClassWithF constClassWithF2 = #C71;
+static const field core::bool unevaluatedBool = #C72;
+static const field core::bool notUnevaluatedBool = #C73;
+static const field core::bool? unevaluatedBoolOrNull = #C75;
+static const field core::bool unevaluatedBoolNotNull = #C76;
+static method procedure(core::int i, {core::int named = #C10}) → core::int
   return i;
 static method main() → dynamic {
-  core::print(#C34);
+  core::print(#C44);
   core::print(invalid-expression "pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart:100:34: Error: The argument type 'A' can't be assigned to the parameter type 'T'.
  - 'A' is from 'pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart'.
   const Class.method(T t) : this(-t);
                                  ^");
-  core::print(#C35);
-  core::print(#C36);
-  core::print(#C37);
-  core::print(#C38);
-  core::print(#C39);
-  core::print(#C20);
-  core::print(#C20.{self::Foo::saved}{core::bool});
-  core::print(#C20.{self::Foo::value}{core::int});
+  core::print(#C49);
+  core::print(#C53);
+  core::print(#C58);
+  core::print(#C63);
+  core::print(#C68);
+  core::print(#C23);
+  core::print(#C23.{self::Foo::saved}{core::bool});
+  core::print(#C23.{self::Foo::value}{core::int});
 }
 
 library /*isNonNullableByDefault*/;
 import self as self2;
 import "dart:core" as core;
 
-static const field core::int x = #C19;
+static const field core::int x = #C22;
 
 constants  {
   #C1 = "foo"
   #C2 = "bar"
-  #C3 = eval const core::bool::fromEnvironment(#C1, defaultValue: const core::bool::fromEnvironment(#C2))
-  #C4 = eval const core::bool::fromEnvironment(#C1, defaultValue: const core::bool::fromEnvironment(#C2))
-  #C5 = eval const core::bool::fromEnvironment(#C1, defaultValue: const core::bool::fromEnvironment(#C2))
-  #C6 = eval const core::bool::fromEnvironment(#C2)
+  #C3 = eval const core::bool::fromEnvironment(#C2)
+  #C4 = eval const core::bool::fromEnvironment(#C1, defaultValue: #C3)
+  #C5 = eval const core::bool::fromEnvironment(#C1, defaultValue: #C3)
+  #C6 = eval const core::bool::fromEnvironment(#C1, defaultValue: #C3)
   #C7 = eval const core::bool::hasEnvironment(#C2)
-  #C8 = true
-  #C9 = null
-  #C10 = eval const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9
-  #C11 = eval const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!)
-  #C12 = eval !const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!)
-  #C13 = false
-  #C14 = eval const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!) ?{core::bool} #C8 : #C13
-  #C15 = eval const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!) == null ?{core::bool} #C8 : const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!)
-  #C16 = eval const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!) && #C8
-  #C17 = eval const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!) || #C8
-  #C18 = eval const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!) || #C13
-  #C19 = 42
-  #C20 = eval self::Foo<core::int*>{saved:const core::bool::fromEnvironment(#C1, defaultValue: const core::bool::fromEnvironment(#C2)), saved2:const core::bool::fromEnvironment(#C1, defaultValue: const core::bool::fromEnvironment(#C2)), initialized:const core::bool::fromEnvironment(#C1, defaultValue: const core::bool::fromEnvironment(#C2)), value:#C19}
-  #C21 = eval const core::bool::fromEnvironment(#C1) ?{core::Object} #C19 : #C8
-  #C22 = eval (const core::bool::fromEnvironment(#C1) ?{core::Object} #C19 : #C8) is{ForNonNullableByDefault} core::int ?{core::bool} #C8 : #C13
-  #C23 = <Null>[#C9]
-  #C24 = <core::int*>[#C19]
-  #C25 = <core::int*>{#C19}
-  #C26 = <core::int*, core::int*>{#C19:#C19)
-  #C27 = <core::List<core::int*>*>[#C24]
-  #C28 = <core::Set<core::int*>*>{#C25}
-  #C29 = <core::Map<core::int*, core::int*>*, core::int*>{#C26:#C19)
-  #C30 = <core::int*, core::Map<core::int*, core::int*>*>{#C19:#C26)
-  #C31 = eval const _in::Symbol::•(const core::String::fromEnvironment(#C1))
-  #C32 = #42
-  #C33 = "x"
-  #C34 = eval const core::bool::fromEnvironment(#C33) ?{self::Class<self::B>?} #C9 : self::Class<self::B*>{(self::C{}) as{ForNonNullableByDefault} self::B*}
-  #C35 = eval const core::bool::fromEnvironment(#C33) ?{self::Subclass<self::B>?} #C9 : self::Subclass<self::B*>{(self::C{}) as{ForNonNullableByDefault} self::B*}
-  #C36 = eval const core::bool::fromEnvironment(#C33) ?{self::Class<self::A>?} #C9 : self::Class<self::A*>{self::A{}}
-  #C37 = eval const core::bool::fromEnvironment(#C33) ?{self::Class<self::B>?} #C9 : self::Class<self::B*>{(self::B{}) as{ForNonNullableByDefault} self::B*}
-  #C38 = eval const core::bool::fromEnvironment(#C33) ?{self::Subclass<self::A>?} #C9 : self::Subclass<self::A*>{(self::A{}) as{ForNonNullableByDefault} self::A*}
-  #C39 = eval const core::bool::fromEnvironment(#C33) ?{self::Subclass<self::B>?} #C9 : self::Subclass<self::B*>{(self::B{}) as{ForNonNullableByDefault} self::B*}
-  #C40 = TypeLiteralConstant((core::int*, {named: core::int*}) →* core::int*)
-  #C41 = static-tearoff self::procedure
-  #C42 = self::ConstClassWithF {foo:#C41}
-  #C43 = eval const core::bool::fromEnvironment(#C1)
-  #C44 = eval !const core::bool::fromEnvironment(#C1)
-  #C45 = eval const core::bool::fromEnvironment(#C2) ?{core::bool?} const core::bool::fromEnvironment(#C1) : #C9
-  #C46 = eval (const core::bool::fromEnvironment(#C2) ?{core::bool?} const core::bool::fromEnvironment(#C1) : #C9)!
+  #C8 = eval const core::bool::fromEnvironment(#C2)
+  #C9 = true
+  #C10 = null
+  #C11 = eval #C8 ?{core::bool?} #C9 : #C10
+  #C12 = eval #C11!
+  #C13 = eval const core::bool::fromEnvironment(#C2, defaultValue: #C12)
+  #C14 = eval !#C13
+  #C15 = false
+  #C16 = eval #C13 ?{core::bool} #C9 : #C15
+  #C17 = eval #C13 == null
+  #C18 = eval #C17 ?{core::bool} #C9 : #C13
+  #C19 = eval #C13 && #C9
+  #C20 = eval #C13 || #C9
+  #C21 = eval #C13 || #C15
+  #C22 = 42
+  #C23 = eval self::Foo<core::int*>{saved:#C6, saved2:#C5, initialized:#C4, value:#C22}
+  #C24 = eval const core::bool::fromEnvironment(#C1)
+  #C25 = eval #C24 ?{core::Object} #C22 : #C9
+  #C26 = eval #C25 is{ForNonNullableByDefault} core::int
+  #C27 = eval #C26 ?{core::bool} #C9 : #C15
+  #C28 = <Null>[#C10]
+  #C29 = <core::int*>[#C22]
+  #C30 = <core::int*>{#C22}
+  #C31 = <core::int*, core::int*>{#C22:#C22)
+  #C32 = <core::List<core::int*>*>[#C29]
+  #C33 = <core::Set<core::int*>*>{#C30}
+  #C34 = <core::Map<core::int*, core::int*>*, core::int*>{#C31:#C22)
+  #C35 = <core::int*, core::Map<core::int*, core::int*>*>{#C22:#C31)
+  #C36 = eval const core::String::fromEnvironment(#C1)
+  #C37 = eval const _in::Symbol::•(#C36)
+  #C38 = #42
+  #C39 = "x"
+  #C40 = eval const core::bool::fromEnvironment(#C39)
+  #C41 = eval self::C{}
+  #C42 = eval #C41 as{ForNonNullableByDefault} self::B*
+  #C43 = eval self::Class<self::B*>{#C42}
+  #C44 = eval #C40 ?{self::Class<self::B>?} #C10 : #C43
+  #C45 = eval const core::bool::fromEnvironment(#C39)
+  #C46 = eval self::C{}
+  #C47 = eval #C46 as{ForNonNullableByDefault} self::B*
+  #C48 = eval self::Subclass<self::B*>{#C47}
+  #C49 = eval #C45 ?{self::Subclass<self::B>?} #C10 : #C48
+  #C50 = eval const core::bool::fromEnvironment(#C39)
+  #C51 = eval self::A{}
+  #C52 = eval self::Class<self::A*>{#C51}
+  #C53 = eval #C50 ?{self::Class<self::A>?} #C10 : #C52
+  #C54 = eval const core::bool::fromEnvironment(#C39)
+  #C55 = eval self::B{}
+  #C56 = eval #C55 as{ForNonNullableByDefault} self::B*
+  #C57 = eval self::Class<self::B*>{#C56}
+  #C58 = eval #C54 ?{self::Class<self::B>?} #C10 : #C57
+  #C59 = eval const core::bool::fromEnvironment(#C39)
+  #C60 = eval self::A{}
+  #C61 = eval #C60 as{ForNonNullableByDefault} self::A*
+  #C62 = eval self::Subclass<self::A*>{#C61}
+  #C63 = eval #C59 ?{self::Subclass<self::A>?} #C10 : #C62
+  #C64 = eval const core::bool::fromEnvironment(#C39)
+  #C65 = eval self::B{}
+  #C66 = eval #C65 as{ForNonNullableByDefault} self::B*
+  #C67 = eval self::Subclass<self::B*>{#C66}
+  #C68 = eval #C64 ?{self::Subclass<self::B>?} #C10 : #C67
+  #C69 = TypeLiteralConstant((core::int*, {named: core::int*}) →* core::int*)
+  #C70 = static-tearoff self::procedure
+  #C71 = self::ConstClassWithF {foo:#C70}
+  #C72 = eval const core::bool::fromEnvironment(#C1)
+  #C73 = eval !#C72
+  #C74 = eval const core::bool::fromEnvironment(#C2)
+  #C75 = eval #C74 ?{core::bool?} #C72 : #C10
+  #C76 = eval #C75!
 }
 
 
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart.weak.transformed.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart.weak.transformed.expect
index 78c9eb6..d52e896 100644
--- a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart.weak.transformed.expect
@@ -56,9 +56,9 @@
 class Foo<E extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/  {
   final field core::bool saved;
   final field core::bool saved2;
-  field core::bool initialized = #C3;
+  field core::bool initialized = #C4;
   final field self::Foo::E% value;
-  const constructor •(self::Foo::E% value, {core::bool saved2 = #C4, core::bool x = #C5}) → self::Foo<self::Foo::E%>
+  const constructor •(self::Foo::E% value, {core::bool saved2 = #C5, core::bool x = #C6}) → self::Foo<self::Foo::E%>
     : self::Foo::value = value, self::Foo::saved2 = saved2, self::Foo::saved = x, super core::Object::•()
     ;
 }
@@ -108,156 +108,179 @@
     : self::ConstClassWithF::foo = foo, super core::Object::•()
     ;
 }
-static const field core::bool barFromEnv = #C6;
+static const field core::bool barFromEnv = #C3;
 static const field core::bool hasBarEnv = #C7;
-static const field core::bool? barFromEnvOrNull0 = #C10;
-static const field core::bool barFromEnvOrNull = #C11;
-static const field core::bool notBarFromEnvOrNull = #C12;
-static const field core::bool conditionalOnNull = #C14;
-static const field core::bool nullAwareOnNull = #C15;
-static const field core::bool andOnNull = #C16;
-static const field core::bool andOnNull2 = #C11;
-static const field core::bool orOnNull = #C17;
-static const field core::bool orOnNull2 = #C18;
-static const field core::bool orOnNull3 = #C8;
-static const field core::bool orOnNull4 = #C11;
+static const field core::bool? barFromEnvOrNull0 = #C11;
+static const field core::bool barFromEnvOrNull = #C13;
+static const field core::bool notBarFromEnvOrNull = #C14;
+static const field core::bool conditionalOnNull = #C16;
+static const field core::bool nullAwareOnNull = #C18;
+static const field core::bool andOnNull = #C19;
+static const field core::bool andOnNull2 = #C13;
+static const field core::bool orOnNull = #C20;
+static const field core::bool orOnNull2 = #C21;
+static const field core::bool orOnNull3 = #C9;
+static const field core::bool orOnNull4 = #C13;
 static const field core::int fromDeferredLib = invalid-expression "'lib' can't be used in a constant expression because it's marked as 'deferred' which means it isn't available until loaded.";
-static const field self::Foo<core::int> x = #C20;
-static const field core::bool? y = #C8;
-static const field core::bool z = #C13;
-static const field core::Object maybeInt = #C21;
-static const field core::bool isItInt = #C22;
-static const field core::Object maybeInt2 = #C8;
-static const field core::bool isItInt2 = #C13;
-static const field core::int? maybeInt3 = #C9;
-static const field core::bool isItInt3 = #C13;
-static const field dynamic listOfNull = #C23;
-static const field core::bool isListOfNull = #C8;
-static const field dynamic listOfInt = #C24;
-static const field core::bool isListOfInt = #C8;
-static const field core::bool isList = #C8;
-static const field dynamic setOfInt = #C25;
-static const field core::bool isSetOfInt = #C8;
-static const field dynamic mapOfInt = #C26;
-static const field core::bool isMapOfInt = #C8;
-static const field dynamic listOfListOfInt = #C27;
-static const field core::bool isListOfListOfInt = #C8;
-static const field dynamic setOfSetOfInt = #C28;
-static const field core::bool isSetOfSetOfInt = #C8;
-static const field dynamic mapOfMapOfInt1 = #C29;
-static const field dynamic mapOfMapOfInt2 = #C30;
-static const field core::bool isMapOfMapOfInt1 = #C8;
-static const field core::bool isMapOfMapOfInt2 = #C8;
-static const field core::Symbol symbolWithUnevaluatedParameter = #C31;
-static const field core::Symbol symbolWithInvalidName = #C32;
-static const field self::Class<self::B>? c0 = #C34;
+static const field self::Foo<core::int> x = #C23;
+static const field core::bool? y = #C9;
+static const field core::bool z = #C15;
+static const field core::Object maybeInt = #C25;
+static const field core::bool isItInt = #C27;
+static const field core::Object maybeInt2 = #C9;
+static const field core::bool isItInt2 = #C15;
+static const field core::int? maybeInt3 = #C10;
+static const field core::bool isItInt3 = #C15;
+static const field dynamic listOfNull = #C28;
+static const field core::bool isListOfNull = #C9;
+static const field dynamic listOfInt = #C29;
+static const field core::bool isListOfInt = #C9;
+static const field core::bool isList = #C9;
+static const field dynamic setOfInt = #C30;
+static const field core::bool isSetOfInt = #C9;
+static const field dynamic mapOfInt = #C31;
+static const field core::bool isMapOfInt = #C9;
+static const field dynamic listOfListOfInt = #C32;
+static const field core::bool isListOfListOfInt = #C9;
+static const field dynamic setOfSetOfInt = #C33;
+static const field core::bool isSetOfSetOfInt = #C9;
+static const field dynamic mapOfMapOfInt1 = #C34;
+static const field dynamic mapOfMapOfInt2 = #C35;
+static const field core::bool isMapOfMapOfInt1 = #C9;
+static const field core::bool isMapOfMapOfInt2 = #C9;
+static const field core::Symbol symbolWithUnevaluatedParameter = #C37;
+static const field core::Symbol symbolWithInvalidName = #C38;
+static const field self::Class<self::B>? c0 = #C44;
 static const field self::Class<self::A>? c1 = invalid-expression "pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart:100:34: Error: The argument type 'A' can't be assigned to the parameter type 'T'.
  - 'A' is from 'pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart'.
   const Class.method(T t) : this(-t);
                                  ^";
-static const field self::Subclass<self::B>? c2 = #C35;
-static const field self::Class<self::A>? c3 = #C36;
-static const field self::Class<self::B>? c4 = #C37;
-static const field self::Subclass<self::A>? c5 = #C38;
-static const field self::Subclass<self::B>? c6 = #C39;
-static const field core::Type f = #C40;
-static field self::ConstClassWithF constClassWithF1 = #C42;
-static const field self::ConstClassWithF constClassWithF2 = #C42;
-static const field core::bool unevaluatedBool = #C43;
-static const field core::bool notUnevaluatedBool = #C44;
-static const field core::bool? unevaluatedBoolOrNull = #C45;
-static const field core::bool unevaluatedBoolNotNull = #C46;
-static method procedure(core::int i, {core::int named = #C9}) → core::int
+static const field self::Subclass<self::B>? c2 = #C49;
+static const field self::Class<self::A>? c3 = #C53;
+static const field self::Class<self::B>? c4 = #C58;
+static const field self::Subclass<self::A>? c5 = #C63;
+static const field self::Subclass<self::B>? c6 = #C68;
+static const field core::Type f = #C69;
+static field self::ConstClassWithF constClassWithF1 = #C71;
+static const field self::ConstClassWithF constClassWithF2 = #C71;
+static const field core::bool unevaluatedBool = #C72;
+static const field core::bool notUnevaluatedBool = #C73;
+static const field core::bool? unevaluatedBoolOrNull = #C75;
+static const field core::bool unevaluatedBoolNotNull = #C76;
+static method procedure(core::int i, {core::int named = #C10}) → core::int
   return i;
 static method main() → dynamic {
-  core::print(#C47);
+  core::print(#C44);
   core::print(invalid-expression "pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart:100:34: Error: The argument type 'A' can't be assigned to the parameter type 'T'.
  - 'A' is from 'pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart'.
   const Class.method(T t) : this(-t);
                                  ^");
-  core::print(#C48);
   core::print(#C49);
-  core::print(#C50);
-  core::print(#C51);
-  core::print(#C52);
   core::print(#C53);
-  core::print(#C53.{self::Foo::saved}{core::bool});
-  core::print(#C53.{self::Foo::value}{core::int});
+  core::print(#C58);
+  core::print(#C63);
+  core::print(#C68);
+  core::print(#C23);
+  core::print(#C23.{self::Foo::saved}{core::bool});
+  core::print(#C23.{self::Foo::value}{core::int});
 }
 
 library /*isNonNullableByDefault*/;
 import self as self2;
 import "dart:core" as core;
 
-static const field core::int x = #C19;
+static const field core::int x = #C22;
 
 constants  {
   #C1 = "foo"
   #C2 = "bar"
-  #C3 = eval const core::bool::fromEnvironment(#C1, defaultValue: const core::bool::fromEnvironment(#C2))
-  #C4 = eval const core::bool::fromEnvironment(#C1, defaultValue: const core::bool::fromEnvironment(#C2))
-  #C5 = eval const core::bool::fromEnvironment(#C1, defaultValue: const core::bool::fromEnvironment(#C2))
-  #C6 = eval const core::bool::fromEnvironment(#C2)
+  #C3 = eval const core::bool::fromEnvironment(#C2)
+  #C4 = eval const core::bool::fromEnvironment(#C1, defaultValue: #C3)
+  #C5 = eval const core::bool::fromEnvironment(#C1, defaultValue: #C3)
+  #C6 = eval const core::bool::fromEnvironment(#C1, defaultValue: #C3)
   #C7 = eval const core::bool::hasEnvironment(#C2)
-  #C8 = true
-  #C9 = null
-  #C10 = eval const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9
-  #C11 = eval const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!)
-  #C12 = eval !const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!)
-  #C13 = false
-  #C14 = eval const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!) ?{core::bool} #C8 : #C13
-  #C15 = eval const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!) == null ?{core::bool} #C8 : const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!)
-  #C16 = eval const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!) && #C8
-  #C17 = eval const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!) || #C8
-  #C18 = eval const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!) || #C13
-  #C19 = 42
-  #C20 = eval self::Foo<core::int*>{saved:const core::bool::fromEnvironment(#C1, defaultValue: const core::bool::fromEnvironment(#C2)), saved2:const core::bool::fromEnvironment(#C1, defaultValue: const core::bool::fromEnvironment(#C2)), initialized:const core::bool::fromEnvironment(#C1, defaultValue: const core::bool::fromEnvironment(#C2)), value:#C19}
-  #C21 = eval const core::bool::fromEnvironment(#C1) ?{core::Object} #C19 : #C8
-  #C22 = eval (const core::bool::fromEnvironment(#C1) ?{core::Object} #C19 : #C8) is{ForNonNullableByDefault} core::int ?{core::bool} #C8 : #C13
-  #C23 = <Null>[#C9]
-  #C24 = <core::int*>[#C19]
-  #C25 = <core::int*>{#C19}
-  #C26 = <core::int*, core::int*>{#C19:#C19)
-  #C27 = <core::List<core::int*>*>[#C24]
-  #C28 = <core::Set<core::int*>*>{#C25}
-  #C29 = <core::Map<core::int*, core::int*>*, core::int*>{#C26:#C19)
-  #C30 = <core::int*, core::Map<core::int*, core::int*>*>{#C19:#C26)
-  #C31 = eval const _in::Symbol::•(const core::String::fromEnvironment(#C1))
-  #C32 = #42
-  #C33 = "x"
-  #C34 = eval const core::bool::fromEnvironment(#C33) ?{self::Class<self::B>?} #C9 : self::Class<self::B*>{(self::C{}) as{ForNonNullableByDefault} self::B*}
-  #C35 = eval const core::bool::fromEnvironment(#C33) ?{self::Subclass<self::B>?} #C9 : self::Subclass<self::B*>{(self::C{}) as{ForNonNullableByDefault} self::B*}
-  #C36 = eval const core::bool::fromEnvironment(#C33) ?{self::Class<self::A>?} #C9 : self::Class<self::A*>{self::A{}}
-  #C37 = eval const core::bool::fromEnvironment(#C33) ?{self::Class<self::B>?} #C9 : self::Class<self::B*>{(self::B{}) as{ForNonNullableByDefault} self::B*}
-  #C38 = eval const core::bool::fromEnvironment(#C33) ?{self::Subclass<self::A>?} #C9 : self::Subclass<self::A*>{(self::A{}) as{ForNonNullableByDefault} self::A*}
-  #C39 = eval const core::bool::fromEnvironment(#C33) ?{self::Subclass<self::B>?} #C9 : self::Subclass<self::B*>{(self::B{}) as{ForNonNullableByDefault} self::B*}
-  #C40 = TypeLiteralConstant((core::int*, {named: core::int*}) →* core::int*)
-  #C41 = static-tearoff self::procedure
-  #C42 = self::ConstClassWithF {foo:#C41}
-  #C43 = eval const core::bool::fromEnvironment(#C1)
-  #C44 = eval !const core::bool::fromEnvironment(#C1)
-  #C45 = eval const core::bool::fromEnvironment(#C2) ?{core::bool?} const core::bool::fromEnvironment(#C1) : #C9
-  #C46 = eval (const core::bool::fromEnvironment(#C2) ?{core::bool?} const core::bool::fromEnvironment(#C1) : #C9)!
-  #C47 = eval const core::bool::fromEnvironment(#C33) ?{self::Class<self::B>?} #C9 : self::Class<self::B*>{(self::C{}) as{ForNonNullableByDefault} self::B*}
-  #C48 = eval const core::bool::fromEnvironment(#C33) ?{self::Subclass<self::B>?} #C9 : self::Subclass<self::B*>{(self::C{}) as{ForNonNullableByDefault} self::B*}
-  #C49 = eval const core::bool::fromEnvironment(#C33) ?{self::Class<self::A>?} #C9 : self::Class<self::A*>{self::A{}}
-  #C50 = eval const core::bool::fromEnvironment(#C33) ?{self::Class<self::B>?} #C9 : self::Class<self::B*>{(self::B{}) as{ForNonNullableByDefault} self::B*}
-  #C51 = eval const core::bool::fromEnvironment(#C33) ?{self::Subclass<self::A>?} #C9 : self::Subclass<self::A*>{(self::A{}) as{ForNonNullableByDefault} self::A*}
-  #C52 = eval const core::bool::fromEnvironment(#C33) ?{self::Subclass<self::B>?} #C9 : self::Subclass<self::B*>{(self::B{}) as{ForNonNullableByDefault} self::B*}
-  #C53 = eval self::Foo<core::int*>{saved:const core::bool::fromEnvironment(#C1, defaultValue: const core::bool::fromEnvironment(#C2)), saved2:const core::bool::fromEnvironment(#C1, defaultValue: const core::bool::fromEnvironment(#C2)), initialized:const core::bool::fromEnvironment(#C1, defaultValue: const core::bool::fromEnvironment(#C2)), value:#C19}
+  #C8 = eval const core::bool::fromEnvironment(#C2)
+  #C9 = true
+  #C10 = null
+  #C11 = eval #C8 ?{core::bool?} #C9 : #C10
+  #C12 = eval #C11!
+  #C13 = eval const core::bool::fromEnvironment(#C2, defaultValue: #C12)
+  #C14 = eval !#C13
+  #C15 = false
+  #C16 = eval #C13 ?{core::bool} #C9 : #C15
+  #C17 = eval #C13 == null
+  #C18 = eval #C17 ?{core::bool} #C9 : #C13
+  #C19 = eval #C13 && #C9
+  #C20 = eval #C13 || #C9
+  #C21 = eval #C13 || #C15
+  #C22 = 42
+  #C23 = eval self::Foo<core::int*>{saved:#C6, saved2:#C5, initialized:#C4, value:#C22}
+  #C24 = eval const core::bool::fromEnvironment(#C1)
+  #C25 = eval #C24 ?{core::Object} #C22 : #C9
+  #C26 = eval #C25 is{ForNonNullableByDefault} core::int
+  #C27 = eval #C26 ?{core::bool} #C9 : #C15
+  #C28 = <Null>[#C10]
+  #C29 = <core::int*>[#C22]
+  #C30 = <core::int*>{#C22}
+  #C31 = <core::int*, core::int*>{#C22:#C22)
+  #C32 = <core::List<core::int*>*>[#C29]
+  #C33 = <core::Set<core::int*>*>{#C30}
+  #C34 = <core::Map<core::int*, core::int*>*, core::int*>{#C31:#C22)
+  #C35 = <core::int*, core::Map<core::int*, core::int*>*>{#C22:#C31)
+  #C36 = eval const core::String::fromEnvironment(#C1)
+  #C37 = eval const _in::Symbol::•(#C36)
+  #C38 = #42
+  #C39 = "x"
+  #C40 = eval const core::bool::fromEnvironment(#C39)
+  #C41 = eval self::C{}
+  #C42 = eval #C41 as{ForNonNullableByDefault} self::B*
+  #C43 = eval self::Class<self::B*>{#C42}
+  #C44 = eval #C40 ?{self::Class<self::B>?} #C10 : #C43
+  #C45 = eval const core::bool::fromEnvironment(#C39)
+  #C46 = eval self::C{}
+  #C47 = eval #C46 as{ForNonNullableByDefault} self::B*
+  #C48 = eval self::Subclass<self::B*>{#C47}
+  #C49 = eval #C45 ?{self::Subclass<self::B>?} #C10 : #C48
+  #C50 = eval const core::bool::fromEnvironment(#C39)
+  #C51 = eval self::A{}
+  #C52 = eval self::Class<self::A*>{#C51}
+  #C53 = eval #C50 ?{self::Class<self::A>?} #C10 : #C52
+  #C54 = eval const core::bool::fromEnvironment(#C39)
+  #C55 = eval self::B{}
+  #C56 = eval #C55 as{ForNonNullableByDefault} self::B*
+  #C57 = eval self::Class<self::B*>{#C56}
+  #C58 = eval #C54 ?{self::Class<self::B>?} #C10 : #C57
+  #C59 = eval const core::bool::fromEnvironment(#C39)
+  #C60 = eval self::A{}
+  #C61 = eval #C60 as{ForNonNullableByDefault} self::A*
+  #C62 = eval self::Subclass<self::A*>{#C61}
+  #C63 = eval #C59 ?{self::Subclass<self::A>?} #C10 : #C62
+  #C64 = eval const core::bool::fromEnvironment(#C39)
+  #C65 = eval self::B{}
+  #C66 = eval #C65 as{ForNonNullableByDefault} self::B*
+  #C67 = eval self::Subclass<self::B*>{#C66}
+  #C68 = eval #C64 ?{self::Subclass<self::B>?} #C10 : #C67
+  #C69 = TypeLiteralConstant((core::int*, {named: core::int*}) →* core::int*)
+  #C70 = static-tearoff self::procedure
+  #C71 = self::ConstClassWithF {foo:#C70}
+  #C72 = eval const core::bool::fromEnvironment(#C1)
+  #C73 = eval !#C72
+  #C74 = eval const core::bool::fromEnvironment(#C2)
+  #C75 = eval #C74 ?{core::bool?} #C72 : #C10
+  #C76 = eval #C75!
 }
 
 Extra constant evaluation status:
 Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///various.dart:32:27 -> BoolConstant(false)
 Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///various.dart:33:21 -> BoolConstant(false)
 Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///various.dart:28:13 -> BoolConstant(false)
-Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///various.dart:110:38 -> InstanceConstant(const Class<A*>{})
-Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///various.dart:111:38 -> InstanceConstant(const Class<B*>{})
-Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///various.dart:112:38 -> InstanceConstant(const Subclass<A*>{})
-Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///various.dart:113:38 -> InstanceConstant(const Subclass<B*>{})
-Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///various.dart:37:17 -> InstanceConstant(const Foo<int*>{Foo.saved: false, Foo.saved2: false, Foo.initialized: false, Foo.value: 42})
-Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///various.dart:37:17 -> InstanceConstant(const Foo<int*>{Foo.saved: false, Foo.saved2: false, Foo.initialized: false, Foo.value: 42})
-Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///various.dart:37:17 -> InstanceConstant(const Foo<int*>{Foo.saved: false, Foo.saved2: false, Foo.initialized: false, Foo.value: 42})
+Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///various.dart:137:9 -> InstanceConstant(const Class<A*>{})
+Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///various.dart:138:9 -> InstanceConstant(const Class<B*>{})
+Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///various.dart:139:9 -> InstanceConstant(const Subclass<A*>{})
+Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///various.dart:140:9 -> InstanceConstant(const Subclass<B*>{})
+Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///various.dart:141:9 -> InstanceConstant(const Foo<int*>{Foo.saved: false, Foo.saved2: false, Foo.initialized: false, Foo.value: 42})
+Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///various.dart:142:9 -> InstanceConstant(const Foo<int*>{Foo.saved: false, Foo.saved2: false, Foo.initialized: false, Foo.value: 42})
+Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///various.dart:143:9 -> InstanceConstant(const Foo<int*>{Foo.saved: false, Foo.saved2: false, Foo.initialized: false, Foo.value: 42})
 Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///various.dart:7:31 -> BoolConstant(false)
 Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///various.dart:8:30 -> BoolConstant(false)
 Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///various.dart:9:67 -> NullConstant(null)
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various_2.dart.weak.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various_2.dart.weak.expect
index d4686ed..31bfc1b 100644
--- a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various_2.dart.weak.expect
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various_2.dart.weak.expect
@@ -23,7 +23,7 @@
 static const field core::Set<core::int> setConcatenation = #C13;
 static const field core::Map<core::int, core::String> mapConcatenation = #C16;
 static const field core::bool objectTypeLiteralIdentical = #C19;
-static const field core::bool partialInstantiationIdentical = #C21;
+static const field core::bool partialInstantiationIdentical = #C25;
 static const field core::bool instanceIdentical = #C19;
 static const field core::bool instance2Identical = #C19;
 static const field core::bool functionTypeLiteralIdentical = #C19;
@@ -39,7 +39,7 @@
 static const field core::bool mapConcatenationIdentical = #C19;
 static method main() → dynamic {
   self::test(#C1, #C1);
-  self::test(#C3, #C22);
+  self::test(#C3, #C24);
   self::test(#C5, #C5);
   self::test(#C9, #C9);
   self::test(#C10, #C10);
@@ -50,7 +50,7 @@
   self::test(#C13, #C13);
   self::test(#C16, #C16);
   self::test(true, #C19);
-  self::test(true, #C21);
+  self::test(true, #C25);
   self::test(true, #C19);
   self::test(true, #C19);
   self::test(true, #C19);
@@ -81,8 +81,8 @@
     ;
 }
 static const field core::Type objectTypeLiteral = #C1;
-static const field (core::Object?, core::Object?) → core::bool c2 = #C23;
-static const field (core::int) → core::int partialInstantiation = #C22;
+static const field (core::Object?, core::Object?) → core::bool c2 = #C26;
+static const field (core::int) → core::int partialInstantiation = #C24;
 static const field var::Class<core::int> instance = #C5;
 static const field var::Class<dynamic> instance2 = #C8;
 static const field core::Type functionTypeLiteral = #C9;
@@ -121,10 +121,13 @@
   #C17 = null
   #C18 = <dynamic, dynamic>{#C7:#C15, #C17:#C7)
   #C19 = true
-  #C20 = static-tearoff var::id2
-  #C21 = eval const core::identical(#C3, const core::bool::fromEnvironment(#C15) ?{(core::int) → core::int} #C2<core::int> : #C20<core::int>)
-  #C22 = eval const core::bool::fromEnvironment(#C15) ?{(core::int) → core::int} #C2<core::int> : #C20<core::int>
-  #C23 = static-tearoff core::identical
+  #C20 = eval const core::bool::fromEnvironment(#C15)
+  #C21 = eval #C2<core::int>
+  #C22 = static-tearoff var::id2
+  #C23 = eval #C22<core::int>
+  #C24 = eval #C20 ?{(core::int) → core::int} #C21 : #C23
+  #C25 = eval const core::identical(#C3, #C24)
+  #C26 = static-tearoff core::identical
 }
 
 
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various_2.dart.weak.modular.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various_2.dart.weak.modular.expect
index d4686ed..31bfc1b 100644
--- a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various_2.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various_2.dart.weak.modular.expect
@@ -23,7 +23,7 @@
 static const field core::Set<core::int> setConcatenation = #C13;
 static const field core::Map<core::int, core::String> mapConcatenation = #C16;
 static const field core::bool objectTypeLiteralIdentical = #C19;
-static const field core::bool partialInstantiationIdentical = #C21;
+static const field core::bool partialInstantiationIdentical = #C25;
 static const field core::bool instanceIdentical = #C19;
 static const field core::bool instance2Identical = #C19;
 static const field core::bool functionTypeLiteralIdentical = #C19;
@@ -39,7 +39,7 @@
 static const field core::bool mapConcatenationIdentical = #C19;
 static method main() → dynamic {
   self::test(#C1, #C1);
-  self::test(#C3, #C22);
+  self::test(#C3, #C24);
   self::test(#C5, #C5);
   self::test(#C9, #C9);
   self::test(#C10, #C10);
@@ -50,7 +50,7 @@
   self::test(#C13, #C13);
   self::test(#C16, #C16);
   self::test(true, #C19);
-  self::test(true, #C21);
+  self::test(true, #C25);
   self::test(true, #C19);
   self::test(true, #C19);
   self::test(true, #C19);
@@ -81,8 +81,8 @@
     ;
 }
 static const field core::Type objectTypeLiteral = #C1;
-static const field (core::Object?, core::Object?) → core::bool c2 = #C23;
-static const field (core::int) → core::int partialInstantiation = #C22;
+static const field (core::Object?, core::Object?) → core::bool c2 = #C26;
+static const field (core::int) → core::int partialInstantiation = #C24;
 static const field var::Class<core::int> instance = #C5;
 static const field var::Class<dynamic> instance2 = #C8;
 static const field core::Type functionTypeLiteral = #C9;
@@ -121,10 +121,13 @@
   #C17 = null
   #C18 = <dynamic, dynamic>{#C7:#C15, #C17:#C7)
   #C19 = true
-  #C20 = static-tearoff var::id2
-  #C21 = eval const core::identical(#C3, const core::bool::fromEnvironment(#C15) ?{(core::int) → core::int} #C2<core::int> : #C20<core::int>)
-  #C22 = eval const core::bool::fromEnvironment(#C15) ?{(core::int) → core::int} #C2<core::int> : #C20<core::int>
-  #C23 = static-tearoff core::identical
+  #C20 = eval const core::bool::fromEnvironment(#C15)
+  #C21 = eval #C2<core::int>
+  #C22 = static-tearoff var::id2
+  #C23 = eval #C22<core::int>
+  #C24 = eval #C20 ?{(core::int) → core::int} #C21 : #C23
+  #C25 = eval const core::identical(#C3, #C24)
+  #C26 = static-tearoff core::identical
 }
 
 
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various_2.dart.weak.transformed.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various_2.dart.weak.transformed.expect
index 43ae6e3..3aec2ef 100644
--- a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various_2.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various_2.dart.weak.transformed.expect
@@ -23,7 +23,7 @@
 static const field core::Set<core::int> setConcatenation = #C13;
 static const field core::Map<core::int, core::String> mapConcatenation = #C16;
 static const field core::bool objectTypeLiteralIdentical = #C19;
-static const field core::bool partialInstantiationIdentical = #C21;
+static const field core::bool partialInstantiationIdentical = #C25;
 static const field core::bool instanceIdentical = #C19;
 static const field core::bool instance2Identical = #C19;
 static const field core::bool functionTypeLiteralIdentical = #C19;
@@ -39,7 +39,7 @@
 static const field core::bool mapConcatenationIdentical = #C19;
 static method main() → dynamic {
   self::test(#C1, #C1);
-  self::test(#C3, #C22);
+  self::test(#C3, #C24);
   self::test(#C5, #C5);
   self::test(#C9, #C9);
   self::test(#C10, #C10);
@@ -50,7 +50,7 @@
   self::test(#C13, #C13);
   self::test(#C16, #C16);
   self::test(true, #C19);
-  self::test(true, #C23);
+  self::test(true, #C25);
   self::test(true, #C19);
   self::test(true, #C19);
   self::test(true, #C19);
@@ -81,8 +81,8 @@
     ;
 }
 static const field core::Type objectTypeLiteral = #C1;
-static const field (core::Object?, core::Object?) → core::bool c2 = #C24;
-static const field (core::int) → core::int partialInstantiation = #C25;
+static const field (core::Object?, core::Object?) → core::bool c2 = #C26;
+static const field (core::int) → core::int partialInstantiation = #C24;
 static const field var::Class<core::int> instance = #C5;
 static const field var::Class<dynamic> instance2 = #C8;
 static const field core::Type functionTypeLiteral = #C9;
@@ -121,17 +121,18 @@
   #C17 = null
   #C18 = <dynamic, dynamic>{#C7:#C15, #C17:#C7)
   #C19 = true
-  #C20 = static-tearoff var::id2
-  #C21 = eval const core::identical(#C3, const core::bool::fromEnvironment(#C15) ?{(core::int) → core::int} #C2<core::int> : #C20<core::int>)
-  #C22 = eval const core::bool::fromEnvironment(#C15) ?{(core::int) → core::int} #C2<core::int> : #C20<core::int>
-  #C23 = eval const core::identical(#C3, const core::bool::fromEnvironment(#C15) ?{(core::int) → core::int} #C2<core::int> : #C20<core::int>)
-  #C24 = static-tearoff core::identical
-  #C25 = eval const core::bool::fromEnvironment(#C15) ?{(core::int) → core::int} #C2<core::int> : #C20<core::int>
+  #C20 = eval const core::bool::fromEnvironment(#C15)
+  #C21 = eval #C2<core::int>
+  #C22 = static-tearoff var::id2
+  #C23 = eval #C22<core::int>
+  #C24 = eval #C20 ?{(core::int) → core::int} #C21 : #C23
+  #C25 = eval const core::identical(#C3, #C24)
+  #C26 = static-tearoff core::identical
 }
 
 Extra constant evaluation status:
-Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///various_2.dart:15:28 -> InstantiationConstant(id2<int*>)
-Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///various_2.dart:37:5 -> BoolConstant(false)
+Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///various_2.dart:59:34 -> InstantiationConstant(id2<int*>)
+Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///various_2.dart:71:14 -> BoolConstant(false)
 Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///various_2.dart:37:5 -> BoolConstant(false)
 Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///various_2_lib.dart:20:39 -> InstantiationConstant(id2<int*>)
 Extra constant evaluation: evaluated: 41, effectively constant: 4
diff --git a/pkg/front_end/testcases/incremental/changing_modules.yaml b/pkg/front_end/testcases/incremental/changing_modules.yaml
index 534a0f4..e6638ae 100644
--- a/pkg/front_end/testcases/incremental/changing_modules.yaml
+++ b/pkg/front_end/testcases/incremental/changing_modules.yaml
@@ -22,8 +22,16 @@
       b() {
         a();
       }
-    example_0.1.0/.packages: |
-      example:.
+    example_0.1.0/.dart_tool/package_config.json: |
+      {
+        "configVersion": 2,
+        "packages": [
+          {
+            "name": "example",
+            "rootUri": ".."
+          }
+        ]
+      }
   example_0.1.1:
     example_0.1.1/b.dart: |
       // @dart=2.9
@@ -31,8 +39,16 @@
         print("Hello from v0.1.1");
       }
       bool example011 = true;
-    example_0.1.1/.packages: |
-      example:.
+    example_0.1.1/.dart_tool/package_config.json: |
+      {
+        "configVersion": 2,
+        "packages": [
+          {
+            "name": "example",
+            "rootUri": ".."
+          }
+        ]
+      }
   foo_1:
     foo_1/foo.dart: |
       // @dart=2.9
@@ -42,9 +58,20 @@
         b();
       }
       bool foo1 = true;
-    foo_1/.packages: |
-      foo:.
-      example:../example_0.1.0
+    foo_1/.dart_tool/package_config.json: |
+      {
+        "configVersion": 2,
+        "packages": [
+          {
+            "name": "foo",
+            "rootUri": ".."
+          },
+          {
+            "name": "example",
+            "rootUri": "../../example_0.1.0"
+          }
+        ]
+      }
   foo_2:
     foo_2/foo.dart: |
       // @dart=2.9
@@ -68,9 +95,20 @@
       baz() {
         print("hello from baz");
       }
-    foo_2/.packages: |
-      foo:.
-      example:../example_0.1.1
+    foo_2/.dart_tool/package_config.json: |
+      {
+        "configVersion": 2,
+        "packages": [
+          {
+            "name": "foo",
+            "rootUri": ".."
+          },
+          {
+            "name": "example",
+            "rootUri": "../../example_0.1.1"
+          }
+        ]
+      }
 worlds:
   - entry: main.dart
     fromComponent: true
@@ -82,7 +120,16 @@
           print("hello");
           b();
         }
-      .packages: example:example_0.1.0
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "example",
+              "rootUri": "../example_0.1.0"
+            }
+          ]
+        }
     modules:
       - example_0.1.0
     expectedLibraryCount: 3
@@ -108,9 +155,20 @@
           print("hello");
           foo();
         }
-      .packages: |
-        example:example_0.1.0
-        foo:foo_1
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "example",
+              "rootUri": "../example_0.1.0"
+            },
+            {
+              "name": "foo",
+              "rootUri": "../foo_1"
+            }
+          ]
+        }
     modules:
       - example_0.1.0
       - foo_1
@@ -139,9 +197,20 @@
           print("hello");
           foo();
         }
-      .packages: |
-        example:example_0.1.1
-        foo:foo_2
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "example",
+              "rootUri": "../example_0.1.1"
+            },
+            {
+              "name": "foo",
+              "rootUri": "../foo_2"
+            }
+          ]
+        }
     modules:
       - example_0.1.1
       - foo_2
diff --git a/pkg/front_end/testcases/incremental/changing_modules_10.yaml b/pkg/front_end/testcases/incremental/changing_modules_10.yaml
index 1cdaafd..e81be38 100644
--- a/pkg/front_end/testcases/incremental/changing_modules_10.yaml
+++ b/pkg/front_end/testcases/incremental/changing_modules_10.yaml
@@ -18,8 +18,16 @@
     module/b.dart: |
       // @dart=2.9
       class B { }
-    module/.packages: |
-      module:.
+    module/.dart_tool/package_config.json: |
+      {
+        "configVersion": 2,
+        "packages": [
+          {
+            "name": "module",
+            "rootUri": ".."
+          }
+        ]
+      }
 worlds:
   - entry: main.dart
     fromComponent: true
@@ -28,8 +36,16 @@
         // @dart=2.9
         import 'package:module/a.dart';
         class Foo extends A {}
-      .packages: |
-        module:module
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "module",
+              "rootUri": "../module"
+            }
+          ]
+        }
     modules:
       - module
     expectedLibraryCount: 3
diff --git a/pkg/front_end/testcases/incremental/changing_modules_11.yaml b/pkg/front_end/testcases/incremental/changing_modules_11.yaml
index aedd5d0..e433d98 100644
--- a/pkg/front_end/testcases/incremental/changing_modules_11.yaml
+++ b/pkg/front_end/testcases/incremental/changing_modules_11.yaml
@@ -18,8 +18,16 @@
     module/b.dart: |
       // @dart=2.9
       class B { }
-    module/.packages: |
-      module:.
+    module/.dart_tool/package_config.json: |
+      {
+        "configVersion": 2,
+        "packages": [
+          {
+            "name": "module",
+            "rootUri": ".."
+          }
+        ]
+      }
 worlds:
   - entry: main.dart
     fromComponent: true
@@ -28,8 +36,16 @@
         // @dart=2.9
         import 'package:module/a.dart';
         class Foo extends A {}
-      .packages: |
-        module:module
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "module",
+              "rootUri": "../module"
+            }
+          ]
+        }
     modules:
       - module
     expectedLibraryCount: 3
diff --git a/pkg/front_end/testcases/incremental/changing_modules_12.yaml b/pkg/front_end/testcases/incremental/changing_modules_12.yaml
index c8f1cae..082cc0a 100644
--- a/pkg/front_end/testcases/incremental/changing_modules_12.yaml
+++ b/pkg/front_end/testcases/incremental/changing_modules_12.yaml
@@ -24,8 +24,16 @@
       // @dart=2.9
       import 'package:module/c.dart';
       class D { }
-    module/.packages: |
-      module:.
+    module/.dart_tool/package_config.json: |
+      {
+        "configVersion": 2,
+        "packages": [
+          {
+            "name": "module",
+            "rootUri": ".."
+          }
+        ]
+      }
 worlds:
   - entry: main.dart
     fromComponent: true
@@ -33,8 +41,16 @@
       main.dart: |
         // @dart=2.9
         class Foo {}
-      .packages: |
-        module:module
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "module",
+              "rootUri": "../module"
+            }
+          ]
+        }
     modules:
       - module
     expectedLibraryCount: 1
diff --git a/pkg/front_end/testcases/incremental/changing_modules_13.yaml b/pkg/front_end/testcases/incremental/changing_modules_13.yaml
index 5d042e9..d92b7ca 100644
--- a/pkg/front_end/testcases/incremental/changing_modules_13.yaml
+++ b/pkg/front_end/testcases/incremental/changing_modules_13.yaml
@@ -14,8 +14,16 @@
       class B { }
       class C { }
       class AB = A with B;
-    module/.packages: |
-      module:.
+    module/.dart_tool/package_config.json: |
+      {
+        "configVersion": 2,
+        "packages": [
+          {
+            "name": "module",
+            "rootUri": ".."
+          }
+        ]
+      }
 worlds:
   - entry: main.dart
     fromComponent: true
@@ -24,8 +32,16 @@
         // @dart=2.9
         import "package:module/a.dart";
         class ABC = AB with C;
-      .packages: |
-        module:module
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "module",
+              "rootUri": "../module"
+            }
+          ]
+        }
     modules:
       - module
     expectedLibraryCount: 2
diff --git a/pkg/front_end/testcases/incremental/changing_modules_14.yaml b/pkg/front_end/testcases/incremental/changing_modules_14.yaml
index 641accf..77d4395 100644
--- a/pkg/front_end/testcases/incremental/changing_modules_14.yaml
+++ b/pkg/front_end/testcases/incremental/changing_modules_14.yaml
@@ -12,16 +12,37 @@
 modules:
   moduleC:
     moduleC/lib.dart: |
+      // @dart=2.9
       const constC = ['value_c'];
-    moduleC/.packages: |
-      moduleC:.
+    moduleC/.dart_tool/package_config.json: |
+      {
+        "configVersion": 2,
+        "packages": [
+          {
+            "name": "moduleC",
+            "rootUri": ".."
+          }
+        ]
+      }
   moduleB:
     moduleB/lib.dart: |
+      // @dart=2.9
       import "package:moduleC/lib.dart";
       const constB = ['value_b', constC];
-    moduleB/.packages: |
-      moduleB:.
-      moduleC:../moduleC
+    moduleB/.dart_tool/package_config.json: |
+      {
+        "configVersion": 2,
+        "packages": [
+          {
+            "name": "moduleB",
+            "rootUri": ".."
+          },
+          {
+            "name": "moduleC",
+            "rootUri": "../../moduleC"
+          }
+        ]
+      }
 worlds:
   - entry: main.dart
     fromComponent: true
@@ -33,9 +54,20 @@
         const constLib = constFromLib;
       lib.dart: |
         const constFromLib = 42;
-      .packages: |
-        moduleB:moduleB
-        moduleC:moduleC
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "moduleB",
+              "rootUri": "../moduleB"
+            },
+            {
+              "name": "moduleC",
+              "rootUri": "../moduleC"
+            }
+          ]
+        }
     modules:
       - moduleB
       - moduleC
diff --git a/pkg/front_end/testcases/incremental/changing_modules_15.yaml b/pkg/front_end/testcases/incremental/changing_modules_15.yaml
index d0753b8..f1c4102 100644
--- a/pkg/front_end/testcases/incremental/changing_modules_15.yaml
+++ b/pkg/front_end/testcases/incremental/changing_modules_15.yaml
@@ -12,16 +12,37 @@
 modules:
   moduleC:
     moduleC/lib.dart: |
+      // @dart=2.9
       const constC = true;
-    moduleC/.packages: |
-      moduleC:.
+    moduleC/.dart_tool/package_config.json: |
+      {
+        "configVersion": 2,
+        "packages": [
+          {
+            "name": "moduleC",
+            "rootUri": ".."
+          }
+        ]
+      }
   moduleB:
     moduleB/lib.dart: |
+      // @dart=2.9
       import "package:moduleC/lib.dart";
       const constB = false || constC;
-    moduleB/.packages: |
-      moduleB:.
-      moduleC:../moduleC
+    moduleB/.dart_tool/package_config.json: |
+      {
+        "configVersion": 2,
+        "packages": [
+          {
+            "name": "moduleB",
+            "rootUri": ".."
+          },
+          {
+            "name": "moduleC",
+            "rootUri": "../../moduleC"
+          }
+        ]
+      }
 worlds:
   - entry: main.dart
     fromComponent: true
@@ -29,9 +50,20 @@
       main.dart: |
         import 'package:moduleB/lib.dart';
         const constA = true && constB;
-      .packages: |
-        moduleB:moduleB
-        moduleC:moduleC
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "moduleB",
+              "rootUri": "../moduleB"
+            },
+            {
+              "name": "moduleC",
+              "rootUri": "../moduleC"
+            }
+          ]
+        }
     modules:
       - moduleB
       - moduleC
diff --git a/pkg/front_end/testcases/incremental/changing_modules_2.yaml b/pkg/front_end/testcases/incremental/changing_modules_2.yaml
index b8db340..a73afd8 100644
--- a/pkg/front_end/testcases/incremental/changing_modules_2.yaml
+++ b/pkg/front_end/testcases/incremental/changing_modules_2.yaml
@@ -12,22 +12,50 @@
       // @dart=2.9
       a() {}
       var example = true;
-    example_1/.packages: |
-      example:.
+    example_1/.dart_tool/package_config.json: |
+      {
+        "configVersion": 2,
+        "packages": [
+          {
+            "name": "example",
+            "rootUri": ".."
+          }
+        ]
+      }
   example_2:
     example_2/a.dart: |
       // @dart=2.9
       a() {}
       var example = true;
-    example_2/.packages: |
-      example:.
+    example_2/.dart_tool/package_config.json: |
+      {
+        "configVersion": 2,
+        "packages": [
+          {
+            "name": "example",
+            "rootUri": ".."
+          }
+        ]
+      }
   foo:
     foo/foo.dart: |
+      // @dart=2.9
       export "package:example/a.dart";
       var foo = true;
-    foo/.packages: |
-      foo:.
-      example:../example_1
+    foo/.dart_tool/package_config.json: |
+      {
+        "configVersion": 2,
+        "packages": [
+          {
+            "name": "foo",
+            "rootUri": ".."
+          },
+          {
+            "name": "example",
+            "rootUri": "../../example_1"
+          }
+        ]
+      }
 worlds:
   - entry: main.dart
     fromComponent: true
@@ -38,9 +66,20 @@
           print("hello");
           a();
         }
-      .packages: |
-        foo:foo
-        example:example_1
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "foo",
+              "rootUri": "../foo"
+            },
+            {
+              "name": "example",
+              "rootUri": "../../example_1"
+            }
+          ]
+        }
     modules:
       - foo
       - example_1
@@ -60,9 +99,20 @@
     worldType: updated
     expectInitializeFromDill: false
     sources:
-      .packages: |
-        foo:foo
-        example:example_2
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "foo",
+              "rootUri": "../foo"
+            },
+            {
+              "name": "example",
+              "rootUri": "../../example_2"
+            }
+          ]
+        }
     modules:
       - foo
       - example_2
diff --git a/pkg/front_end/testcases/incremental/changing_modules_3.yaml b/pkg/front_end/testcases/incremental/changing_modules_3.yaml
index fdfb2a6..b8e864b 100644
--- a/pkg/front_end/testcases/incremental/changing_modules_3.yaml
+++ b/pkg/front_end/testcases/incremental/changing_modules_3.yaml
@@ -11,14 +11,30 @@
     foo/foo.dart: |
       // @dart=2.9
       var foo = true;
-    foo/.packages: |
-      foo:.
+    foo/.dart_tool/package_config.json: |
+      {
+        "configVersion": 2,
+        "packages": [
+          {
+            "name": "foo",
+            "rootUri": ".."
+          }
+        ]
+      }
   foo2:
     foo2/foo.dart: |
       // @dart=2.9
       var foo2 = true;
-    foo2/.packages: |
-      foo:.
+    foo2/.dart_tool/package_config.json: |
+      {
+        "configVersion": 2,
+        "packages": [
+          {
+            "name": "foo",
+            "rootUri": ".."
+          }
+        ]
+      }
 worlds:
   - entry: main.dart
     fromComponent: true
@@ -30,8 +46,16 @@
         main() {
           print(foo);
         }
-      .packages: |
-        foo:foo
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "foo",
+              "rootUri": "../foo"
+            }
+          ]
+        }
     modules:
       - foo
     expectedLibraryCount: 2
@@ -55,8 +79,16 @@
         main() {
           print(foo2);
         }
-      .packages: |
-        foo:foo2
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "foo",
+              "rootUri": "../foo2"
+            }
+          ]
+        }
     modules:
       - foo2
     expectedLibraryCount: 2
diff --git a/pkg/front_end/testcases/incremental/changing_modules_4.yaml b/pkg/front_end/testcases/incremental/changing_modules_4.yaml
index 98ba2fa..3e155a2 100644
--- a/pkg/front_end/testcases/incremental/changing_modules_4.yaml
+++ b/pkg/front_end/testcases/incremental/changing_modules_4.yaml
@@ -19,10 +19,24 @@
       class A2 extends A3 {
         int bar = 42;
       }
-    moduleB/.packages: |
-      moduleB:.
-      moduleC:../moduleC
-      moduleD:../moduleD
+    moduleB/.dart_tool/package_config.json: |
+      {
+        "configVersion": 2,
+        "packages": [
+          {
+            "name": "moduleB",
+            "rootUri": ".."
+          },
+          {
+            "name": "moduleC",
+            "rootUri": "../../moduleC"
+          },
+          {
+            "name": "moduleD",
+            "rootUri": "../../moduleD"
+          }
+        ]
+      }
   moduleC:
     moduleC/c.dart: |
       // @dart=2.9
@@ -34,15 +48,34 @@
       class A3 {
         int foo = 42;
       }
-    moduleC/.packages: |
-      moduleC:.
-      moduleD:../moduleD
+    moduleC/.dart_tool/package_config.json: |
+      {
+        "configVersion": 2,
+        "packages": [
+          {
+            "name": "moduleC",
+            "rootUri": ".."
+          },
+          {
+            "name": "moduleD",
+            "rootUri": "../../moduleD"
+          }
+        ]
+      }
   moduleD:
     moduleD/d.dart: |
       // @dart=2.9
       String baz3 = "baz3";
-    moduleD/.packages: |
-      moduleD:.
+    moduleD/.dart_tool/package_config.json: |
+      {
+        "configVersion": 2,
+        "packages": [
+          {
+            "name": "moduleD",
+            "rootUri": ".."
+          }
+        ]
+      }
 worlds:
   - entry: a.dart
     fromComponent: true
@@ -53,10 +86,24 @@
 
         String foo = baz;
         var x = mya2.bar;
-      .packages: |
-        moduleB:moduleB
-        moduleC:moduleC
-        moduleD:moduleD
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "moduleB",
+              "rootUri": "../moduleB"
+            },
+            {
+              "name": "moduleC",
+              "rootUri": "../moduleC"
+            },
+            {
+              "name": "moduleD",
+              "rootUri": "../moduleD"
+            }
+          ]
+        }
     modules:
       - moduleB
       - moduleC
diff --git a/pkg/front_end/testcases/incremental/changing_modules_5.yaml b/pkg/front_end/testcases/incremental/changing_modules_5.yaml
index b044f03..4cd4a5f 100644
--- a/pkg/front_end/testcases/incremental/changing_modules_5.yaml
+++ b/pkg/front_end/testcases/incremental/changing_modules_5.yaml
@@ -20,10 +20,24 @@
       class A2 extends A3 {
         int bar = 42;
       }
-    moduleB/.packages: |
-      moduleB:.
-      moduleC:../moduleC
-      moduleD:../moduleD
+    moduleB/.dart_tool/package_config.json: |
+      {
+        "configVersion": 2,
+        "packages": [
+          {
+            "name": "moduleB",
+            "rootUri": ".."
+          },
+          {
+            "name": "moduleC",
+            "rootUri": "../../moduleC"
+          },
+          {
+            "name": "moduleD",
+            "rootUri": "../../moduleD"
+          }
+        ]
+      }
   moduleC:
     moduleC/c.dart: |
       // @dart=2.9
@@ -35,15 +49,34 @@
       class A3 {
         int foo = 42;
       }
-    moduleC/.packages: |
-      moduleC:.
-      moduleD:../moduleD
+    moduleC/.dart_tool/package_config.json: |
+      {
+        "configVersion": 2,
+        "packages": [
+          {
+            "name": "moduleC",
+            "rootUri": ".."
+          },
+          {
+            "name": "moduleD",
+            "rootUri": "../../moduleD"
+          }
+        ]
+      }
   moduleD:
     moduleD/d.dart: |
       // @dart=2.9
       String baz3 = "baz3";
-    moduleD/.packages: |
-      moduleD:.
+    moduleD/.dart_tool/package_config.json: |
+      {
+        "configVersion": 2,
+        "packages": [
+          {
+            "name": "moduleD",
+            "rootUri": ".."
+          }
+        ]
+      }
 worlds:
   - entry: a.dart
     fromComponent: true
@@ -54,10 +87,24 @@
 
         var foo = bVar;
         var foo2 = bVarFromC;
-      .packages: |
-        moduleB:moduleB
-        moduleC:moduleC
-        moduleD:moduleD
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "moduleB",
+              "rootUri": "../moduleB"
+            },
+            {
+              "name": "moduleC",
+              "rootUri": "../moduleC"
+            },
+            {
+              "name": "moduleD",
+              "rootUri": "../moduleD"
+            }
+          ]
+        }
     modules:
       - moduleB
       - moduleC
diff --git a/pkg/front_end/testcases/incremental/changing_modules_6.yaml b/pkg/front_end/testcases/incremental/changing_modules_6.yaml
index c66ca3b..ee9094b 100644
--- a/pkg/front_end/testcases/incremental/changing_modules_6.yaml
+++ b/pkg/front_end/testcases/incremental/changing_modules_6.yaml
@@ -20,10 +20,24 @@
       class A2 extends A3 {
         int bar = 42;
       }
-    moduleB/.packages: |
-      moduleB:.
-      moduleC:../moduleC
-      moduleD:../moduleD
+    moduleB/.dart_tool/package_config.json: |
+      {
+        "configVersion": 2,
+        "packages": [
+          {
+            "name": "moduleB",
+            "rootUri": ".."
+          },
+          {
+            "name": "moduleC",
+            "rootUri": "../../moduleC"
+          },
+          {
+            "name": "moduleD",
+            "rootUri": "../../moduleD"
+          }
+        ]
+      }
   moduleC:
     moduleC/c.dart: |
       // @dart=2.9
@@ -35,15 +49,34 @@
       class A3 {
         int foo = 42;
       }
-    moduleC/.packages: |
-      moduleC:.
-      moduleD:../moduleD
+    moduleC/.dart_tool/package_config.json: |
+      {
+        "configVersion": 2,
+        "packages": [
+          {
+            "name": "moduleC",
+            "rootUri": ".."
+          },
+          {
+            "name": "moduleD",
+            "rootUri": "../../moduleD"
+          }
+        ]
+      }
   moduleD:
     moduleD/d.dart: |
       // @dart=2.9
       String baz3 = "baz3";
-    moduleD/.packages: |
-      moduleD:.
+    moduleD/.dart_tool/package_config.json: |
+      {
+        "configVersion": 2,
+        "packages": [
+          {
+            "name": "moduleD",
+            "rootUri": ".."
+          }
+        ]
+      }
 worlds:
   - entry: a.dart
     fromComponent: true
@@ -58,10 +91,24 @@
         class A1 extends A2 {
           String fooMethod() => "42!";
         }
-      .packages: |
-        moduleB:moduleB
-        moduleC:moduleC
-        moduleD:moduleD
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "moduleB",
+              "rootUri": "../moduleB"
+            },
+            {
+              "name": "moduleC",
+              "rootUri": "../moduleC"
+            },
+            {
+              "name": "moduleD",
+              "rootUri": "../moduleD"
+            }
+          ]
+        }
     modules:
       - moduleB
       - moduleC
diff --git a/pkg/front_end/testcases/incremental/changing_modules_7.yaml b/pkg/front_end/testcases/incremental/changing_modules_7.yaml
index f718f14..28632d3 100644
--- a/pkg/front_end/testcases/incremental/changing_modules_7.yaml
+++ b/pkg/front_end/testcases/incremental/changing_modules_7.yaml
@@ -36,9 +36,18 @@
         String str() {}
       }
     module/lib4.dart: |
+      // @dart=2.9
       class Class4 {}
-    module/.packages: |
-      module:.
+    module/.dart_tool/package_config.json: |
+      {
+        "configVersion": 2,
+        "packages": [
+          {
+            "name": "module",
+            "rootUri": ".."
+          }
+        ]
+      }
 worlds:
   - entry: compileme.dart
     fromComponent: true
@@ -60,8 +69,16 @@
             return class1;
           }
         }
-      .packages: |
-        module:module
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "module",
+              "rootUri": "../module"
+            }
+          ]
+        }
     modules:
       - module
     expectedLibraryCount: 5
@@ -105,8 +122,16 @@
             return class1;
           }
         }
-      .packages: |
-        module:module
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "module",
+              "rootUri": "../module"
+            }
+          ]
+        }
     modules:
       - module
     expectedLibraryCount: 5
diff --git a/pkg/front_end/testcases/incremental/changing_modules_8.yaml b/pkg/front_end/testcases/incremental/changing_modules_8.yaml
index 42de9b4..118080c 100644
--- a/pkg/front_end/testcases/incremental/changing_modules_8.yaml
+++ b/pkg/front_end/testcases/incremental/changing_modules_8.yaml
@@ -31,8 +31,16 @@
       class XIdentityHashSet implements XLinkedHashSet {
         XIdentityHashSet();
       }
-    module/.packages: |
-      module:.
+    module/.dart_tool/package_config.json: |
+      {
+        "configVersion": 2,
+        "packages": [
+          {
+            "name": "module",
+            "rootUri": ".."
+          }
+        ]
+      }
 worlds:
   - entry: compileme.dart
     fromComponent: true
@@ -44,8 +52,16 @@
         main() {
           XSet history = new XSet.identity();
         }
-      .packages: |
-        module:module
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "module",
+              "rootUri": "../module"
+            }
+          ]
+        }
     modules:
       - module
     expectedLibraryCount: 4
diff --git a/pkg/front_end/testcases/incremental/changing_modules_9.yaml b/pkg/front_end/testcases/incremental/changing_modules_9.yaml
index 85ef80a..e267a81 100644
--- a/pkg/front_end/testcases/incremental/changing_modules_9.yaml
+++ b/pkg/front_end/testcases/incremental/changing_modules_9.yaml
@@ -14,17 +14,36 @@
       export 'package:moduleB/b.dart';
 
       class A { }
-    moduleA/.packages: |
-      moduleA:.
-      moduleB:../moduleB
+    moduleA/.dart_tool/package_config.json: |
+      {
+        "configVersion": 2,
+        "packages": [
+          {
+            "name": "moduleA",
+            "rootUri": ".."
+          },
+          {
+            "name": "moduleB",
+            "rootUri": "../../moduleB"
+          }
+        ]
+      }
   moduleB:
     moduleB/b.dart: |
       // @dart=2.9
       class B {
         int foo = 42;
       }
-    moduleB/.packages: |
-      moduleB:.
+    moduleB/.dart_tool/package_config.json: |
+      {
+        "configVersion": 2,
+        "packages": [
+          {
+            "name": "moduleB",
+            "rootUri": ".."
+          }
+        ]
+      }
 worlds:
   - entry: main.dart
     fromComponent: true
@@ -36,9 +55,20 @@
         main() {
           A a = new A();
         }
-      .packages: |
-        moduleA:moduleA
-        moduleB:moduleB
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "moduleA",
+              "rootUri": "../moduleA"
+            },
+            {
+              "name": "moduleB",
+              "rootUri": "../moduleB"
+            }
+          ]
+        }
     modules:
       - moduleA
       - moduleB
diff --git a/pkg/front_end/testcases/incremental/cleans_up_uritosource_unreferenced_package_library.yaml b/pkg/front_end/testcases/incremental/cleans_up_uritosource_unreferenced_package_library.yaml
index 4e07d25..ea47771 100644
--- a/pkg/front_end/testcases/incremental/cleans_up_uritosource_unreferenced_package_library.yaml
+++ b/pkg/front_end/testcases/incremental/cleans_up_uritosource_unreferenced_package_library.yaml
@@ -2,16 +2,25 @@
 # for details. All rights reserved. Use of this source code is governed by a
 # BSD-style license that can be found in the LICENSE.md file.
 
-# Compile an application with a package. Update the world so that the .packages
-# no longer reference the package (and the source no longe ruse it) and
-# recompile. The now no longer referenced package library should also have been
-# removed from the uri to sources.
+# Compile an application with a package. Update the world so that the
+# .dart_tool/package_config.json no longer reference the package (and the source
+# no longer use it) and recompile. The now no longer referenced package library
+# should also have been removed from the uri to sources.
 
 type: newworld
 worlds:
   - entry: main.dart
     sources:
-      .packages: example:pkg/example
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "example",
+              "rootUri": "../pkg/example"
+            }
+          ]
+        }
       main.dart: |
         // @dart=2.9
         import "package:example/b.dart";
@@ -24,10 +33,14 @@
     worldType: updated
     invalidate:
       - main.dart
-      - .packages
+      - .dart_tool/package_config.json
     expectInitializeFromDill: false
     sources:
-      .packages: 
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": []
+        }
       main.dart: |
         // @dart=2.9
         main() {}
diff --git a/pkg/front_end/testcases/incremental/disappearing_package.yaml b/pkg/front_end/testcases/incremental/disappearing_package.yaml
index fe8d157..5349d99 100644
--- a/pkg/front_end/testcases/incremental/disappearing_package.yaml
+++ b/pkg/front_end/testcases/incremental/disappearing_package.yaml
@@ -3,8 +3,8 @@
 # BSD-style license that can be found in the LICENSE.md file.
 
 # Compile an application with a package and use it.
-# Then remove the package from .packages and remove any use of it.
-# The package is still included in the dill file we initialize from,
+# Then remove the package from .dart_tool/package_config.json and remove any use
+# of it. The package is still included in the dill file we initialize from,
 # but shouldn't cause trouble, nor be included in the output.
 
 type: newworld
@@ -23,7 +23,16 @@
         b() {
           print("b");
         }
-      .packages: example:pkg/example
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "example",
+              "rootUri": "../pkg/example"
+            }
+          ]
+        }
     expectedLibraryCount: 2
   - entry: main.dart
     # TODO(jensj): For now we don't initialize from dill when a package was
@@ -37,5 +46,9 @@
         main() {
           print("hello");
         }
-      .packages:
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": []
+        }
     expectedLibraryCount: 1
diff --git a/pkg/front_end/testcases/incremental/entry_not_package_url_main.yaml b/pkg/front_end/testcases/incremental/entry_not_package_url_main.yaml
index 4260828..1f881a7 100644
--- a/pkg/front_end/testcases/incremental/entry_not_package_url_main.yaml
+++ b/pkg/front_end/testcases/incremental/entry_not_package_url_main.yaml
@@ -13,7 +13,16 @@
         // @dart=2.9
         main() {
         }
-      .packages: untitled:/
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "untitled",
+              "rootUri": "/"
+            }
+          ]
+        }
     expectedLibraryCount: 1
     errors: false
     warnings: false
diff --git a/pkg/front_end/testcases/incremental/entry_not_package_url_main_with_errors.yaml b/pkg/front_end/testcases/incremental/entry_not_package_url_main_with_errors.yaml
index e7b80f2..4c8beb6 100644
--- a/pkg/front_end/testcases/incremental/entry_not_package_url_main_with_errors.yaml
+++ b/pkg/front_end/testcases/incremental/entry_not_package_url_main_with_errors.yaml
@@ -15,7 +15,16 @@
         main() {
           asdf;
         }
-      .packages: untitled:/
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "untitled",
+              "rootUri": "/"
+            }
+          ]
+        }
     expectedLibraryCount: 1
     errors: true
     warnings: false
diff --git a/pkg/front_end/testcases/incremental/entry_not_package_url_no_main.yaml b/pkg/front_end/testcases/incremental/entry_not_package_url_no_main.yaml
index 72eac40..a070cbb 100644
--- a/pkg/front_end/testcases/incremental/entry_not_package_url_no_main.yaml
+++ b/pkg/front_end/testcases/incremental/entry_not_package_url_no_main.yaml
@@ -12,7 +12,16 @@
       main.dart: |
         // @dart=2.9
         notMain() {}
-      .packages: untitled:/
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "untitled",
+              "rootUri": "/"
+            }
+          ]
+        }
     expectedLibraryCount: 1
     errors: false
     warnings: false
diff --git a/pkg/front_end/testcases/incremental/flutter_widget_transform.yaml b/pkg/front_end/testcases/incremental/flutter_widget_transform.yaml
index 0072fcb..01cc15f 100644
--- a/pkg/front_end/testcases/incremental/flutter_widget_transform.yaml
+++ b/pkg/front_end/testcases/incremental/flutter_widget_transform.yaml
@@ -51,8 +51,16 @@
           /// Optional locations of the parameters of the member at this location.
           final List<_Location> parameterLocations;
         }
-      .packages: |
-        flutter:flutter/lib
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "flutter",
+              "rootUri": "../flutter/lib"
+            }
+          ]
+        }
     expectedLibraryCount: 3
   - entry: main.dart
     worldType: updated
diff --git a/pkg/front_end/testcases/incremental/incremental_serialization_1.yaml b/pkg/front_end/testcases/incremental/incremental_serialization_1.yaml
index fa1166f..3e63911 100644
--- a/pkg/front_end/testcases/incremental/incremental_serialization_1.yaml
+++ b/pkg/front_end/testcases/incremental/incremental_serialization_1.yaml
@@ -34,9 +34,20 @@
         lib3() {
           return lib1();
         }
-      .packages: |
-        package1:package1
-        package2:package2
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "package1",
+              "rootUri": "../package1"
+            },
+            {
+              "name": "package2",
+              "rootUri": "../package2"
+            }
+          ]
+        }
     expectedLibraryCount: 4
     incrementalSerializationDoesWork: true
   - entry: main.dart
diff --git a/pkg/front_end/testcases/incremental/incremental_serialization_2.yaml b/pkg/front_end/testcases/incremental/incremental_serialization_2.yaml
index 997b737..15fb17a 100644
--- a/pkg/front_end/testcases/incremental/incremental_serialization_2.yaml
+++ b/pkg/front_end/testcases/incremental/incremental_serialization_2.yaml
@@ -36,8 +36,16 @@
         lib3() {
           return lib1();
         }
-      .packages: |
-        package1:package1
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "package1",
+              "rootUri": "../package1"
+            }
+          ]
+        }
     expectedLibraryCount: 4
     incrementalSerializationDoesWork: true
   - entry: main.dart
diff --git a/pkg/front_end/testcases/incremental/incremental_serialization_3.yaml b/pkg/front_end/testcases/incremental/incremental_serialization_3.yaml
index 775b322..e3664d7 100644
--- a/pkg/front_end/testcases/incremental/incremental_serialization_3.yaml
+++ b/pkg/front_end/testcases/incremental/incremental_serialization_3.yaml
@@ -46,10 +46,24 @@
         lib3() {
           print("lib3");
         }
-      .packages: |
-        package1:package1
-        package2:package2
-        package3:package3
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "package1",
+              "rootUri": "../package1"
+            },
+            {
+              "name": "package2",
+              "rootUri": "../package2"
+            },
+            {
+              "name": "package3",
+              "rootUri": "../package3"
+            }
+          ]
+        }
     expectedLibraryCount: 5
     incrementalSerializationDoesWork: true
   - entry: main.dart
@@ -89,9 +103,23 @@
         lib3() {
           print("lib3");
         }
-      .packages: |
-        package1:package1
-        package2:package2
-        package3:package3
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "package1",
+              "rootUri": "../package1"
+            },
+            {
+              "name": "package2",
+              "rootUri": "../package2"
+            },
+            {
+              "name": "package3",
+              "rootUri": "../package3"
+            }
+          ]
+        }
     expectedLibraryCount: 5
     incrementalSerializationDoesWork: true
diff --git a/pkg/front_end/testcases/incremental/incremental_serialization_4.yaml b/pkg/front_end/testcases/incremental/incremental_serialization_4.yaml
index a9c75d5..144fc2c 100644
--- a/pkg/front_end/testcases/incremental/incremental_serialization_4.yaml
+++ b/pkg/front_end/testcases/incremental/incremental_serialization_4.yaml
@@ -45,9 +45,20 @@
           p1();
           print("Package 2");
         }
-      .packages: |
-        package1:package1
-        package2:package2
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "package1",
+              "rootUri": "../package1"
+            },
+            {
+              "name": "package2",
+              "rootUri": "../package2"
+            }
+          ]
+        }
     expectedLibraryCount: 3
     incrementalSerializationDoesWork: true
   - entry: main.dart
@@ -86,8 +97,19 @@
           p1();
           print("Package 2");
         }
-      .packages: |
-        package1:package1v2
-        package2:package2
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "package1",
+              "rootUri": "../package1v2"
+            },
+            {
+              "name": "package2",
+              "rootUri": "../package2"
+            }
+          ]
+        }
     expectedLibraryCount: 3
     incrementalSerializationDoesWork: true
diff --git a/pkg/front_end/testcases/incremental/initialize_with_unused_package_then_use_type.yaml b/pkg/front_end/testcases/incremental/initialize_with_unused_package_then_use_type.yaml
index 6460d79..dd9cc98 100644
--- a/pkg/front_end/testcases/incremental/initialize_with_unused_package_then_use_type.yaml
+++ b/pkg/front_end/testcases/incremental/initialize_with_unused_package_then_use_type.yaml
@@ -27,7 +27,16 @@
             print("Foo!");
           }
         }
-      .packages: mypackage:mypackage
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "mypackage",
+              "rootUri": "../mypackage"
+            }
+          ]
+        }
     expectedLibraryCount: 2
   - entry: main.dart
     invalidate:
@@ -45,7 +54,16 @@
             print("Foo!");
           }
         }
-      .packages: mypackage:mypackage
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "mypackage",
+              "rootUri": "../mypackage"
+            }
+          ]
+        }
     expectedLibraryCount: 1
     expectInitializeFromDill: true
   - entry: main.dart
diff --git a/pkg/front_end/testcases/incremental/invalidate_package_part.yaml b/pkg/front_end/testcases/incremental/invalidate_package_part.yaml
index 7fee6d0..224d615 100644
--- a/pkg/front_end/testcases/incremental/invalidate_package_part.yaml
+++ b/pkg/front_end/testcases/incremental/invalidate_package_part.yaml
@@ -22,7 +22,16 @@
         b() {
           print("b1");
         }
-      .packages: example:pkg/example
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "example",
+              "rootUri": "../pkg/example"
+            }
+          ]
+        }
     expectedLibraryCount: 1
   - entry: "package:example/main.dart"
     invalidate:
@@ -43,7 +52,16 @@
         b() {
           print("b2");
         }
-      .packages: example:pkg/example
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "example",
+              "rootUri": "../pkg/example"
+            }
+          ]
+        }
     expectedLibraryCount: 1
   - entry: "package:example/main.dart"
     invalidate:
@@ -64,5 +82,14 @@
         b() {
           print("b3");
         }
-      .packages: example:pkg/example
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "example",
+              "rootUri": "../pkg/example"
+            }
+          ]
+        }
     expectedLibraryCount: 1
diff --git a/pkg/front_end/testcases/incremental/invalidate_package_part_2.yaml b/pkg/front_end/testcases/incremental/invalidate_package_part_2.yaml
index 2e63311..c8635e8 100644
--- a/pkg/front_end/testcases/incremental/invalidate_package_part_2.yaml
+++ b/pkg/front_end/testcases/incremental/invalidate_package_part_2.yaml
@@ -21,7 +21,16 @@
         b() {
           print("b1");
         }
-      .packages: example:pkg/example
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "example",
+              "rootUri": "../pkg/example"
+            }
+          ]
+        }
     expectedLibraryCount: 1
   - entry: "package:example/main.dart"
     worldType: updated
@@ -37,7 +46,16 @@
         b() {
           print("b2");
         }
-      .packages: example:pkg/example
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "example",
+              "rootUri": "../pkg/example"
+            }
+          ]
+        }
     expectedLibraryCount: 1
   - entry: "package:example/main.dart"
     worldType: updated
@@ -53,5 +71,14 @@
         b() {
           print("b3");
         }
-      .packages: example:pkg/example
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "example",
+              "rootUri": "../pkg/example"
+            }
+          ]
+        }
     expectedLibraryCount: 1
diff --git a/pkg/front_end/testcases/incremental/invalidate_package_part_as_file.yaml b/pkg/front_end/testcases/incremental/invalidate_package_part_as_file.yaml
index 4e2cd4d..b6fc99f 100644
--- a/pkg/front_end/testcases/incremental/invalidate_package_part_as_file.yaml
+++ b/pkg/front_end/testcases/incremental/invalidate_package_part_as_file.yaml
@@ -22,4 +22,13 @@
     b() {
       print("b1");
     }
-  .packages: example:pkg/example
+  .dart_tool/package_config.json: |
+    {
+      "configVersion": 2,
+      "packages": [
+        {
+          "name": "example",
+          "rootUri": "../pkg/example"
+        }
+      ]
+    }
diff --git a/pkg/front_end/testcases/incremental/invalidate_package_part_as_package.yaml b/pkg/front_end/testcases/incremental/invalidate_package_part_as_package.yaml
index 68e2d37..6519fd4 100644
--- a/pkg/front_end/testcases/incremental/invalidate_package_part_as_package.yaml
+++ b/pkg/front_end/testcases/incremental/invalidate_package_part_as_package.yaml
@@ -22,4 +22,13 @@
     b() {
       print("b1");
     }
-  .packages: example:pkg/example
+  .dart_tool/package_config.json: |
+    {
+      "configVersion": 2,
+      "packages": [
+        {
+          "name": "example",
+          "rootUri": "../pkg/example"
+        }
+      ]
+    }
diff --git a/pkg/front_end/testcases/incremental/invalidate_package_part_from_package_url_as_file.yaml b/pkg/front_end/testcases/incremental/invalidate_package_part_from_package_url_as_file.yaml
index ee36914..17c374a 100644
--- a/pkg/front_end/testcases/incremental/invalidate_package_part_from_package_url_as_file.yaml
+++ b/pkg/front_end/testcases/incremental/invalidate_package_part_from_package_url_as_file.yaml
@@ -23,4 +23,13 @@
     b() {
       print("b1");
     }
-  .packages: example:pkg/example
+  .dart_tool/package_config.json: |
+    {
+      "configVersion": 2,
+      "packages": [
+        {
+          "name": "example",
+          "rootUri": "../pkg/example"
+        }
+      ]
+    }
diff --git a/pkg/front_end/testcases/incremental/invalidate_package_part_from_package_url_as_package.yaml b/pkg/front_end/testcases/incremental/invalidate_package_part_from_package_url_as_package.yaml
index 5af601b..d79692e 100644
--- a/pkg/front_end/testcases/incremental/invalidate_package_part_from_package_url_as_package.yaml
+++ b/pkg/front_end/testcases/incremental/invalidate_package_part_from_package_url_as_package.yaml
@@ -23,4 +23,13 @@
     b() {
       print("b1");
     }
-  .packages: example:pkg/example
+  .dart_tool/package_config.json: |
+    {
+      "configVersion": 2,
+      "packages": [
+        {
+          "name": "example",
+          "rootUri": "../pkg/example"
+        }
+      ]
+    }
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_27.yaml b/pkg/front_end/testcases/incremental/no_outline_change_27.yaml
index 8f4c25d..380c552 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_27.yaml
+++ b/pkg/front_end/testcases/incremental/no_outline_change_27.yaml
@@ -22,8 +22,16 @@
         libMethod() {
           print("Hello from lib!");
         }
-      .packages: |
-        foo:.
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "foo",
+              "rootUri": ".."
+            }
+          ]
+        }
     expectedLibraryCount: 2
   - entry: main.dart
     warnings: false
diff --git a/pkg/front_end/testcases/incremental/part_as_package_entry.yaml b/pkg/front_end/testcases/incremental/part_as_package_entry.yaml
index 9aed0c2..9810036 100644
--- a/pkg/front_end/testcases/incremental/part_as_package_entry.yaml
+++ b/pkg/front_end/testcases/incremental/part_as_package_entry.yaml
@@ -7,8 +7,16 @@
   - entry: package:foo/main.dart
     checkEntries: false
     sources:
-      .packages: |
-        foo:.
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "foo",
+              "rootUri": ".."
+            }
+          ]
+        }
       main.dart: |
         // @dart=2.9
         part of 'lib.dart';
diff --git a/pkg/front_end/testcases/incremental/part_as_package_entry_2.yaml b/pkg/front_end/testcases/incremental/part_as_package_entry_2.yaml
index 27bb66c..2ac3ec6 100644
--- a/pkg/front_end/testcases/incremental/part_as_package_entry_2.yaml
+++ b/pkg/front_end/testcases/incremental/part_as_package_entry_2.yaml
@@ -8,8 +8,16 @@
     warnings: false
     checkEntries: false
     sources:
-      .packages: |
-        foo:.
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "foo",
+              "rootUri": ".."
+            }
+          ]
+        }
       main.dart: |
         // @dart=2.9
         part of 'lib.dart';
diff --git a/pkg/front_end/testcases/incremental/part_not_part_of_as_package.yaml b/pkg/front_end/testcases/incremental/part_not_part_of_as_package.yaml
index 9110606..a3c62ed 100644
--- a/pkg/front_end/testcases/incremental/part_not_part_of_as_package.yaml
+++ b/pkg/front_end/testcases/incremental/part_not_part_of_as_package.yaml
@@ -7,8 +7,16 @@
   - entry: package:foo/main.dart
     errors: true
     sources:
-      .packages: |
-        foo:.
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "foo",
+              "rootUri": ".."
+            }
+          ]
+        }
       main.dart: |
         // @dart=2.9
         part 'lib.dart';
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_3.yaml b/pkg/front_end/testcases/incremental/reissue_errors_3.yaml
index b93e15d..fc0ac60 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_3.yaml
+++ b/pkg/front_end/testcases/incremental/reissue_errors_3.yaml
@@ -10,7 +10,16 @@
 worlds:
   - entry: main.dart
     sources:
-      .packages: mypackage:mypackage
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "mypackage",
+              "rootUri": "../mypackage"
+            }
+          ]
+        }
       main.dart: |
         // @dart=2.9
         import "package:mypackage/a.dart";
@@ -34,7 +43,16 @@
     expectedLibraryCount: 3
   - entry: main.dart
     sources:
-      .packages: mypackage:mypackage
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "mypackage",
+              "rootUri": "../mypackage"
+            }
+          ]
+        }
       main.dart: |
         // @dart=2.9
         import "package:mypackage/a.dart";
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_4.yaml b/pkg/front_end/testcases/incremental/reissue_errors_4.yaml
index 47f9788..b53906c 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_4.yaml
+++ b/pkg/front_end/testcases/incremental/reissue_errors_4.yaml
@@ -10,7 +10,16 @@
 worlds:
   - entry: main.dart
     sources:
-      .packages: mypackage:mypackage
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "mypackage",
+              "rootUri": "../mypackage"
+            }
+          ]
+        }
       main.dart: |
         // @dart=2.9
         import "package:mypackage/a.dart";
@@ -38,7 +47,16 @@
     expectedLibraryCount: 3
   - entry: main.dart
     sources:
-      .packages: mypackage:mypackage
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "mypackage",
+              "rootUri": "../mypackage"
+            }
+          ]
+        }
       main.dart: |
         // @dart=2.9
         import "package:mypackage/a.dart";
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_5.yaml b/pkg/front_end/testcases/incremental/reissue_errors_5.yaml
index 36e8361..861b204 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_5.yaml
+++ b/pkg/front_end/testcases/incremental/reissue_errors_5.yaml
@@ -10,7 +10,16 @@
 worlds:
   - entry: main.dart
     sources:
-      .packages: mypackage:mypackage
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "mypackage",
+              "rootUri": "../mypackage"
+            }
+          ]
+        }
       main.dart: |
         // @dart=2.9
         import "package:mypackage/a.dart" as a;
diff --git a/pkg/front_end/testcases/incremental/updated_package_1.yaml b/pkg/front_end/testcases/incremental/updated_package_1.yaml
index 6950f98..67c83b0 100644
--- a/pkg/front_end/testcases/incremental/updated_package_1.yaml
+++ b/pkg/front_end/testcases/incremental/updated_package_1.yaml
@@ -3,7 +3,7 @@
 # BSD-style license that can be found in the LICENSE.md file.
 
 # Compile an application with a package and use it.
-# Then update the package from .packages.
+# Then update the package from .dart_tool/package_config.json.
 # The old package is still included in the dill file we initialize from,
 # but shouldn't cause trouble, nor be included in the output.
 
@@ -32,7 +32,16 @@
         b() {
           a();
         }
-      .packages: example:package_0.1.0
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "example",
+              "rootUri": "../package_0.1.0"
+            }
+          ]
+        }
     expectedLibraryCount: 3
   - entry: main.dart
     # TODO(jensj): For now we don't initialize from dill when a package was
@@ -67,5 +76,14 @@
         b() {
           print("hello from v0.1.1");
         }
-      .packages: example:package_0.1.1
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "example",
+              "rootUri": "../package_0.1.1"
+            }
+          ]
+        }
     expectedLibraryCount: 2
diff --git a/pkg/front_end/testcases/incremental/updated_package_2.yaml b/pkg/front_end/testcases/incremental/updated_package_2.yaml
index 34110ba..6e7ae11 100644
--- a/pkg/front_end/testcases/incremental/updated_package_2.yaml
+++ b/pkg/front_end/testcases/incremental/updated_package_2.yaml
@@ -3,7 +3,7 @@
 # BSD-style license that can be found in the LICENSE.md file.
 
 # Compile an application with a package and use it.
-# Then update the package from .packages.
+# Then update the package from .dart_tool/package_config.json.
 # The old package is still included in the dill file we initialize from,
 # but shouldn't cause trouble, nor be included in the output.
 
@@ -32,7 +32,16 @@
         b() {
           a();
         }
-      .packages: example:package_0.1.0
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "example",
+              "rootUri": "../package_0.1.0"
+            }
+          ]
+        }
     expectedLibraryCount: 3
   - entry: main.dart
     invalidate:
@@ -66,5 +75,14 @@
         b() {
           print("hello from v0.1.1");
         }
-      .packages: example:package_0.1.1
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "example",
+              "rootUri": "../package_0.1.1"
+            }
+          ]
+        }
     expectedLibraryCount: 2
diff --git a/pkg/front_end/testcases/incremental/updated_package_3.yaml b/pkg/front_end/testcases/incremental/updated_package_3.yaml
index faf431e..e3b97b7 100644
--- a/pkg/front_end/testcases/incremental/updated_package_3.yaml
+++ b/pkg/front_end/testcases/incremental/updated_package_3.yaml
@@ -3,8 +3,8 @@
 # BSD-style license that can be found in the LICENSE.md file.
 
 # Compile an application with a package and use it.
-# Then update the package from .packages but change nothing else and call
-# computeDelta on the same compiler.
+# Then update the package from .dart_tool/package_config.json but change nothing
+# else and call computeDelta on the same compiler.
 # The output should not include the old package.
 
 type: newworld
@@ -32,7 +32,16 @@
         b() {
           a();
         }
-      .packages: example:package_0.1.0
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "example",
+              "rootUri": "../package_0.1.0"
+            }
+          ]
+        }
     expectedLibraryCount: 3
   - entry: main.dart
     worldType: updated
@@ -46,5 +55,14 @@
         b() {
           print("hello from v0.1.1");
         }
-      .packages: example:package_0.1.1
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "example",
+              "rootUri": "../package_0.1.1"
+            }
+          ]
+        }
     expectedLibraryCount: 2
diff --git a/pkg/front_end/testcases/incremental/updated_package_4.yaml b/pkg/front_end/testcases/incremental/updated_package_4.yaml
index 4d2fd14..e5d21b3 100644
--- a/pkg/front_end/testcases/incremental/updated_package_4.yaml
+++ b/pkg/front_end/testcases/incremental/updated_package_4.yaml
@@ -2,9 +2,9 @@
 # for details. All rights reserved. Use of this source code is governed by a
 # BSD-style license that can be found in the LICENSE.md file.
 
-# Compile an application with a .packages.
-# Then delete the content of .packages, still using the package in code.
-# This should be an error.
+# Compile an application with a .dart_tool/package_config.json.
+# Then delete the content of .dart_tool/package_config.json, still using the
+# package in code. This should be an error.
 
 type: newworld
 worlds:
@@ -22,15 +22,28 @@
         b() {
           print("hello from package");
         }
-      .packages: example:package
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "example",
+              "rootUri": "../package"
+            }
+          ]
+        }
     expectedLibraryCount: 2
   - entry: main.dart
     worldType: updated
     expectInitializeFromDill: false
     checkInvalidatedFiles: false
     invalidate:
-      - .packages
+      - .dart_tool/package_config.json
     sources:
-      .packages:
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": []
+        }
     errors: true
     expectedLibraryCount: 1
diff --git a/pkg/front_end/testcases/incremental/updated_package_uri.yaml b/pkg/front_end/testcases/incremental/updated_package_uri.yaml
index f8e7ad9..53d1725 100644
--- a/pkg/front_end/testcases/incremental/updated_package_uri.yaml
+++ b/pkg/front_end/testcases/incremental/updated_package_uri.yaml
@@ -2,9 +2,10 @@
 # for details. All rights reserved. Use of this source code is governed by a
 # BSD-style license that can be found in the LICENSE.md file.
 
-# Compile an application with a .packages file.
-# Then change which file should be the .packages file to use, and everything
-# should now be relative to the new .packages file.
+# Compile an application with a .dart_tool/package_config.json file.
+# Then change which file should be the package_config.json file to
+# use, and everything should now be relative to the new
+# package_config.json file.
 
 type: newworld
 worlds:
@@ -31,7 +32,16 @@
         b() {
           a();
         }
-      .packages: example:package_0.1.0
+      .dart_tool/package_config.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "example",
+              "rootUri": "../package_0.1.0"
+            }
+          ]
+        }
     expectedLibraryCount: 3
   - entry: main.dart
     worldType: updated
@@ -42,6 +52,15 @@
         b() {
           print("hello from v0.1.1");
         }
-      .packages2: example:package_0.1.1
-    dotPackagesFile: .packages2
+      .dart_tool/package_config2.json: |
+        {
+          "configVersion": 2,
+          "packages": [
+            {
+              "name": "example",
+              "rootUri": "../package_0.1.1"
+            }
+          ]
+        }
+    packageConfigFile: .dart_tool/package_config2.json
     expectedLibraryCount: 2
diff --git a/pkg/front_end/tool/fasta_perf.dart b/pkg/front_end/tool/fasta_perf.dart
index 6c5a003..ba61cb1 100644
--- a/pkg/front_end/tool/fasta_perf.dart
+++ b/pkg/front_end/tool/fasta_perf.dart
@@ -90,7 +90,7 @@
     // allowlisting of error messages in the error handler.
     ..onDiagnostic = onDiagnosticMessageHandler()
     ..compileSdk = true
-    ..packagesFileUri = Uri.base.resolve('.packages')
+    ..packagesFileUri = Uri.base.resolve('.dart_tool/package_config.json')
     ..target = createTarget(isFlutter: false);
   uriResolver = await new ProcessedOptions(options: options).getUriTranslator();
 }
@@ -231,7 +231,7 @@
     ..sdkRoot = sdkRoot
     ..onDiagnostic = onDiagnosticMessageHandler()
     ..target = createTarget(isFlutter: false)
-    ..packagesFileUri = Uri.base.resolve('.packages')
+    ..packagesFileUri = Uri.base.resolve('.dart_tool/package_config.json')
     ..compileSdk = compileSdk
     ..environmentDefines = const {};
   if (!compileSdk) {
diff --git a/pkg/front_end/tool/incremental_perf.dart b/pkg/front_end/tool/incremental_perf.dart
index 0a1186d..dc1c3bb 100644
--- a/pkg/front_end/tool/incremental_perf.dart
+++ b/pkg/front_end/tool/incremental_perf.dart
@@ -215,9 +215,9 @@
     if (uri.isScheme('org-dartlang-overlay')) {
       return new OverlayFileSystemEntity(uri, this);
     } else if (uri.isScheme('file')) {
-      // The IKG compiler reads ".packages" which might contain absolute file
-      // URIs (which it will then try to use on the FS).  We therefore replace
-      // them with overlay-fs URIs as usual.
+      // The IKG compiler reads ".dart_tool/package_config.json" which might
+      // contain absolute file URIs (which it will then try to use on the FS).
+      // We therefore replace them with overlay-fs URIs as usual.
       return new OverlayFileSystemEntity(_resolveOverlayUri('$uri'), this);
     } else {
       throw "Unsupported scheme: ${uri.scheme}."
diff --git a/pkg/kernel/lib/ast.dart b/pkg/kernel/lib/ast.dart
index 4c79f85..0e63341 100644
--- a/pkg/kernel/lib/ast.dart
+++ b/pkg/kernel/lib/ast.dart
@@ -12939,10 +12939,6 @@
 
   /// Gets the type of this constant.
   DartType getType(StaticTypeContext context);
-
-  Expression asExpression() {
-    return new ConstantExpression(this);
-  }
 }
 
 abstract class PrimitiveConstant<T> extends Constant {
@@ -13887,9 +13883,6 @@
       expression.getStaticType(context);
 
   @override
-  Expression asExpression() => expression;
-
-  @override
   void toTextInternal(AstPrinter printer) {
     printer.write('unevaluated{');
     printer.writeExpression(expression);
diff --git a/pkg/kernel/lib/verifier.dart b/pkg/kernel/lib/verifier.dart
index a9a37d0..a02eb0b 100644
--- a/pkg/kernel/lib/verifier.dart
+++ b/pkg/kernel/lib/verifier.dart
@@ -834,9 +834,6 @@
 
   @override
   void visitUnevaluatedConstant(UnevaluatedConstant constant) {
-    if (inUnevaluatedConstant) {
-      problem(currentParent, "UnevaluatedConstant in UnevaluatedConstant.");
-    }
     bool savedInUnevaluatedConstant = inUnevaluatedConstant;
     inUnevaluatedConstant = true;
     TreeNode? oldParent = currentParent;
diff --git a/pkg/testing/lib/src/chain.dart b/pkg/testing/lib/src/chain.dart
index 8ab797b..ad570dd 100644
--- a/pkg/testing/lib/src/chain.dart
+++ b/pkg/testing/lib/src/chain.dart
@@ -25,7 +25,7 @@
 
 import 'multitest.dart' show MultitestTransformer, isError;
 
-import 'expectation.dart' show Expectation, ExpectationSet;
+import 'expectation.dart' show Expectation, ExpectationGroup, ExpectationSet;
 
 typedef Future<ChainContext> CreateContext(
     Chain suite, Map<String, String> environment);
@@ -148,6 +148,14 @@
       }
       final Set<Expectation> expectedOutcomes = processExpectedOutcomes(
           expectations.expectations(description.shortName), description);
+      bool shouldSkip = false;
+      for (Expectation expectation in expectedOutcomes) {
+        if (expectation.group == ExpectationGroup.Skip) {
+          shouldSkip = true;
+          break;
+        }
+      }
+      if (shouldSkip) continue;
       final StringBuffer sb = new StringBuffer();
       final Step? lastStep = steps.isNotEmpty ? steps.last : null;
       final Iterator<Step> iterator = steps.iterator;
diff --git a/runtime/tests/vm/dart/causal_stacks/utils.dart b/runtime/tests/vm/dart/causal_stacks/utils.dart
index 2269e31..4356953 100644
--- a/runtime/tests/vm/dart/causal_stacks/utils.dart
+++ b/runtime/tests/vm/dart/causal_stacks/utils.dart
@@ -205,21 +205,26 @@
 
   // Use the DWARF stack decoder if we're running in --dwarf-stack-traces mode
   // and in precompiled mode (otherwise --dwarf-stack-traces has no effect).
-  final decodeTrace = frames.first.startsWith('Warning:');
-  if (decodeTrace) {
-    Expect.isNotNull(debugInfoFilename);
-    final dwarf = Dwarf.fromFile(debugInfoFilename!)!;
-    frames = await Stream.fromIterable(original)
-        .transform(DwarfStackTraceDecoder(dwarf))
-        .where(_lineRE.hasMatch)
-        .toList();
+  bool usingDwarf = false;
+  if (debugInfoFilename != null) {
+    try {
+      final dwarf = Dwarf.fromFile(debugInfoFilename)!;
+      usingDwarf = true;
+      frames = await Stream.fromIterable(original)
+          .transform(DwarfStackTraceDecoder(dwarf))
+          .where(_lineRE.hasMatch)
+          .toList();
+    } on FileSystemException {
+      // We're not running in precompiled mode, so the file doesn't exist and
+      // we can continue normally.
+    }
   }
 
   void printFrameInformation() {
     print('RegExps for expected stack:');
     expects.forEach((s) => print('"${s}"'));
     print('');
-    if (decodeTrace) {
+    if (usingDwarf) {
       print('Non-symbolic actual stack:');
       original.forEach(print);
       print('');
diff --git a/runtime/tests/vm/dart_2/causal_stacks/utils.dart b/runtime/tests/vm/dart_2/causal_stacks/utils.dart
index d7c80d1..ec673b5 100644
--- a/runtime/tests/vm/dart_2/causal_stacks/utils.dart
+++ b/runtime/tests/vm/dart_2/causal_stacks/utils.dart
@@ -207,21 +207,26 @@
 
   // Use the DWARF stack decoder if we're running in --dwarf-stack-traces mode
   // and in precompiled mode (otherwise --dwarf-stack-traces has no effect).
-  final decodeTrace = frames.first.startsWith('Warning:');
-  if (decodeTrace) {
-    Expect.isNotNull(debugInfoFilename);
-    final dwarf = Dwarf.fromFile(debugInfoFilename);
-    frames = await Stream.fromIterable(original)
-        .transform(DwarfStackTraceDecoder(dwarf))
-        .where(_lineRE.hasMatch)
-        .toList();
+  bool usingDwarf = false;
+  if (debugInfoFilename != null) {
+    try {
+      final dwarf = Dwarf.fromFile(debugInfoFilename);
+      usingDwarf = true;
+      frames = await Stream.fromIterable(original)
+          .transform(DwarfStackTraceDecoder(dwarf))
+          .where(_lineRE.hasMatch)
+          .toList();
+    } on FileSystemException {
+      // We're not running in precompiled mode, so the file doesn't exist and
+      // we can continue normally.
+    }
   }
 
   void printFrameInformation() {
     print('RegExps for expected stack:');
     expects.forEach((s) => print('"${s}"'));
     print('');
-    if (decodeTrace) {
+    if (usingDwarf) {
       print('Non-symbolic actual stack:');
       original.forEach(print);
       print('');
diff --git a/runtime/vm/isolate.cc b/runtime/vm/isolate.cc
index d20cf54..84694a6 100644
--- a/runtime/vm/isolate.cc
+++ b/runtime/vm/isolate.cc
@@ -1739,13 +1739,6 @@
   // how the vm_tag (kEmbedderTagId) can be set, these tags need to
   // move to the OSThread structure.
   set_user_tag(UserTags::kDefaultUserTag);
-
-  if (group()->obfuscate()) {
-    OS::PrintErr(
-        "Warning: This VM has been configured to obfuscate symbol information "
-        "which violates the Dart standard.\n"
-        "         See dartbug.com/30524 for more information.\n");
-  }
 }
 
 #undef REUSABLE_HANDLE_SCOPE_INIT
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
index 47633fe..8814320 100644
--- a/runtime/vm/object.cc
+++ b/runtime/vm/object.cc
@@ -25878,12 +25878,6 @@
         isolate_instructions_image.instructions_relocated_address();
     auto const vm_relocated_address =
         vm_instructions_image.instructions_relocated_address();
-    // The Dart standard requires the output of StackTrace.toString to include
-    // all pending activations with precise source locations (i.e., to expand
-    // inlined frames and provide line and column numbers).
-    buffer.Printf(
-        "Warning: This VM has been configured to produce stack traces "
-        "that violate the Dart standard.\n");
     // This prologue imitates Android's debuggerd to make it possible to paste
     // the stack trace into ndk-stack.
     buffer.Printf(
diff --git a/tools/VERSION b/tools/VERSION
index 43b8d36..644cb13 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 18
 PATCH 0
-PRERELEASE 216
+PRERELEASE 217
 PRERELEASE_PATCH 0
\ No newline at end of file
