Revert "Enable constant-update-2018 by default." and "Update .expect files in pkg/front_end after e9ca6a53"

This reverts commit e9ca6a5335f970ec4ea6d2784430c9a8f447c39f and d3e00fd35e17bbbd90b477b62f648828a3a617bc.

Change-Id: I346d6156be19c4fceffa202a7ce9bfa931c7c14b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/99560
Reviewed-by: Sigmund Cherem <sigmund@google.com>
Reviewed-by: Vijay Menon <vsm@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
diff --git a/pkg/analyzer/lib/src/dart/analysis/experiments.dart b/pkg/analyzer/lib/src/dart/analysis/experiments.dart
index 9d96a707..4b86a47 100644
--- a/pkg/analyzer/lib/src/dart/analysis/experiments.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/experiments.dart
@@ -185,7 +185,7 @@
 /// enabled by default.
 class IsEnabledByDefault {
   /// Default state of the experiment "constant-update"
-  static const bool constant_update_2018 = true;
+  static const bool constant_update_2018 = false;
 
   /// Default state of the experiment "control-flow-collections"
   static const bool control_flow_collections = false;
diff --git a/pkg/front_end/lib/src/api_prototype/experimental_flags.dart b/pkg/front_end/lib/src/api_prototype/experimental_flags.dart
index 286dbd2d..84dc067 100644
--- a/pkg/front_end/lib/src/api_prototype/experimental_flags.dart
+++ b/pkg/front_end/lib/src/api_prototype/experimental_flags.dart
@@ -26,7 +26,7 @@
 }
 
 const Map<ExperimentalFlag, bool> defaultExperimentalFlags = {
-  ExperimentalFlag.constantUpdate2018: true,
+  ExperimentalFlag.constantUpdate2018: false,
   ExperimentalFlag.controlFlowCollections: false,
   ExperimentalFlag.setLiterals: true,
   ExperimentalFlag.spreadCollections: false,
diff --git a/pkg/front_end/testcases/DeltaBlue.dart.strong.expect b/pkg/front_end/testcases/DeltaBlue.dart.strong.expect
index ef208ad..78e2440 100644
--- a/pkg/front_end/testcases/DeltaBlue.dart.strong.expect
+++ b/pkg/front_end/testcases/DeltaBlue.dart.strong.expect
@@ -18,7 +18,7 @@
     : self::Strength::value = value, self::Strength::name = name, super core::Object::•()
     ;
   method nextWeaker() → self::Strength
-    return (#C19).{core::List::[]}(this.{self::Strength::value});
+    return const <self::Strength>[self::STRONG_PREFERRED, self::PREFERRED, self::STRONG_DEFAULT, self::NORMAL, self::WEAK_DEFAULT, self::WEAKEST].{core::List::[]}(this.{self::Strength::value});
   static method stronger(self::Strength s1, self::Strength s2) → core::bool {
     return s1.{self::Strength::value}.{core::num::<}(s2.{self::Strength::value});
   }
@@ -54,7 +54,7 @@
   method satisfy(dynamic mark) → self::Constraint {
     this.{self::Constraint::chooseMethod}(mark as{TypeError} core::int);
     if(!this.{self::Constraint::isSatisfied}()) {
-      if(this.{self::Constraint::strength}.{core::Object::==}(#C22)) {
+      if(this.{self::Constraint::strength}.{core::Object::==}(self::REQUIRED)) {
         core::print("Could not satisfy a required constraint!");
       }
       return null;
@@ -131,39 +131,39 @@
 abstract class BinaryConstraint extends self::Constraint {
   field self::Variable v1;
   field self::Variable v2;
-  field core::int direction = #C1;
+  field core::int direction = self::NONE;
   constructor •(self::Variable v1, self::Variable v2, self::Strength strength) → self::BinaryConstraint
     : self::BinaryConstraint::v1 = v1, self::BinaryConstraint::v2 = v2, super self::Constraint::•(strength) {
     this.{self::Constraint::addConstraint}();
   }
   method chooseMethod(core::int mark) → void {
     if(this.{self::BinaryConstraint::v1}.{self::Variable::mark}.{core::num::==}(mark)) {
-      this.{self::BinaryConstraint::direction} = !this.{self::BinaryConstraint::v2}.{self::Variable::mark}.{core::num::==}(mark) && self::Strength::stronger(this.{self::Constraint::strength}, this.{self::BinaryConstraint::v2}.{self::Variable::walkStrength}) ?{core::int} #C4 : #C1;
+      this.{self::BinaryConstraint::direction} = !this.{self::BinaryConstraint::v2}.{self::Variable::mark}.{core::num::==}(mark) && self::Strength::stronger(this.{self::Constraint::strength}, this.{self::BinaryConstraint::v2}.{self::Variable::walkStrength}) ?{core::int} self::FORWARD : self::NONE;
     }
     if(this.{self::BinaryConstraint::v2}.{self::Variable::mark}.{core::num::==}(mark)) {
-      this.{self::BinaryConstraint::direction} = !this.{self::BinaryConstraint::v1}.{self::Variable::mark}.{core::num::==}(mark) && self::Strength::stronger(this.{self::Constraint::strength}, this.{self::BinaryConstraint::v1}.{self::Variable::walkStrength}) ?{core::int} #C20 : #C1;
+      this.{self::BinaryConstraint::direction} = !this.{self::BinaryConstraint::v1}.{self::Variable::mark}.{core::num::==}(mark) && self::Strength::stronger(this.{self::Constraint::strength}, this.{self::BinaryConstraint::v1}.{self::Variable::walkStrength}) ?{core::int} self::BACKWARD : self::NONE;
     }
     if(self::Strength::weaker(this.{self::BinaryConstraint::v1}.{self::Variable::walkStrength}, this.{self::BinaryConstraint::v2}.{self::Variable::walkStrength})) {
-      this.{self::BinaryConstraint::direction} = self::Strength::stronger(this.{self::Constraint::strength}, this.{self::BinaryConstraint::v1}.{self::Variable::walkStrength}) ?{core::int} #C20 : #C1;
+      this.{self::BinaryConstraint::direction} = self::Strength::stronger(this.{self::Constraint::strength}, this.{self::BinaryConstraint::v1}.{self::Variable::walkStrength}) ?{core::int} self::BACKWARD : self::NONE;
     }
     else {
-      this.{self::BinaryConstraint::direction} = self::Strength::stronger(this.{self::Constraint::strength}, this.{self::BinaryConstraint::v2}.{self::Variable::walkStrength}) ?{core::int} #C4 : #C20;
+      this.{self::BinaryConstraint::direction} = self::Strength::stronger(this.{self::Constraint::strength}, this.{self::BinaryConstraint::v2}.{self::Variable::walkStrength}) ?{core::int} self::FORWARD : self::BACKWARD;
     }
   }
   method addToGraph() → void {
     this.{self::BinaryConstraint::v1}.{self::Variable::addConstraint}(this);
     this.{self::BinaryConstraint::v2}.{self::Variable::addConstraint}(this);
-    this.{self::BinaryConstraint::direction} = #C1;
+    this.{self::BinaryConstraint::direction} = self::NONE;
   }
   method isSatisfied() → core::bool
-    return !this.{self::BinaryConstraint::direction}.{core::num::==}(#C1);
+    return !this.{self::BinaryConstraint::direction}.{core::num::==}(self::NONE);
   method markInputs(core::int mark) → void {
     this.{self::BinaryConstraint::input}().{self::Variable::mark} = mark;
   }
   method input() → self::Variable
-    return this.{self::BinaryConstraint::direction}.{core::num::==}(#C4) ?{self::Variable} this.{self::BinaryConstraint::v1} : this.{self::BinaryConstraint::v2};
+    return this.{self::BinaryConstraint::direction}.{core::num::==}(self::FORWARD) ?{self::Variable} this.{self::BinaryConstraint::v1} : this.{self::BinaryConstraint::v2};
   method output() → self::Variable
-    return this.{self::BinaryConstraint::direction}.{core::num::==}(#C4) ?{self::Variable} this.{self::BinaryConstraint::v2} : this.{self::BinaryConstraint::v1};
+    return this.{self::BinaryConstraint::direction}.{core::num::==}(self::FORWARD) ?{self::Variable} this.{self::BinaryConstraint::v2} : this.{self::BinaryConstraint::v1};
   method recalculate() → void {
     self::Variable ihn = this.{self::BinaryConstraint::input}();
     self::Variable out = this.{self::BinaryConstraint::output}();
@@ -173,7 +173,7 @@
       this.{self::Constraint::execute}();
   }
   method markUnsatisfied() → void {
-    this.{self::BinaryConstraint::direction} = #C1;
+    this.{self::BinaryConstraint::direction} = self::NONE;
   }
   method inputsKnown(core::int mark) → core::bool {
     self::Variable i = this.{self::BinaryConstraint::input}();
@@ -184,7 +184,7 @@
       this.{self::BinaryConstraint::v1}.{self::Variable::removeConstraint}(this);
     if(!this.{self::BinaryConstraint::v2}.{core::Object::==}(null))
       this.{self::BinaryConstraint::v2}.{self::Variable::removeConstraint}(this);
-    this.{self::BinaryConstraint::direction} = #C1;
+    this.{self::BinaryConstraint::direction} = self::NONE;
   }
 }
 class ScaleConstraint extends self::BinaryConstraint {
@@ -210,7 +210,7 @@
     this.{self::ScaleConstraint::scale}.{self::Variable::mark} = this.{self::ScaleConstraint::offset}.{self::Variable::mark} = mark;
   }
   method execute() → void {
-    if(this.{self::BinaryConstraint::direction}.{core::num::==}(#C4)) {
+    if(this.{self::BinaryConstraint::direction}.{core::num::==}(self::FORWARD)) {
       this.{self::BinaryConstraint::v2}.{self::Variable::value} = this.{self::BinaryConstraint::v1}.{self::Variable::value}.{core::num::*}(this.{self::ScaleConstraint::scale}.{self::Variable::value}).{core::num::+}(this.{self::ScaleConstraint::offset}.{self::Variable::value});
     }
     else {
@@ -238,7 +238,7 @@
   field core::List<self::Constraint> constraints = <self::Constraint>[];
   field self::Constraint determinedBy = null;
   field core::int mark = 0;
-  field self::Strength walkStrength = #C18;
+  field self::Strength walkStrength = self::WEAKEST;
   field core::bool stay = true;
   field core::int value;
   final field core::String name;
@@ -269,7 +269,7 @@
     c.{self::Constraint::markUnsatisfied}();
     c.{self::Constraint::removeFromGraph}();
     core::List<self::Constraint> unsatisfied = this.{self::Planner::removePropagateFrom}(out);
-    self::Strength strength = #C22;
+    self::Strength strength = self::REQUIRED;
     do {
       for (core::int i = 0; i.{core::num::<}(unsatisfied.{core::List::length}); i = i.{core::num::+}(1)) {
         self::Constraint u = unsatisfied.{core::List::[]}(i);
@@ -278,7 +278,7 @@
       }
       strength = strength.{self::Strength::nextWeaker}();
     }
-    while (!strength.{core::Object::==}(#C18))
+    while (!strength.{core::Object::==}(self::WEAKEST))
   }
   method newMark() → core::int
     return this.{self::Planner::currentMark} = this.{self::Planner::currentMark}.{core::num::+}(1);
@@ -320,7 +320,7 @@
   }
   method removePropagateFrom(self::Variable out) → core::List<self::Constraint> {
     out.{self::Variable::determinedBy} = null;
-    out.{self::Variable::walkStrength} = #C18;
+    out.{self::Variable::walkStrength} = self::WEAKEST;
     out.{self::Variable::stay} = true;
     core::List<self::Constraint> unsatisfied = <self::Constraint>[];
     core::List<self::Variable> todo = <self::Variable>[out];
@@ -367,16 +367,16 @@
     }
   }
 }
-static const field self::Strength REQUIRED = #C22;
-static const field self::Strength STRONG_PREFERRED = #C3;
-static const field self::Strength PREFERRED = #C6;
-static const field self::Strength STRONG_DEFAULT = #C9;
-static const field self::Strength NORMAL = #C12;
-static const field self::Strength WEAK_DEFAULT = #C15;
-static const field self::Strength WEAKEST = #C18;
-static const field core::int NONE = #C1;
-static const field core::int FORWARD = #C4;
-static const field core::int BACKWARD = #C20;
+static const field self::Strength REQUIRED = const self::Strength::•(0, "required");
+static const field self::Strength STRONG_PREFERRED = const self::Strength::•(1, "strongPreferred");
+static const field self::Strength PREFERRED = const self::Strength::•(2, "preferred");
+static const field self::Strength STRONG_DEFAULT = const self::Strength::•(3, "strongDefault");
+static const field self::Strength NORMAL = const self::Strength::•(4, "normal");
+static const field self::Strength WEAK_DEFAULT = const self::Strength::•(5, "weakDefault");
+static const field self::Strength WEAKEST = const self::Strength::•(6, "weakest");
+static const field core::int NONE = 1;
+static const field core::int FORWARD = 2;
+static const field core::int BACKWARD = 0;
 static field self::Planner planner;
 static method main() → dynamic {
   new self::DeltaBlue::•().{self::DeltaBlue::run}();
@@ -389,15 +389,15 @@
   for (core::int i = 0; i.{core::num::<=}(n); i = i.{core::num::+}(1)) {
     self::Variable v = new self::Variable::•("v${i}", 0);
     if(!prev.{core::Object::==}(null))
-      new self::EqualityConstraint::•(prev, v, #C22);
+      new self::EqualityConstraint::•(prev, v, self::REQUIRED);
     if(i.{core::num::==}(0))
       first = v;
     if(i.{core::num::==}(n))
       last = v;
     prev = v;
   }
-  new self::StayConstraint::•(last, #C9);
-  self::EditConstraint edit = new self::EditConstraint::•(first, #C6);
+  new self::StayConstraint::•(last, self::STRONG_DEFAULT);
+  self::EditConstraint edit = new self::EditConstraint::•(first, self::PREFERRED);
   self::Plan plan = self::planner.{self::Planner::extractPlanFromConstraints}(<self::Constraint>[edit]);
   for (core::int i = 0; i.{core::num::<}(100); i = i.{core::num::+}(1)) {
     first.{self::Variable::value} = i;
@@ -419,8 +419,8 @@
     src = new self::Variable::•("src", i);
     dst = new self::Variable::•("dst", i);
     dests.{core::List::add}(dst);
-    new self::StayConstraint::•(src, #C12);
-    new self::ScaleConstraint::•(src, scale, offset, dst, #C22);
+    new self::StayConstraint::•(src, self::NORMAL);
+    new self::ScaleConstraint::•(src, scale, offset, dst, self::REQUIRED);
   }
   self::change(src, 17);
   if(!dst.{self::Variable::value}.{core::num::==}(1170))
@@ -440,7 +440,7 @@
   }
 }
 static method change(self::Variable v, core::int newValue) → void {
-  self::EditConstraint edit = new self::EditConstraint::•(v, #C6);
+  self::EditConstraint edit = new self::EditConstraint::•(v, self::PREFERRED);
   self::Plan plan = self::planner.{self::Planner::extractPlanFromConstraints}(<self::EditConstraint>[edit]);
   for (core::int i = 0; i.{core::num::<}(10); i = i.{core::num::+}(1)) {
     v.{self::Variable::value} = newValue;
diff --git a/pkg/front_end/testcases/DeltaBlue.dart.strong.transformed.expect b/pkg/front_end/testcases/DeltaBlue.dart.strong.transformed.expect
index ef208ad..78e2440 100644
--- a/pkg/front_end/testcases/DeltaBlue.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/DeltaBlue.dart.strong.transformed.expect
@@ -18,7 +18,7 @@
     : self::Strength::value = value, self::Strength::name = name, super core::Object::•()
     ;
   method nextWeaker() → self::Strength
-    return (#C19).{core::List::[]}(this.{self::Strength::value});
+    return const <self::Strength>[self::STRONG_PREFERRED, self::PREFERRED, self::STRONG_DEFAULT, self::NORMAL, self::WEAK_DEFAULT, self::WEAKEST].{core::List::[]}(this.{self::Strength::value});
   static method stronger(self::Strength s1, self::Strength s2) → core::bool {
     return s1.{self::Strength::value}.{core::num::<}(s2.{self::Strength::value});
   }
@@ -54,7 +54,7 @@
   method satisfy(dynamic mark) → self::Constraint {
     this.{self::Constraint::chooseMethod}(mark as{TypeError} core::int);
     if(!this.{self::Constraint::isSatisfied}()) {
-      if(this.{self::Constraint::strength}.{core::Object::==}(#C22)) {
+      if(this.{self::Constraint::strength}.{core::Object::==}(self::REQUIRED)) {
         core::print("Could not satisfy a required constraint!");
       }
       return null;
@@ -131,39 +131,39 @@
 abstract class BinaryConstraint extends self::Constraint {
   field self::Variable v1;
   field self::Variable v2;
-  field core::int direction = #C1;
+  field core::int direction = self::NONE;
   constructor •(self::Variable v1, self::Variable v2, self::Strength strength) → self::BinaryConstraint
     : self::BinaryConstraint::v1 = v1, self::BinaryConstraint::v2 = v2, super self::Constraint::•(strength) {
     this.{self::Constraint::addConstraint}();
   }
   method chooseMethod(core::int mark) → void {
     if(this.{self::BinaryConstraint::v1}.{self::Variable::mark}.{core::num::==}(mark)) {
-      this.{self::BinaryConstraint::direction} = !this.{self::BinaryConstraint::v2}.{self::Variable::mark}.{core::num::==}(mark) && self::Strength::stronger(this.{self::Constraint::strength}, this.{self::BinaryConstraint::v2}.{self::Variable::walkStrength}) ?{core::int} #C4 : #C1;
+      this.{self::BinaryConstraint::direction} = !this.{self::BinaryConstraint::v2}.{self::Variable::mark}.{core::num::==}(mark) && self::Strength::stronger(this.{self::Constraint::strength}, this.{self::BinaryConstraint::v2}.{self::Variable::walkStrength}) ?{core::int} self::FORWARD : self::NONE;
     }
     if(this.{self::BinaryConstraint::v2}.{self::Variable::mark}.{core::num::==}(mark)) {
-      this.{self::BinaryConstraint::direction} = !this.{self::BinaryConstraint::v1}.{self::Variable::mark}.{core::num::==}(mark) && self::Strength::stronger(this.{self::Constraint::strength}, this.{self::BinaryConstraint::v1}.{self::Variable::walkStrength}) ?{core::int} #C20 : #C1;
+      this.{self::BinaryConstraint::direction} = !this.{self::BinaryConstraint::v1}.{self::Variable::mark}.{core::num::==}(mark) && self::Strength::stronger(this.{self::Constraint::strength}, this.{self::BinaryConstraint::v1}.{self::Variable::walkStrength}) ?{core::int} self::BACKWARD : self::NONE;
     }
     if(self::Strength::weaker(this.{self::BinaryConstraint::v1}.{self::Variable::walkStrength}, this.{self::BinaryConstraint::v2}.{self::Variable::walkStrength})) {
-      this.{self::BinaryConstraint::direction} = self::Strength::stronger(this.{self::Constraint::strength}, this.{self::BinaryConstraint::v1}.{self::Variable::walkStrength}) ?{core::int} #C20 : #C1;
+      this.{self::BinaryConstraint::direction} = self::Strength::stronger(this.{self::Constraint::strength}, this.{self::BinaryConstraint::v1}.{self::Variable::walkStrength}) ?{core::int} self::BACKWARD : self::NONE;
     }
     else {
-      this.{self::BinaryConstraint::direction} = self::Strength::stronger(this.{self::Constraint::strength}, this.{self::BinaryConstraint::v2}.{self::Variable::walkStrength}) ?{core::int} #C4 : #C20;
+      this.{self::BinaryConstraint::direction} = self::Strength::stronger(this.{self::Constraint::strength}, this.{self::BinaryConstraint::v2}.{self::Variable::walkStrength}) ?{core::int} self::FORWARD : self::BACKWARD;
     }
   }
   method addToGraph() → void {
     this.{self::BinaryConstraint::v1}.{self::Variable::addConstraint}(this);
     this.{self::BinaryConstraint::v2}.{self::Variable::addConstraint}(this);
-    this.{self::BinaryConstraint::direction} = #C1;
+    this.{self::BinaryConstraint::direction} = self::NONE;
   }
   method isSatisfied() → core::bool
-    return !this.{self::BinaryConstraint::direction}.{core::num::==}(#C1);
+    return !this.{self::BinaryConstraint::direction}.{core::num::==}(self::NONE);
   method markInputs(core::int mark) → void {
     this.{self::BinaryConstraint::input}().{self::Variable::mark} = mark;
   }
   method input() → self::Variable
-    return this.{self::BinaryConstraint::direction}.{core::num::==}(#C4) ?{self::Variable} this.{self::BinaryConstraint::v1} : this.{self::BinaryConstraint::v2};
+    return this.{self::BinaryConstraint::direction}.{core::num::==}(self::FORWARD) ?{self::Variable} this.{self::BinaryConstraint::v1} : this.{self::BinaryConstraint::v2};
   method output() → self::Variable
-    return this.{self::BinaryConstraint::direction}.{core::num::==}(#C4) ?{self::Variable} this.{self::BinaryConstraint::v2} : this.{self::BinaryConstraint::v1};
+    return this.{self::BinaryConstraint::direction}.{core::num::==}(self::FORWARD) ?{self::Variable} this.{self::BinaryConstraint::v2} : this.{self::BinaryConstraint::v1};
   method recalculate() → void {
     self::Variable ihn = this.{self::BinaryConstraint::input}();
     self::Variable out = this.{self::BinaryConstraint::output}();
@@ -173,7 +173,7 @@
       this.{self::Constraint::execute}();
   }
   method markUnsatisfied() → void {
-    this.{self::BinaryConstraint::direction} = #C1;
+    this.{self::BinaryConstraint::direction} = self::NONE;
   }
   method inputsKnown(core::int mark) → core::bool {
     self::Variable i = this.{self::BinaryConstraint::input}();
@@ -184,7 +184,7 @@
       this.{self::BinaryConstraint::v1}.{self::Variable::removeConstraint}(this);
     if(!this.{self::BinaryConstraint::v2}.{core::Object::==}(null))
       this.{self::BinaryConstraint::v2}.{self::Variable::removeConstraint}(this);
-    this.{self::BinaryConstraint::direction} = #C1;
+    this.{self::BinaryConstraint::direction} = self::NONE;
   }
 }
 class ScaleConstraint extends self::BinaryConstraint {
@@ -210,7 +210,7 @@
     this.{self::ScaleConstraint::scale}.{self::Variable::mark} = this.{self::ScaleConstraint::offset}.{self::Variable::mark} = mark;
   }
   method execute() → void {
-    if(this.{self::BinaryConstraint::direction}.{core::num::==}(#C4)) {
+    if(this.{self::BinaryConstraint::direction}.{core::num::==}(self::FORWARD)) {
       this.{self::BinaryConstraint::v2}.{self::Variable::value} = this.{self::BinaryConstraint::v1}.{self::Variable::value}.{core::num::*}(this.{self::ScaleConstraint::scale}.{self::Variable::value}).{core::num::+}(this.{self::ScaleConstraint::offset}.{self::Variable::value});
     }
     else {
@@ -238,7 +238,7 @@
   field core::List<self::Constraint> constraints = <self::Constraint>[];
   field self::Constraint determinedBy = null;
   field core::int mark = 0;
-  field self::Strength walkStrength = #C18;
+  field self::Strength walkStrength = self::WEAKEST;
   field core::bool stay = true;
   field core::int value;
   final field core::String name;
@@ -269,7 +269,7 @@
     c.{self::Constraint::markUnsatisfied}();
     c.{self::Constraint::removeFromGraph}();
     core::List<self::Constraint> unsatisfied = this.{self::Planner::removePropagateFrom}(out);
-    self::Strength strength = #C22;
+    self::Strength strength = self::REQUIRED;
     do {
       for (core::int i = 0; i.{core::num::<}(unsatisfied.{core::List::length}); i = i.{core::num::+}(1)) {
         self::Constraint u = unsatisfied.{core::List::[]}(i);
@@ -278,7 +278,7 @@
       }
       strength = strength.{self::Strength::nextWeaker}();
     }
-    while (!strength.{core::Object::==}(#C18))
+    while (!strength.{core::Object::==}(self::WEAKEST))
   }
   method newMark() → core::int
     return this.{self::Planner::currentMark} = this.{self::Planner::currentMark}.{core::num::+}(1);
@@ -320,7 +320,7 @@
   }
   method removePropagateFrom(self::Variable out) → core::List<self::Constraint> {
     out.{self::Variable::determinedBy} = null;
-    out.{self::Variable::walkStrength} = #C18;
+    out.{self::Variable::walkStrength} = self::WEAKEST;
     out.{self::Variable::stay} = true;
     core::List<self::Constraint> unsatisfied = <self::Constraint>[];
     core::List<self::Variable> todo = <self::Variable>[out];
@@ -367,16 +367,16 @@
     }
   }
 }
-static const field self::Strength REQUIRED = #C22;
-static const field self::Strength STRONG_PREFERRED = #C3;
-static const field self::Strength PREFERRED = #C6;
-static const field self::Strength STRONG_DEFAULT = #C9;
-static const field self::Strength NORMAL = #C12;
-static const field self::Strength WEAK_DEFAULT = #C15;
-static const field self::Strength WEAKEST = #C18;
-static const field core::int NONE = #C1;
-static const field core::int FORWARD = #C4;
-static const field core::int BACKWARD = #C20;
+static const field self::Strength REQUIRED = const self::Strength::•(0, "required");
+static const field self::Strength STRONG_PREFERRED = const self::Strength::•(1, "strongPreferred");
+static const field self::Strength PREFERRED = const self::Strength::•(2, "preferred");
+static const field self::Strength STRONG_DEFAULT = const self::Strength::•(3, "strongDefault");
+static const field self::Strength NORMAL = const self::Strength::•(4, "normal");
+static const field self::Strength WEAK_DEFAULT = const self::Strength::•(5, "weakDefault");
+static const field self::Strength WEAKEST = const self::Strength::•(6, "weakest");
+static const field core::int NONE = 1;
+static const field core::int FORWARD = 2;
+static const field core::int BACKWARD = 0;
 static field self::Planner planner;
 static method main() → dynamic {
   new self::DeltaBlue::•().{self::DeltaBlue::run}();
@@ -389,15 +389,15 @@
   for (core::int i = 0; i.{core::num::<=}(n); i = i.{core::num::+}(1)) {
     self::Variable v = new self::Variable::•("v${i}", 0);
     if(!prev.{core::Object::==}(null))
-      new self::EqualityConstraint::•(prev, v, #C22);
+      new self::EqualityConstraint::•(prev, v, self::REQUIRED);
     if(i.{core::num::==}(0))
       first = v;
     if(i.{core::num::==}(n))
       last = v;
     prev = v;
   }
-  new self::StayConstraint::•(last, #C9);
-  self::EditConstraint edit = new self::EditConstraint::•(first, #C6);
+  new self::StayConstraint::•(last, self::STRONG_DEFAULT);
+  self::EditConstraint edit = new self::EditConstraint::•(first, self::PREFERRED);
   self::Plan plan = self::planner.{self::Planner::extractPlanFromConstraints}(<self::Constraint>[edit]);
   for (core::int i = 0; i.{core::num::<}(100); i = i.{core::num::+}(1)) {
     first.{self::Variable::value} = i;
@@ -419,8 +419,8 @@
     src = new self::Variable::•("src", i);
     dst = new self::Variable::•("dst", i);
     dests.{core::List::add}(dst);
-    new self::StayConstraint::•(src, #C12);
-    new self::ScaleConstraint::•(src, scale, offset, dst, #C22);
+    new self::StayConstraint::•(src, self::NORMAL);
+    new self::ScaleConstraint::•(src, scale, offset, dst, self::REQUIRED);
   }
   self::change(src, 17);
   if(!dst.{self::Variable::value}.{core::num::==}(1170))
@@ -440,7 +440,7 @@
   }
 }
 static method change(self::Variable v, core::int newValue) → void {
-  self::EditConstraint edit = new self::EditConstraint::•(v, #C6);
+  self::EditConstraint edit = new self::EditConstraint::•(v, self::PREFERRED);
   self::Plan plan = self::planner.{self::Planner::extractPlanFromConstraints}(<self::EditConstraint>[edit]);
   for (core::int i = 0; i.{core::num::<}(10); i = i.{core::num::+}(1)) {
     v.{self::Variable::value} = newValue;
diff --git a/pkg/front_end/testcases/abstract_members.dart.legacy.expect b/pkg/front_end/testcases/abstract_members.dart.legacy.expect
index 45444c9..5a3c3d0 100644
--- a/pkg/front_end/testcases/abstract_members.dart.legacy.expect
+++ b/pkg/front_end/testcases/abstract_members.dart.legacy.expect
@@ -182,13 +182,13 @@
   method bMethod() → dynamic {}
   method cMethod() → dynamic {}
   no-such-method-forwarder get interfaceMethod1() → dynamic
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))) as{TypeError} dynamic;
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#interfaceMethod1, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} dynamic;
   no-such-method-forwarder set property3(dynamic _) → void
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#property3=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   no-such-method-forwarder set interfaceMethod1(dynamic value) → void
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#interfaceMethod1=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   no-such-method-forwarder set property1(dynamic _) → void
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#property1=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 class MyMock1 extends self::B {
   synthetic constructor •() → self::MyMock1
@@ -197,21 +197,21 @@
   method noSuchMethod(dynamic _) → dynamic
     return null;
   no-such-method-forwarder method interfaceMethod2() → void
-    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#interfaceMethod2, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   no-such-method-forwarder method abstractMethod() → dynamic
-    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))) as{TypeError} dynamic;
+    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#abstractMethod, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} dynamic;
   no-such-method-forwarder method interfaceMethod1() → void
-    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#interfaceMethod1, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   no-such-method-forwarder method interfaceMethod3() → void
-    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#interfaceMethod3, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   no-such-method-forwarder set property3(dynamic _) → void
-    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#property3=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   no-such-method-forwarder set interfaceMethod1(dynamic value) → void
-    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#interfaceMethod1=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   no-such-method-forwarder set property1(dynamic _) → void
-    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#property1=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   no-such-method-forwarder set property2(dynamic _) → void
-    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C11, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#property2=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 class MyMock2 extends self::MyMock1 {
   synthetic constructor •() → self::MyMock2
@@ -225,15 +225,15 @@
     ;
   abstract method noSuchMethod(dynamic _) → dynamic;
   no-such-method-forwarder get interfaceMethod1() → dynamic
-    return this.{self::MyMock3::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))) as{TypeError} dynamic;
+    return this.{self::MyMock3::noSuchMethod}(new core::_InvocationMirror::_withType(#interfaceMethod1, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} dynamic;
   no-such-method-forwarder set property3(dynamic _) → void
-    return this.{self::MyMock3::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::MyMock3::noSuchMethod}(new core::_InvocationMirror::_withType(#property3=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   no-such-method-forwarder set interfaceMethod1(dynamic value) → void
-    return this.{self::MyMock3::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::MyMock3::noSuchMethod}(new core::_InvocationMirror::_withType(#interfaceMethod1=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   no-such-method-forwarder set property1(dynamic _) → void
-    return this.{self::MyMock3::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::MyMock3::noSuchMethod}(new core::_InvocationMirror::_withType(#property1=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   no-such-method-forwarder set property2(dynamic _) → void
-    return this.{self::MyMock3::noSuchMethod}(new core::_InvocationMirror::_withType(#C11, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::MyMock3::noSuchMethod}(new core::_InvocationMirror::_withType(#property2=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 class C extends core::Object {
   synthetic constructor •() → self::C
diff --git a/pkg/front_end/testcases/abstract_members.dart.legacy.transformed.expect b/pkg/front_end/testcases/abstract_members.dart.legacy.transformed.expect
index 45444c9..5a3c3d0 100644
--- a/pkg/front_end/testcases/abstract_members.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/abstract_members.dart.legacy.transformed.expect
@@ -182,13 +182,13 @@
   method bMethod() → dynamic {}
   method cMethod() → dynamic {}
   no-such-method-forwarder get interfaceMethod1() → dynamic
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))) as{TypeError} dynamic;
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#interfaceMethod1, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} dynamic;
   no-such-method-forwarder set property3(dynamic _) → void
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#property3=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   no-such-method-forwarder set interfaceMethod1(dynamic value) → void
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#interfaceMethod1=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   no-such-method-forwarder set property1(dynamic _) → void
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#property1=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 class MyMock1 extends self::B {
   synthetic constructor •() → self::MyMock1
@@ -197,21 +197,21 @@
   method noSuchMethod(dynamic _) → dynamic
     return null;
   no-such-method-forwarder method interfaceMethod2() → void
-    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#interfaceMethod2, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   no-such-method-forwarder method abstractMethod() → dynamic
-    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))) as{TypeError} dynamic;
+    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#abstractMethod, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} dynamic;
   no-such-method-forwarder method interfaceMethod1() → void
-    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#interfaceMethod1, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   no-such-method-forwarder method interfaceMethod3() → void
-    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#interfaceMethod3, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   no-such-method-forwarder set property3(dynamic _) → void
-    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#property3=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   no-such-method-forwarder set interfaceMethod1(dynamic value) → void
-    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#interfaceMethod1=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   no-such-method-forwarder set property1(dynamic _) → void
-    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#property1=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   no-such-method-forwarder set property2(dynamic _) → void
-    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C11, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#property2=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 class MyMock2 extends self::MyMock1 {
   synthetic constructor •() → self::MyMock2
@@ -225,15 +225,15 @@
     ;
   abstract method noSuchMethod(dynamic _) → dynamic;
   no-such-method-forwarder get interfaceMethod1() → dynamic
-    return this.{self::MyMock3::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))) as{TypeError} dynamic;
+    return this.{self::MyMock3::noSuchMethod}(new core::_InvocationMirror::_withType(#interfaceMethod1, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} dynamic;
   no-such-method-forwarder set property3(dynamic _) → void
-    return this.{self::MyMock3::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::MyMock3::noSuchMethod}(new core::_InvocationMirror::_withType(#property3=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   no-such-method-forwarder set interfaceMethod1(dynamic value) → void
-    return this.{self::MyMock3::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::MyMock3::noSuchMethod}(new core::_InvocationMirror::_withType(#interfaceMethod1=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   no-such-method-forwarder set property1(dynamic _) → void
-    return this.{self::MyMock3::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::MyMock3::noSuchMethod}(new core::_InvocationMirror::_withType(#property1=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   no-such-method-forwarder set property2(dynamic _) → void
-    return this.{self::MyMock3::noSuchMethod}(new core::_InvocationMirror::_withType(#C11, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::MyMock3::noSuchMethod}(new core::_InvocationMirror::_withType(#property2=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 class C extends core::Object {
   synthetic constructor •() → self::C
diff --git a/pkg/front_end/testcases/abstract_members.dart.strong.expect b/pkg/front_end/testcases/abstract_members.dart.strong.expect
index 8e1bc65..0322fcb 100644
--- a/pkg/front_end/testcases/abstract_members.dart.strong.expect
+++ b/pkg/front_end/testcases/abstract_members.dart.strong.expect
@@ -182,13 +182,13 @@
   method bMethod() → dynamic {}
   method cMethod() → dynamic {}
   no-such-method-forwarder get interfaceMethod1() → dynamic
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))) as{TypeError} dynamic;
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#interfaceMethod1, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} dynamic;
   no-such-method-forwarder set property3(dynamic _) → void
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#property3=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   no-such-method-forwarder set interfaceMethod1(dynamic value) → void
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#interfaceMethod1=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   no-such-method-forwarder set property1(dynamic _) → void
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#property1=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 class MyMock1 extends self::B {
   synthetic constructor •() → self::MyMock1
@@ -197,21 +197,21 @@
   method noSuchMethod(core::Invocation _) → dynamic
     return null;
   no-such-method-forwarder method interfaceMethod2() → void
-    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#interfaceMethod2, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   no-such-method-forwarder method abstractMethod() → dynamic
-    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))) as{TypeError} dynamic;
+    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#abstractMethod, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} dynamic;
   no-such-method-forwarder method interfaceMethod1() → void
-    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#interfaceMethod1, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   no-such-method-forwarder method interfaceMethod3() → void
-    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#interfaceMethod3, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   no-such-method-forwarder set property3(dynamic _) → void
-    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#property3=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   no-such-method-forwarder set interfaceMethod1(dynamic value) → void
-    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#interfaceMethod1=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   no-such-method-forwarder set property1(dynamic _) → void
-    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#property1=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   no-such-method-forwarder set property2(dynamic _) → void
-    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C11, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#property2=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 class MyMock2 extends self::MyMock1 {
   synthetic constructor •() → self::MyMock2
@@ -225,15 +225,15 @@
     ;
   abstract method noSuchMethod(core::Invocation _) → dynamic;
   no-such-method-forwarder get interfaceMethod1() → dynamic
-    return this.{self::MyMock3::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))) as{TypeError} dynamic;
+    return this.{self::MyMock3::noSuchMethod}(new core::_InvocationMirror::_withType(#interfaceMethod1, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} dynamic;
   no-such-method-forwarder set property3(dynamic _) → void
-    return this.{self::MyMock3::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::MyMock3::noSuchMethod}(new core::_InvocationMirror::_withType(#property3=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   no-such-method-forwarder set interfaceMethod1(dynamic value) → void
-    return this.{self::MyMock3::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::MyMock3::noSuchMethod}(new core::_InvocationMirror::_withType(#interfaceMethod1=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   no-such-method-forwarder set property1(dynamic _) → void
-    return this.{self::MyMock3::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::MyMock3::noSuchMethod}(new core::_InvocationMirror::_withType(#property1=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   no-such-method-forwarder set property2(dynamic _) → void
-    return this.{self::MyMock3::noSuchMethod}(new core::_InvocationMirror::_withType(#C11, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::MyMock3::noSuchMethod}(new core::_InvocationMirror::_withType(#property2=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 class C extends core::Object {
   synthetic constructor •() → self::C
diff --git a/pkg/front_end/testcases/accessors.dart.legacy.expect b/pkg/front_end/testcases/accessors.dart.legacy.expect
index 1d8e209..7de21a4 100644
--- a/pkg/front_end/testcases/accessors.dart.legacy.expect
+++ b/pkg/front_end/testcases/accessors.dart.legacy.expect
@@ -54,7 +54,7 @@
 }
 static method main() → dynamic {
   try {
-    core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 33, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))));
+    core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#onlySetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
     throw "No error thrown";
   }
   on core::NoSuchMethodError catch(final core::NoSuchMethodError e) {
diff --git a/pkg/front_end/testcases/accessors.dart.legacy.transformed.expect b/pkg/front_end/testcases/accessors.dart.legacy.transformed.expect
index 1d8e209..7de21a4 100644
--- a/pkg/front_end/testcases/accessors.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/accessors.dart.legacy.transformed.expect
@@ -54,7 +54,7 @@
 }
 static method main() → dynamic {
   try {
-    core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 33, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))));
+    core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#onlySetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
     throw "No error thrown";
   }
   on core::NoSuchMethodError catch(final core::NoSuchMethodError e) {
diff --git a/pkg/front_end/testcases/ambiguous_exports.dart.legacy.expect b/pkg/front_end/testcases/ambiguous_exports.dart.legacy.expect
index 64855bc..f098443 100644
--- a/pkg/front_end/testcases/ambiguous_exports.dart.legacy.expect
+++ b/pkg/front_end/testcases/ambiguous_exports.dart.legacy.expect
@@ -7,12 +7,11 @@
 // ^
 //
 import self as self;
-import "dart:core" as core;
 
 export "org-dartlang-testcase:///hello.dart";
 export "org-dartlang-testcase:///map.dart";
 
-static const field dynamic _exports# = #C1 /* from null */;
+static const field dynamic _exports# = "{\"main\":\"'main' is exported from both 'pkg/front_end/testcases/hello.dart' and 'pkg/front_end/testcases/map.dart'.\"}" /* from null */;
 
 library;
 import self as self2;
diff --git a/pkg/front_end/testcases/ambiguous_exports.dart.legacy.transformed.expect b/pkg/front_end/testcases/ambiguous_exports.dart.legacy.transformed.expect
index 64855bc..f098443 100644
--- a/pkg/front_end/testcases/ambiguous_exports.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/ambiguous_exports.dart.legacy.transformed.expect
@@ -7,12 +7,11 @@
 // ^
 //
 import self as self;
-import "dart:core" as core;
 
 export "org-dartlang-testcase:///hello.dart";
 export "org-dartlang-testcase:///map.dart";
 
-static const field dynamic _exports# = #C1 /* from null */;
+static const field dynamic _exports# = "{\"main\":\"'main' is exported from both 'pkg/front_end/testcases/hello.dart' and 'pkg/front_end/testcases/map.dart'.\"}" /* from null */;
 
 library;
 import self as self2;
diff --git a/pkg/front_end/testcases/ambiguous_exports.dart.strong.expect b/pkg/front_end/testcases/ambiguous_exports.dart.strong.expect
index 64855bc..f098443 100644
--- a/pkg/front_end/testcases/ambiguous_exports.dart.strong.expect
+++ b/pkg/front_end/testcases/ambiguous_exports.dart.strong.expect
@@ -7,12 +7,11 @@
 // ^
 //
 import self as self;
-import "dart:core" as core;
 
 export "org-dartlang-testcase:///hello.dart";
 export "org-dartlang-testcase:///map.dart";
 
-static const field dynamic _exports# = #C1 /* from null */;
+static const field dynamic _exports# = "{\"main\":\"'main' is exported from both 'pkg/front_end/testcases/hello.dart' and 'pkg/front_end/testcases/map.dart'.\"}" /* from null */;
 
 library;
 import self as self2;
diff --git a/pkg/front_end/testcases/ambiguous_exports.dart.strong.transformed.expect b/pkg/front_end/testcases/ambiguous_exports.dart.strong.transformed.expect
index 64855bc..f098443 100644
--- a/pkg/front_end/testcases/ambiguous_exports.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/ambiguous_exports.dart.strong.transformed.expect
@@ -7,12 +7,11 @@
 // ^
 //
 import self as self;
-import "dart:core" as core;
 
 export "org-dartlang-testcase:///hello.dart";
 export "org-dartlang-testcase:///map.dart";
 
-static const field dynamic _exports# = #C1 /* from null */;
+static const field dynamic _exports# = "{\"main\":\"'main' is exported from both 'pkg/front_end/testcases/hello.dart' and 'pkg/front_end/testcases/map.dart'.\"}" /* from null */;
 
 library;
 import self as self2;
diff --git a/pkg/front_end/testcases/annotation_on_enum_values.dart.legacy.expect b/pkg/front_end/testcases/annotation_on_enum_values.dart.legacy.expect
index b5e7e82..d0e40c2 100644
--- a/pkg/front_end/testcases/annotation_on_enum_values.dart.legacy.expect
+++ b/pkg/front_end/testcases/annotation_on_enum_values.dart.legacy.expect
@@ -11,17 +11,17 @@
 class Foo extends core::Object {
   final field core::int index;
   final field core::String _name;
-  static const field core::List<self::Foo> values = #C10;
-  @#C11
-  static const field self::Foo bar = #C3;
-  @#C12
-  static const field self::Foo baz = #C6;
-  static const field self::Foo cafebabe = #C9;
+  static const field core::List<self::Foo> values = const <self::Foo>[self::Foo::bar, self::Foo::baz, self::Foo::cafebabe];
+  @self::hest
+  static const field self::Foo bar = const self::Foo::•(0, "Foo.bar");
+  @self::Fisk::fisk<dynamic>(self::hest)
+  static const field self::Foo baz = const self::Foo::•(1, "Foo.baz");
+  static const field self::Foo cafebabe = const self::Foo::•(2, "Foo.cafebabe");
   const constructor •(core::int index, core::String _name) → self::Foo
     : self::Foo::index = index, self::Foo::_name = _name, super core::Object::•()
     ;
   method toString() → core::String
     return this.{=self::Foo::_name};
 }
-static const field core::int hest = #C11;
+static const field core::int hest = 42;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/annotation_on_enum_values.dart.legacy.transformed.expect b/pkg/front_end/testcases/annotation_on_enum_values.dart.legacy.transformed.expect
index b5e7e82..d0e40c2 100644
--- a/pkg/front_end/testcases/annotation_on_enum_values.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/annotation_on_enum_values.dart.legacy.transformed.expect
@@ -11,17 +11,17 @@
 class Foo extends core::Object {
   final field core::int index;
   final field core::String _name;
-  static const field core::List<self::Foo> values = #C10;
-  @#C11
-  static const field self::Foo bar = #C3;
-  @#C12
-  static const field self::Foo baz = #C6;
-  static const field self::Foo cafebabe = #C9;
+  static const field core::List<self::Foo> values = const <self::Foo>[self::Foo::bar, self::Foo::baz, self::Foo::cafebabe];
+  @self::hest
+  static const field self::Foo bar = const self::Foo::•(0, "Foo.bar");
+  @self::Fisk::fisk<dynamic>(self::hest)
+  static const field self::Foo baz = const self::Foo::•(1, "Foo.baz");
+  static const field self::Foo cafebabe = const self::Foo::•(2, "Foo.cafebabe");
   const constructor •(core::int index, core::String _name) → self::Foo
     : self::Foo::index = index, self::Foo::_name = _name, super core::Object::•()
     ;
   method toString() → core::String
     return this.{=self::Foo::_name};
 }
-static const field core::int hest = #C11;
+static const field core::int hest = 42;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/annotation_on_enum_values.dart.strong.expect b/pkg/front_end/testcases/annotation_on_enum_values.dart.strong.expect
index b5e7e82..5d8249c 100644
--- a/pkg/front_end/testcases/annotation_on_enum_values.dart.strong.expect
+++ b/pkg/front_end/testcases/annotation_on_enum_values.dart.strong.expect
@@ -11,17 +11,17 @@
 class Foo extends core::Object {
   final field core::int index;
   final field core::String _name;
-  static const field core::List<self::Foo> values = #C10;
-  @#C11
-  static const field self::Foo bar = #C3;
-  @#C12
-  static const field self::Foo baz = #C6;
-  static const field self::Foo cafebabe = #C9;
+  static const field core::List<self::Foo> values = const <self::Foo>[self::Foo::bar, self::Foo::baz, self::Foo::cafebabe];
+  @self::hest
+  static const field self::Foo bar = const self::Foo::•(0, "Foo.bar");
+  @self::Fisk::fisk<core::int>(self::hest)
+  static const field self::Foo baz = const self::Foo::•(1, "Foo.baz");
+  static const field self::Foo cafebabe = const self::Foo::•(2, "Foo.cafebabe");
   const constructor •(core::int index, core::String _name) → self::Foo
     : self::Foo::index = index, self::Foo::_name = _name, super core::Object::•()
     ;
   method toString() → core::String
     return this.{=self::Foo::_name};
 }
-static const field core::int hest = #C11;
+static const field core::int hest = 42;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/annotation_on_enum_values.dart.strong.transformed.expect b/pkg/front_end/testcases/annotation_on_enum_values.dart.strong.transformed.expect
index b5e7e82..5d8249c 100644
--- a/pkg/front_end/testcases/annotation_on_enum_values.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/annotation_on_enum_values.dart.strong.transformed.expect
@@ -11,17 +11,17 @@
 class Foo extends core::Object {
   final field core::int index;
   final field core::String _name;
-  static const field core::List<self::Foo> values = #C10;
-  @#C11
-  static const field self::Foo bar = #C3;
-  @#C12
-  static const field self::Foo baz = #C6;
-  static const field self::Foo cafebabe = #C9;
+  static const field core::List<self::Foo> values = const <self::Foo>[self::Foo::bar, self::Foo::baz, self::Foo::cafebabe];
+  @self::hest
+  static const field self::Foo bar = const self::Foo::•(0, "Foo.bar");
+  @self::Fisk::fisk<core::int>(self::hest)
+  static const field self::Foo baz = const self::Foo::•(1, "Foo.baz");
+  static const field self::Foo cafebabe = const self::Foo::•(2, "Foo.cafebabe");
   const constructor •(core::int index, core::String _name) → self::Foo
     : self::Foo::index = index, self::Foo::_name = _name, super core::Object::•()
     ;
   method toString() → core::String
     return this.{=self::Foo::_name};
 }
-static const field core::int hest = #C11;
+static const field core::int hest = 42;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/annotation_top.dart.legacy.expect b/pkg/front_end/testcases/annotation_top.dart.legacy.expect
index 796cf7f..3498e81 100644
--- a/pkg/front_end/testcases/annotation_top.dart.legacy.expect
+++ b/pkg/front_end/testcases/annotation_top.dart.legacy.expect
@@ -1,34 +1,34 @@
-@#C1
-@#C2
+@test::a
+@test::A::•(1)
 library test;
 import self as self;
 import "dart:core" as core;
 
-@#C1
-@#C2
+@self::a
+@self::A::•(2)
 typedef F1 = () → void;
-@#C1
-@#C2
+@self::a
+@self::A::•(3)
 typedef F2 = () → void;
 class A extends core::Object {
   const constructor •(core::int value) → self::A
     : super core::Object::•()
     ;
 }
-@#C1
-@#C2
+@self::a
+@self::A::•(2)
 class C extends core::Object {
   synthetic constructor •() → self::C
     : super core::Object::•()
     ;
 }
-static const field core::Object a = #C1;
-@#C1
-@#C2
+static const field core::Object a = const core::Object::•();
+@self::a
+@self::A::•(3)
 static field core::int f1;
-@#C1
-@#C2
+@self::a
+@self::A::•(3)
 static field core::int f2;
-@#C1
-@#C2
+@self::a
+@self::A::•(4)
 static method main() → void {}
diff --git a/pkg/front_end/testcases/annotation_top.dart.legacy.transformed.expect b/pkg/front_end/testcases/annotation_top.dart.legacy.transformed.expect
index 796cf7f..3498e81 100644
--- a/pkg/front_end/testcases/annotation_top.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/annotation_top.dart.legacy.transformed.expect
@@ -1,34 +1,34 @@
-@#C1
-@#C2
+@test::a
+@test::A::•(1)
 library test;
 import self as self;
 import "dart:core" as core;
 
-@#C1
-@#C2
+@self::a
+@self::A::•(2)
 typedef F1 = () → void;
-@#C1
-@#C2
+@self::a
+@self::A::•(3)
 typedef F2 = () → void;
 class A extends core::Object {
   const constructor •(core::int value) → self::A
     : super core::Object::•()
     ;
 }
-@#C1
-@#C2
+@self::a
+@self::A::•(2)
 class C extends core::Object {
   synthetic constructor •() → self::C
     : super core::Object::•()
     ;
 }
-static const field core::Object a = #C1;
-@#C1
-@#C2
+static const field core::Object a = const core::Object::•();
+@self::a
+@self::A::•(3)
 static field core::int f1;
-@#C1
-@#C2
+@self::a
+@self::A::•(3)
 static field core::int f2;
-@#C1
-@#C2
+@self::a
+@self::A::•(4)
 static method main() → void {}
diff --git a/pkg/front_end/testcases/annotation_top.dart.strong.expect b/pkg/front_end/testcases/annotation_top.dart.strong.expect
index 796cf7f..3498e81 100644
--- a/pkg/front_end/testcases/annotation_top.dart.strong.expect
+++ b/pkg/front_end/testcases/annotation_top.dart.strong.expect
@@ -1,34 +1,34 @@
-@#C1
-@#C2
+@test::a
+@test::A::•(1)
 library test;
 import self as self;
 import "dart:core" as core;
 
-@#C1
-@#C2
+@self::a
+@self::A::•(2)
 typedef F1 = () → void;
-@#C1
-@#C2
+@self::a
+@self::A::•(3)
 typedef F2 = () → void;
 class A extends core::Object {
   const constructor •(core::int value) → self::A
     : super core::Object::•()
     ;
 }
-@#C1
-@#C2
+@self::a
+@self::A::•(2)
 class C extends core::Object {
   synthetic constructor •() → self::C
     : super core::Object::•()
     ;
 }
-static const field core::Object a = #C1;
-@#C1
-@#C2
+static const field core::Object a = const core::Object::•();
+@self::a
+@self::A::•(3)
 static field core::int f1;
-@#C1
-@#C2
+@self::a
+@self::A::•(3)
 static field core::int f2;
-@#C1
-@#C2
+@self::a
+@self::A::•(4)
 static method main() → void {}
diff --git a/pkg/front_end/testcases/annotation_top.dart.strong.transformed.expect b/pkg/front_end/testcases/annotation_top.dart.strong.transformed.expect
index 796cf7f..3498e81 100644
--- a/pkg/front_end/testcases/annotation_top.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/annotation_top.dart.strong.transformed.expect
@@ -1,34 +1,34 @@
-@#C1
-@#C2
+@test::a
+@test::A::•(1)
 library test;
 import self as self;
 import "dart:core" as core;
 
-@#C1
-@#C2
+@self::a
+@self::A::•(2)
 typedef F1 = () → void;
-@#C1
-@#C2
+@self::a
+@self::A::•(3)
 typedef F2 = () → void;
 class A extends core::Object {
   const constructor •(core::int value) → self::A
     : super core::Object::•()
     ;
 }
-@#C1
-@#C2
+@self::a
+@self::A::•(2)
 class C extends core::Object {
   synthetic constructor •() → self::C
     : super core::Object::•()
     ;
 }
-static const field core::Object a = #C1;
-@#C1
-@#C2
+static const field core::Object a = const core::Object::•();
+@self::a
+@self::A::•(3)
 static field core::int f1;
-@#C1
-@#C2
+@self::a
+@self::A::•(3)
 static field core::int f2;
-@#C1
-@#C2
+@self::a
+@self::A::•(4)
 static method main() → void {}
diff --git a/pkg/front_end/testcases/annotation_typedef_formals.dart.legacy.expect b/pkg/front_end/testcases/annotation_typedef_formals.dart.legacy.expect
index 771bd53..cca0222 100644
--- a/pkg/front_end/testcases/annotation_typedef_formals.dart.legacy.expect
+++ b/pkg/front_end/testcases/annotation_typedef_formals.dart.legacy.expect
@@ -2,9 +2,9 @@
 import self as self;
 import "dart:core" as core;
 
-typedef F = (@#C1 core::int x, core::num y, {@#C2 @#C3 core::String z, core::Object w}) → void;
-typedef G = (@#C1 core::int a, core::num b, [@#C2 @#C3 core::String c, core::Object d]) → void;
-static const field core::int foo = #C1;
-static const field core::int bar = #C2;
-static const field core::int baz = #C3;
+typedef F = (@self::foo core::int x, core::num y, {@self::bar @self::baz core::String z, core::Object w}) → void;
+typedef G = (@self::foo core::int a, core::num b, [@self::bar @self::baz core::String c, core::Object d]) → void;
+static const field core::int foo = 21;
+static const field core::int bar = 42;
+static const field core::int baz = 84;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/annotation_typedef_formals.dart.legacy.transformed.expect b/pkg/front_end/testcases/annotation_typedef_formals.dart.legacy.transformed.expect
index 771bd53..cca0222 100644
--- a/pkg/front_end/testcases/annotation_typedef_formals.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/annotation_typedef_formals.dart.legacy.transformed.expect
@@ -2,9 +2,9 @@
 import self as self;
 import "dart:core" as core;
 
-typedef F = (@#C1 core::int x, core::num y, {@#C2 @#C3 core::String z, core::Object w}) → void;
-typedef G = (@#C1 core::int a, core::num b, [@#C2 @#C3 core::String c, core::Object d]) → void;
-static const field core::int foo = #C1;
-static const field core::int bar = #C2;
-static const field core::int baz = #C3;
+typedef F = (@self::foo core::int x, core::num y, {@self::bar @self::baz core::String z, core::Object w}) → void;
+typedef G = (@self::foo core::int a, core::num b, [@self::bar @self::baz core::String c, core::Object d]) → void;
+static const field core::int foo = 21;
+static const field core::int bar = 42;
+static const field core::int baz = 84;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/annotation_typedef_formals.dart.strong.expect b/pkg/front_end/testcases/annotation_typedef_formals.dart.strong.expect
index 771bd53..cca0222 100644
--- a/pkg/front_end/testcases/annotation_typedef_formals.dart.strong.expect
+++ b/pkg/front_end/testcases/annotation_typedef_formals.dart.strong.expect
@@ -2,9 +2,9 @@
 import self as self;
 import "dart:core" as core;
 
-typedef F = (@#C1 core::int x, core::num y, {@#C2 @#C3 core::String z, core::Object w}) → void;
-typedef G = (@#C1 core::int a, core::num b, [@#C2 @#C3 core::String c, core::Object d]) → void;
-static const field core::int foo = #C1;
-static const field core::int bar = #C2;
-static const field core::int baz = #C3;
+typedef F = (@self::foo core::int x, core::num y, {@self::bar @self::baz core::String z, core::Object w}) → void;
+typedef G = (@self::foo core::int a, core::num b, [@self::bar @self::baz core::String c, core::Object d]) → void;
+static const field core::int foo = 21;
+static const field core::int bar = 42;
+static const field core::int baz = 84;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/annotation_typedef_formals.dart.strong.transformed.expect b/pkg/front_end/testcases/annotation_typedef_formals.dart.strong.transformed.expect
index 771bd53..cca0222 100644
--- a/pkg/front_end/testcases/annotation_typedef_formals.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/annotation_typedef_formals.dart.strong.transformed.expect
@@ -2,9 +2,9 @@
 import self as self;
 import "dart:core" as core;
 
-typedef F = (@#C1 core::int x, core::num y, {@#C2 @#C3 core::String z, core::Object w}) → void;
-typedef G = (@#C1 core::int a, core::num b, [@#C2 @#C3 core::String c, core::Object d]) → void;
-static const field core::int foo = #C1;
-static const field core::int bar = #C2;
-static const field core::int baz = #C3;
+typedef F = (@self::foo core::int x, core::num y, {@self::bar @self::baz core::String z, core::Object w}) → void;
+typedef G = (@self::foo core::int a, core::num b, [@self::bar @self::baz core::String c, core::Object d]) → void;
+static const field core::int foo = 21;
+static const field core::int bar = 42;
+static const field core::int baz = 84;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/annotation_typedef_formals_resolution.dart.legacy.expect b/pkg/front_end/testcases/annotation_typedef_formals_resolution.dart.legacy.expect
index 6bd10cb..4f8c56b 100644
--- a/pkg/front_end/testcases/annotation_typedef_formals_resolution.dart.legacy.expect
+++ b/pkg/front_end/testcases/annotation_typedef_formals_resolution.dart.legacy.expect
@@ -2,6 +2,6 @@
 import self as self;
 import "dart:core" as core;
 
-typedef F = (@#C1 core::int app) → core::int;
-static const field core::int app = #C1;
+typedef F = (@self::app core::int app) → core::int;
+static const field core::int app = 0;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/annotation_typedef_formals_resolution.dart.legacy.transformed.expect b/pkg/front_end/testcases/annotation_typedef_formals_resolution.dart.legacy.transformed.expect
index 6bd10cb..4f8c56b 100644
--- a/pkg/front_end/testcases/annotation_typedef_formals_resolution.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/annotation_typedef_formals_resolution.dart.legacy.transformed.expect
@@ -2,6 +2,6 @@
 import self as self;
 import "dart:core" as core;
 
-typedef F = (@#C1 core::int app) → core::int;
-static const field core::int app = #C1;
+typedef F = (@self::app core::int app) → core::int;
+static const field core::int app = 0;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/annotation_typedef_formals_resolution.dart.strong.expect b/pkg/front_end/testcases/annotation_typedef_formals_resolution.dart.strong.expect
index 6bd10cb..4f8c56b 100644
--- a/pkg/front_end/testcases/annotation_typedef_formals_resolution.dart.strong.expect
+++ b/pkg/front_end/testcases/annotation_typedef_formals_resolution.dart.strong.expect
@@ -2,6 +2,6 @@
 import self as self;
 import "dart:core" as core;
 
-typedef F = (@#C1 core::int app) → core::int;
-static const field core::int app = #C1;
+typedef F = (@self::app core::int app) → core::int;
+static const field core::int app = 0;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/annotation_typedef_formals_resolution.dart.strong.transformed.expect b/pkg/front_end/testcases/annotation_typedef_formals_resolution.dart.strong.transformed.expect
index 6bd10cb..4f8c56b 100644
--- a/pkg/front_end/testcases/annotation_typedef_formals_resolution.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/annotation_typedef_formals_resolution.dart.strong.transformed.expect
@@ -2,6 +2,6 @@
 import self as self;
 import "dart:core" as core;
 
-typedef F = (@#C1 core::int app) → core::int;
-static const field core::int app = #C1;
+typedef F = (@self::app core::int app) → core::int;
+static const field core::int app = 0;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/annotation_variable_declaration.dart.legacy.expect b/pkg/front_end/testcases/annotation_variable_declaration.dart.legacy.expect
index 18fe25d..a437f1e 100644
--- a/pkg/front_end/testcases/annotation_variable_declaration.dart.legacy.expect
+++ b/pkg/front_end/testcases/annotation_variable_declaration.dart.legacy.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-typedef hest_t = ({@#C1 dynamic named}) → dynamic;
+typedef hest_t = ({@self::foo dynamic named}) → dynamic;
 class Bar extends core::Object {
   const constructor •() → self::Bar
     : super core::Object::•()
@@ -12,25 +12,25 @@
     ;
 }
 class Baz extends core::Object {
-  constructor •(@#C1 dynamic constructorFormal) → self::Baz
+  constructor •(@self::foo dynamic constructorFormal) → self::Baz
     : super core::Object::•()
     ;
-  static factory bazFactory(@#C1 dynamic factoryFormal) → self::Baz
+  static factory bazFactory(@self::foo dynamic factoryFormal) → self::Baz
     return null;
-  method fisk(@#C1 dynamic formal1, @#C2 dynamic formal2, @#C2 dynamic formal3, @#C1 @#C2 dynamic formal4, [@#C1 dynamic optional = #C3]) → dynamic {
-    @#C1 dynamic local1;
-    @#C2 dynamic local2;
-    @#C2 dynamic local3;
-    @#C1 @#C2 dynamic local4;
-    @#C1 dynamic localWithInitializer = "hello";
-    @#C1 @#C2 dynamic localGroupPart1;
-    @#C1 @#C2 dynamic localGroupPart2;
-    function naebdyr(@#C1 dynamic nestedFormal) → dynamic
+  method fisk(@self::foo dynamic formal1, @self::Bar::•() dynamic formal2, @self::Bar::named(self::foo) dynamic formal3, @self::foo @self::Bar::named(self::foo) dynamic formal4, [@self::foo dynamic optional = null]) → dynamic {
+    @self::foo dynamic local1;
+    @self::Bar::•() dynamic local2;
+    @self::Bar::named(self::foo) dynamic local3;
+    @self::foo @self::Bar::named(self::foo) dynamic local4;
+    @self::foo dynamic localWithInitializer = "hello";
+    @self::foo @self::Bar::named(self::foo) dynamic localGroupPart1;
+    @self::foo @self::Bar::named(self::foo) dynamic localGroupPart2;
+    function naebdyr(@self::foo dynamic nestedFormal) → dynamic
       return null;
-    dynamic roedmus = (@#C1 dynamic closureFormal) → dynamic => null;
+    dynamic roedmus = (@self::foo dynamic closureFormal) → dynamic => null;
   }
-  method hest({@#C1 dynamic named = #C3}) → dynamic
+  method hest({@self::foo dynamic named = null}) → dynamic
     return null;
 }
-static const field core::int foo = #C1;
+static const field core::int foo = 42;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/annotation_variable_declaration.dart.legacy.transformed.expect b/pkg/front_end/testcases/annotation_variable_declaration.dart.legacy.transformed.expect
index 18fe25d..a437f1e 100644
--- a/pkg/front_end/testcases/annotation_variable_declaration.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/annotation_variable_declaration.dart.legacy.transformed.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-typedef hest_t = ({@#C1 dynamic named}) → dynamic;
+typedef hest_t = ({@self::foo dynamic named}) → dynamic;
 class Bar extends core::Object {
   const constructor •() → self::Bar
     : super core::Object::•()
@@ -12,25 +12,25 @@
     ;
 }
 class Baz extends core::Object {
-  constructor •(@#C1 dynamic constructorFormal) → self::Baz
+  constructor •(@self::foo dynamic constructorFormal) → self::Baz
     : super core::Object::•()
     ;
-  static factory bazFactory(@#C1 dynamic factoryFormal) → self::Baz
+  static factory bazFactory(@self::foo dynamic factoryFormal) → self::Baz
     return null;
-  method fisk(@#C1 dynamic formal1, @#C2 dynamic formal2, @#C2 dynamic formal3, @#C1 @#C2 dynamic formal4, [@#C1 dynamic optional = #C3]) → dynamic {
-    @#C1 dynamic local1;
-    @#C2 dynamic local2;
-    @#C2 dynamic local3;
-    @#C1 @#C2 dynamic local4;
-    @#C1 dynamic localWithInitializer = "hello";
-    @#C1 @#C2 dynamic localGroupPart1;
-    @#C1 @#C2 dynamic localGroupPart2;
-    function naebdyr(@#C1 dynamic nestedFormal) → dynamic
+  method fisk(@self::foo dynamic formal1, @self::Bar::•() dynamic formal2, @self::Bar::named(self::foo) dynamic formal3, @self::foo @self::Bar::named(self::foo) dynamic formal4, [@self::foo dynamic optional = null]) → dynamic {
+    @self::foo dynamic local1;
+    @self::Bar::•() dynamic local2;
+    @self::Bar::named(self::foo) dynamic local3;
+    @self::foo @self::Bar::named(self::foo) dynamic local4;
+    @self::foo dynamic localWithInitializer = "hello";
+    @self::foo @self::Bar::named(self::foo) dynamic localGroupPart1;
+    @self::foo @self::Bar::named(self::foo) dynamic localGroupPart2;
+    function naebdyr(@self::foo dynamic nestedFormal) → dynamic
       return null;
-    dynamic roedmus = (@#C1 dynamic closureFormal) → dynamic => null;
+    dynamic roedmus = (@self::foo dynamic closureFormal) → dynamic => null;
   }
-  method hest({@#C1 dynamic named = #C3}) → dynamic
+  method hest({@self::foo dynamic named = null}) → dynamic
     return null;
 }
-static const field core::int foo = #C1;
+static const field core::int foo = 42;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/annotation_variable_declaration.dart.strong.expect b/pkg/front_end/testcases/annotation_variable_declaration.dart.strong.expect
index e11731e..b848b38 100644
--- a/pkg/front_end/testcases/annotation_variable_declaration.dart.strong.expect
+++ b/pkg/front_end/testcases/annotation_variable_declaration.dart.strong.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-typedef hest_t = ({@#C1 dynamic named}) → dynamic;
+typedef hest_t = ({@self::foo dynamic named}) → dynamic;
 class Bar extends core::Object {
   const constructor •() → self::Bar
     : super core::Object::•()
@@ -12,25 +12,25 @@
     ;
 }
 class Baz extends core::Object {
-  constructor •(@#C1 dynamic constructorFormal) → self::Baz
+  constructor •(@self::foo dynamic constructorFormal) → self::Baz
     : super core::Object::•()
     ;
-  static factory bazFactory(@#C1 dynamic factoryFormal) → self::Baz
+  static factory bazFactory(@self::foo dynamic factoryFormal) → self::Baz
     return null;
-  method fisk(@#C1 dynamic formal1, @#C2 dynamic formal2, @#C2 dynamic formal3, @#C1 @#C2 dynamic formal4, [@#C1 dynamic optional = #C3]) → dynamic {
-    @#C1 dynamic local1;
-    @#C2 dynamic local2;
-    @#C2 dynamic local3;
-    @#C1 @#C2 dynamic local4;
-    @#C1 core::String localWithInitializer = "hello";
-    @#C1 @#C2 dynamic localGroupPart1;
-    @#C1 @#C2 dynamic localGroupPart2;
-    function naebdyr(@#C1 dynamic nestedFormal) → core::Null
+  method fisk(@self::foo dynamic formal1, @self::Bar::•() dynamic formal2, @self::Bar::named(self::foo) dynamic formal3, @self::foo @self::Bar::named(self::foo) dynamic formal4, [@self::foo dynamic optional = null]) → dynamic {
+    @self::foo dynamic local1;
+    @self::Bar::•() dynamic local2;
+    @self::Bar::named(self::foo) dynamic local3;
+    @self::foo @self::Bar::named(self::foo) dynamic local4;
+    @self::foo core::String localWithInitializer = "hello";
+    @self::foo @self::Bar::named(self::foo) dynamic localGroupPart1;
+    @self::foo @self::Bar::named(self::foo) dynamic localGroupPart2;
+    function naebdyr(@self::foo dynamic nestedFormal) → core::Null
       return null;
-    (dynamic) → core::Null roedmus = (@#C1 dynamic closureFormal) → core::Null => null;
+    (dynamic) → core::Null roedmus = (@self::foo dynamic closureFormal) → core::Null => null;
   }
-  method hest({@#C1 dynamic named = #C3}) → dynamic
+  method hest({@self::foo dynamic named = null}) → dynamic
     return null;
 }
-static const field core::int foo = #C1;
+static const field core::int foo = 42;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/annotation_variable_declaration.dart.strong.transformed.expect b/pkg/front_end/testcases/annotation_variable_declaration.dart.strong.transformed.expect
index e11731e..b848b38 100644
--- a/pkg/front_end/testcases/annotation_variable_declaration.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/annotation_variable_declaration.dart.strong.transformed.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-typedef hest_t = ({@#C1 dynamic named}) → dynamic;
+typedef hest_t = ({@self::foo dynamic named}) → dynamic;
 class Bar extends core::Object {
   const constructor •() → self::Bar
     : super core::Object::•()
@@ -12,25 +12,25 @@
     ;
 }
 class Baz extends core::Object {
-  constructor •(@#C1 dynamic constructorFormal) → self::Baz
+  constructor •(@self::foo dynamic constructorFormal) → self::Baz
     : super core::Object::•()
     ;
-  static factory bazFactory(@#C1 dynamic factoryFormal) → self::Baz
+  static factory bazFactory(@self::foo dynamic factoryFormal) → self::Baz
     return null;
-  method fisk(@#C1 dynamic formal1, @#C2 dynamic formal2, @#C2 dynamic formal3, @#C1 @#C2 dynamic formal4, [@#C1 dynamic optional = #C3]) → dynamic {
-    @#C1 dynamic local1;
-    @#C2 dynamic local2;
-    @#C2 dynamic local3;
-    @#C1 @#C2 dynamic local4;
-    @#C1 core::String localWithInitializer = "hello";
-    @#C1 @#C2 dynamic localGroupPart1;
-    @#C1 @#C2 dynamic localGroupPart2;
-    function naebdyr(@#C1 dynamic nestedFormal) → core::Null
+  method fisk(@self::foo dynamic formal1, @self::Bar::•() dynamic formal2, @self::Bar::named(self::foo) dynamic formal3, @self::foo @self::Bar::named(self::foo) dynamic formal4, [@self::foo dynamic optional = null]) → dynamic {
+    @self::foo dynamic local1;
+    @self::Bar::•() dynamic local2;
+    @self::Bar::named(self::foo) dynamic local3;
+    @self::foo @self::Bar::named(self::foo) dynamic local4;
+    @self::foo core::String localWithInitializer = "hello";
+    @self::foo @self::Bar::named(self::foo) dynamic localGroupPart1;
+    @self::foo @self::Bar::named(self::foo) dynamic localGroupPart2;
+    function naebdyr(@self::foo dynamic nestedFormal) → core::Null
       return null;
-    (dynamic) → core::Null roedmus = (@#C1 dynamic closureFormal) → core::Null => null;
+    (dynamic) → core::Null roedmus = (@self::foo dynamic closureFormal) → core::Null => null;
   }
-  method hest({@#C1 dynamic named = #C3}) → dynamic
+  method hest({@self::foo dynamic named = null}) → dynamic
     return null;
 }
-static const field core::int foo = #C1;
+static const field core::int foo = 42;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/argument.dart.legacy.expect b/pkg/front_end/testcases/argument.dart.legacy.expect
index 03c0b72..74df666 100644
--- a/pkg/front_end/testcases/argument.dart.legacy.expect
+++ b/pkg/front_end/testcases/argument.dart.legacy.expect
@@ -32,6 +32,6 @@
 static method main() → dynamic {
   self::foo(new self::Foo::•());
   self::bar(new self::Bar::•());
-  self::escape(#C1);
-  self::escape(#C2);
+  self::escape(self::foo_escaped);
+  self::escape(self::bar_escaped);
 }
diff --git a/pkg/front_end/testcases/argument.dart.legacy.transformed.expect b/pkg/front_end/testcases/argument.dart.legacy.transformed.expect
index 03c0b72..74df666 100644
--- a/pkg/front_end/testcases/argument.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/argument.dart.legacy.transformed.expect
@@ -32,6 +32,6 @@
 static method main() → dynamic {
   self::foo(new self::Foo::•());
   self::bar(new self::Bar::•());
-  self::escape(#C1);
-  self::escape(#C2);
+  self::escape(self::foo_escaped);
+  self::escape(self::bar_escaped);
 }
diff --git a/pkg/front_end/testcases/argument.dart.strong.expect b/pkg/front_end/testcases/argument.dart.strong.expect
index 03c0b72..74df666 100644
--- a/pkg/front_end/testcases/argument.dart.strong.expect
+++ b/pkg/front_end/testcases/argument.dart.strong.expect
@@ -32,6 +32,6 @@
 static method main() → dynamic {
   self::foo(new self::Foo::•());
   self::bar(new self::Bar::•());
-  self::escape(#C1);
-  self::escape(#C2);
+  self::escape(self::foo_escaped);
+  self::escape(self::bar_escaped);
 }
diff --git a/pkg/front_end/testcases/argument.dart.strong.transformed.expect b/pkg/front_end/testcases/argument.dart.strong.transformed.expect
index 03c0b72..74df666 100644
--- a/pkg/front_end/testcases/argument.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/argument.dart.strong.transformed.expect
@@ -32,6 +32,6 @@
 static method main() → dynamic {
   self::foo(new self::Foo::•());
   self::bar(new self::Bar::•());
-  self::escape(#C1);
-  self::escape(#C2);
+  self::escape(self::foo_escaped);
+  self::escape(self::bar_escaped);
 }
diff --git a/pkg/front_end/testcases/argument_mismatch.dart.legacy.expect b/pkg/front_end/testcases/argument_mismatch.dart.legacy.expect
index dc01177..ac488e4 100644
--- a/pkg/front_end/testcases/argument_mismatch.dart.legacy.expect
+++ b/pkg/front_end/testcases/argument_mismatch.dart.legacy.expect
@@ -15,6 +15,6 @@
 
 static method foo() → dynamic {}
 static method test() → dynamic {
-  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 32, #C2, core::List::unmodifiable<dynamic>(<dynamic>[null]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#foo, 32, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[null]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/argument_mismatch.dart.legacy.transformed.expect b/pkg/front_end/testcases/argument_mismatch.dart.legacy.transformed.expect
index dc01177..ac488e4 100644
--- a/pkg/front_end/testcases/argument_mismatch.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/argument_mismatch.dart.legacy.transformed.expect
@@ -15,6 +15,6 @@
 
 static method foo() → dynamic {}
 static method test() → dynamic {
-  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 32, #C2, core::List::unmodifiable<dynamic>(<dynamic>[null]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#foo, 32, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[null]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/async_nested.dart.legacy.expect b/pkg/front_end/testcases/async_nested.dart.legacy.expect
index 160a9c4..363de24 100644
--- a/pkg/front_end/testcases/async_nested.dart.legacy.expect
+++ b/pkg/front_end/testcases/async_nested.dart.legacy.expect
@@ -8,7 +8,7 @@
 class Node extends core::Object {
   final field core::List<self::Node> nested;
   final field core::String name;
-  constructor •(core::String name, [core::List<self::Node> nested = #C1]) → self::Node
+  constructor •(core::String name, [core::List<self::Node> nested = null]) → self::Node
     : self::Node::name = name, self::Node::nested = nested, super core::Object::•() {}
   method toString() → core::String
     return "<${this.{self::Node::name}}:[${let final dynamic #t1 = this.{self::Node::nested} in #t1.==(null) ? null : #t1.join(", ")}]>";
diff --git a/pkg/front_end/testcases/async_nested.dart.legacy.transformed.expect b/pkg/front_end/testcases/async_nested.dart.legacy.transformed.expect
index fb52ae2..c0e22cb 100644
--- a/pkg/front_end/testcases/async_nested.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/async_nested.dart.legacy.transformed.expect
@@ -8,7 +8,7 @@
 class Node extends core::Object {
   final field core::List<self::Node> nested;
   final field core::String name;
-  constructor •(core::String name, [core::List<self::Node> nested = #C1]) → self::Node
+  constructor •(core::String name, [core::List<self::Node> nested = null]) → self::Node
     : self::Node::name = name, self::Node::nested = nested, super core::Object::•() {}
   method toString() → core::String
     return "<${this.{self::Node::name}}:[${let final dynamic #t1 = this.{self::Node::nested} in #t1.==(null) ? null : #t1.join(", ")}]>";
diff --git a/pkg/front_end/testcases/async_nested.dart.strong.expect b/pkg/front_end/testcases/async_nested.dart.strong.expect
index c272650..d51ca15 100644
--- a/pkg/front_end/testcases/async_nested.dart.strong.expect
+++ b/pkg/front_end/testcases/async_nested.dart.strong.expect
@@ -8,7 +8,7 @@
 class Node extends core::Object {
   final field core::List<self::Node> nested;
   final field core::String name;
-  constructor •(core::String name, [core::List<self::Node> nested = #C1]) → self::Node
+  constructor •(core::String name, [core::List<self::Node> nested = null]) → self::Node
     : self::Node::name = name, self::Node::nested = nested, super core::Object::•() {}
   method toString() → core::String
     return "<${this.{self::Node::name}}:[${let final core::List<self::Node> #t1 = this.{self::Node::nested} in #t1.==(null) ?{core::String} null : #t1.{core::Iterable::join}(", ")}]>";
diff --git a/pkg/front_end/testcases/async_nested.dart.strong.transformed.expect b/pkg/front_end/testcases/async_nested.dart.strong.transformed.expect
index 8646935..246f441 100644
--- a/pkg/front_end/testcases/async_nested.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/async_nested.dart.strong.transformed.expect
@@ -8,7 +8,7 @@
 class Node extends core::Object {
   final field core::List<self::Node> nested;
   final field core::String name;
-  constructor •(core::String name, [core::List<self::Node> nested = #C1]) → self::Node
+  constructor •(core::String name, [core::List<self::Node> nested = null]) → self::Node
     : self::Node::name = name, self::Node::nested = nested, super core::Object::•() {}
   method toString() → core::String
     return "<${this.{self::Node::name}}:[${let final core::List<self::Node> #t1 = this.{self::Node::nested} in #t1.==(null) ?{core::String} null : #t1.{core::Iterable::join}(", ")}]>";
diff --git a/pkg/front_end/testcases/bug32426.dart.legacy.expect b/pkg/front_end/testcases/bug32426.dart.legacy.expect
index 4720502..c8ce03b 100644
--- a/pkg/front_end/testcases/bug32426.dart.legacy.expect
+++ b/pkg/front_end/testcases/bug32426.dart.legacy.expect
@@ -12,7 +12,7 @@
   synthetic constructor •() → self::C
     : super core::Object::•()
     ;
-  method call([core::int x = #C1]) → void {}
+  method call([core::int x = null]) → void {}
 }
 static method main() → dynamic {
   self::I i = new self::C::•();
diff --git a/pkg/front_end/testcases/bug32426.dart.legacy.transformed.expect b/pkg/front_end/testcases/bug32426.dart.legacy.transformed.expect
index 4720502..c8ce03b 100644
--- a/pkg/front_end/testcases/bug32426.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/bug32426.dart.legacy.transformed.expect
@@ -12,7 +12,7 @@
   synthetic constructor •() → self::C
     : super core::Object::•()
     ;
-  method call([core::int x = #C1]) → void {}
+  method call([core::int x = null]) → void {}
 }
 static method main() → dynamic {
   self::I i = new self::C::•();
diff --git a/pkg/front_end/testcases/bug32426.dart.strong.expect b/pkg/front_end/testcases/bug32426.dart.strong.expect
index d29fb9b..fe47689 100644
--- a/pkg/front_end/testcases/bug32426.dart.strong.expect
+++ b/pkg/front_end/testcases/bug32426.dart.strong.expect
@@ -12,7 +12,7 @@
   synthetic constructor •() → self::C
     : super core::Object::•()
     ;
-  method call([core::int x = #C1]) → void {}
+  method call([core::int x = null]) → void {}
 }
 static method main() → dynamic {
   self::I i = new self::C::•();
diff --git a/pkg/front_end/testcases/bug32426.dart.strong.transformed.expect b/pkg/front_end/testcases/bug32426.dart.strong.transformed.expect
index d29fb9b..fe47689 100644
--- a/pkg/front_end/testcases/bug32426.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/bug32426.dart.strong.transformed.expect
@@ -12,7 +12,7 @@
   synthetic constructor •() → self::C
     : super core::Object::•()
     ;
-  method call([core::int x = #C1]) → void {}
+  method call([core::int x = null]) → void {}
 }
 static method main() → dynamic {
   self::I i = new self::C::•();
diff --git a/pkg/front_end/testcases/bug33099.dart.strong.expect b/pkg/front_end/testcases/bug33099.dart.strong.expect
index c130549..978c12b 100644
--- a/pkg/front_end/testcases/bug33099.dart.strong.expect
+++ b/pkg/front_end/testcases/bug33099.dart.strong.expect
@@ -14,7 +14,7 @@
   synthetic constructor •() → self::MyTest
     : super core::Object::•()
     ;
-  @#C1
+  @self::failingTest
   method foo() → void {}
 }
 abstract class _MyTest2&Object&MyTest = core::Object with self::MyTest {
@@ -27,18 +27,18 @@
     : super self::_MyTest2&Object&MyTest::•()
     ;
 }
-static const field self::_FailingTest failingTest = #C1;
+static const field self::_FailingTest failingTest = const self::_FailingTest::•();
 static method main() → dynamic {
   mir::ClassMirror classMirror = mir::reflectClass(self::MyTest2);
   classMirror.{mir::ClassMirror::instanceMembers}.{core::Map::forEach}((core::Symbol symbol, mir::MethodMirror memberMirror) → core::Null {
-    if(memberMirror.{mir::DeclarationMirror::simpleName}.{core::Symbol::==}(#C2)) {
+    if(memberMirror.{mir::DeclarationMirror::simpleName}.{core::Symbol::==}(#foo)) {
       core::print(memberMirror);
       core::print(self::_hasFailingTestAnnotation(memberMirror));
     }
   });
 }
 static method _hasFailingTestAnnotation(mir::MethodMirror method) → core::bool {
-  core::bool r = self::_hasAnnotationInstance(method, #C1);
+  core::bool r = self::_hasAnnotationInstance(method, self::failingTest);
   core::print("[_hasFailingTestAnnotation] ${method} ${r}");
   return r;
 }
diff --git a/pkg/front_end/testcases/bug33099.dart.strong.transformed.expect b/pkg/front_end/testcases/bug33099.dart.strong.transformed.expect
index e27c6f4..1a0aaa1 100644
--- a/pkg/front_end/testcases/bug33099.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/bug33099.dart.strong.transformed.expect
@@ -14,14 +14,14 @@
   synthetic constructor •() → self::MyTest
     : super core::Object::•()
     ;
-  @#C1
+  @self::failingTest
   method foo() → void {}
 }
 abstract class _MyTest2&Object&MyTest extends core::Object implements self::MyTest {
   const synthetic constructor •() → self::_MyTest2&Object&MyTest
     : super core::Object::•()
     ;
-  @#C1
+  @self::failingTest
   method foo() → void {}
 }
 class MyTest2 extends self::_MyTest2&Object&MyTest {
@@ -29,18 +29,18 @@
     : super self::_MyTest2&Object&MyTest::•()
     ;
 }
-static const field self::_FailingTest failingTest = #C1;
+static const field self::_FailingTest failingTest = const self::_FailingTest::•();
 static method main() → dynamic {
   mir::ClassMirror classMirror = mir::reflectClass(self::MyTest2);
   classMirror.{mir::ClassMirror::instanceMembers}.{core::Map::forEach}((core::Symbol symbol, mir::MethodMirror memberMirror) → core::Null {
-    if(memberMirror.{mir::DeclarationMirror::simpleName}.{core::Symbol::==}(#C2)) {
+    if(memberMirror.{mir::DeclarationMirror::simpleName}.{core::Symbol::==}(#foo)) {
       core::print(memberMirror);
       core::print(self::_hasFailingTestAnnotation(memberMirror));
     }
   });
 }
 static method _hasFailingTestAnnotation(mir::MethodMirror method) → core::bool {
-  core::bool r = self::_hasAnnotationInstance(method, #C1);
+  core::bool r = self::_hasAnnotationInstance(method, self::failingTest);
   core::print("[_hasFailingTestAnnotation] ${method} ${r}");
   return r;
 }
diff --git a/pkg/front_end/testcases/constructor_const_inference.dart.legacy.expect b/pkg/front_end/testcases/constructor_const_inference.dart.legacy.expect
index 9ff392a..fa5e33f 100644
--- a/pkg/front_end/testcases/constructor_const_inference.dart.legacy.expect
+++ b/pkg/front_end/testcases/constructor_const_inference.dart.legacy.expect
@@ -15,7 +15,7 @@
 }
 class B<T extends core::Object = dynamic> extends self::A<self::B::T> {
   constructor •() → self::B<self::B::T>
-    : super self::A::•(#C1)
+    : super self::A::•(const self::_Y::•<dynamic>())
     ;
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/constructor_const_inference.dart.legacy.transformed.expect b/pkg/front_end/testcases/constructor_const_inference.dart.legacy.transformed.expect
index 9ff392a..fa5e33f 100644
--- a/pkg/front_end/testcases/constructor_const_inference.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/constructor_const_inference.dart.legacy.transformed.expect
@@ -15,7 +15,7 @@
 }
 class B<T extends core::Object = dynamic> extends self::A<self::B::T> {
   constructor •() → self::B<self::B::T>
-    : super self::A::•(#C1)
+    : super self::A::•(const self::_Y::•<dynamic>())
     ;
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/constructor_const_inference.dart.strong.expect b/pkg/front_end/testcases/constructor_const_inference.dart.strong.expect
index 6c8fca9..4bf80e9 100644
--- a/pkg/front_end/testcases/constructor_const_inference.dart.strong.expect
+++ b/pkg/front_end/testcases/constructor_const_inference.dart.strong.expect
@@ -15,7 +15,7 @@
 }
 class B<T extends core::Object = dynamic> extends self::A<self::B::T> {
   constructor •() → self::B<self::B::T>
-    : super self::A::•(#C1)
+    : super self::A::•(const self::_Y::•<core::Null>())
     ;
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/constructor_const_inference.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_const_inference.dart.strong.transformed.expect
index 6c8fca9..4bf80e9 100644
--- a/pkg/front_end/testcases/constructor_const_inference.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/constructor_const_inference.dart.strong.transformed.expect
@@ -15,7 +15,7 @@
 }
 class B<T extends core::Object = dynamic> extends self::A<self::B::T> {
   constructor •() → self::B<self::B::T>
-    : super self::A::•(#C1)
+    : super self::A::•(const self::_Y::•<core::Null>())
     ;
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/control_flow_collection_inference.dart.legacy.expect b/pkg/front_end/testcases/control_flow_collection_inference.dart.legacy.expect
index 398624e..ffd86f8 100644
--- a/pkg/front_end/testcases/control_flow_collection_inference.dart.legacy.expect
+++ b/pkg/front_end/testcases/control_flow_collection_inference.dart.legacy.expect
@@ -1784,7 +1784,7 @@
   get foo() → core::int
     return 42;
 }
-static method oracle<T extends core::Object = dynamic>([self::oracle::T t = #C1]) → dynamic
+static method oracle<T extends core::Object = dynamic>([self::oracle::T t = null]) → dynamic
   return true;
 static method testIfElement(dynamic dynVar, core::List<core::int> listInt, core::List<core::double> listDouble, core::Map<core::String, core::int> mapToInt, core::Map<core::String, core::double> mapToDouble) → dynamic {
   dynamic list10 = <dynamic>[];
diff --git a/pkg/front_end/testcases/control_flow_collection_inference.dart.legacy.transformed.expect b/pkg/front_end/testcases/control_flow_collection_inference.dart.legacy.transformed.expect
index 7b1e4cd..d384c49 100644
--- a/pkg/front_end/testcases/control_flow_collection_inference.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/control_flow_collection_inference.dart.legacy.transformed.expect
@@ -1784,7 +1784,7 @@
   get foo() → core::int
     return 42;
 }
-static method oracle<T extends core::Object = dynamic>([self::oracle::T t = #C1]) → dynamic
+static method oracle<T extends core::Object = dynamic>([self::oracle::T t = null]) → dynamic
   return true;
 static method testIfElement(dynamic dynVar, core::List<core::int> listInt, core::List<core::double> listDouble, core::Map<core::String, core::int> mapToInt, core::Map<core::String, core::double> mapToDouble) → dynamic {
   dynamic list10 = <dynamic>[];
diff --git a/pkg/front_end/testcases/control_flow_collection_inference.dart.strong.expect b/pkg/front_end/testcases/control_flow_collection_inference.dart.strong.expect
index d092791..c3b0f74 100644
--- a/pkg/front_end/testcases/control_flow_collection_inference.dart.strong.expect
+++ b/pkg/front_end/testcases/control_flow_collection_inference.dart.strong.expect
@@ -492,7 +492,7 @@
   get foo() → core::int
     return 42;
 }
-static method oracle<T extends core::Object = dynamic>([self::oracle::T t = #C1]) → dynamic
+static method oracle<T extends core::Object = dynamic>([self::oracle::T t = null]) → dynamic
   return true;
 static method testIfElement(dynamic dynVar, core::List<core::int> listInt, core::List<core::double> listDouble, core::Map<core::String, core::int> mapToInt, core::Map<core::String, core::double> mapToDouble) → dynamic {
   core::List<core::int> list10 = block {
diff --git a/pkg/front_end/testcases/control_flow_collection_inference.dart.strong.transformed.expect b/pkg/front_end/testcases/control_flow_collection_inference.dart.strong.transformed.expect
index 414b18a3..3c4ea93 100644
--- a/pkg/front_end/testcases/control_flow_collection_inference.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/control_flow_collection_inference.dart.strong.transformed.expect
@@ -492,7 +492,7 @@
   get foo() → core::int
     return 42;
 }
-static method oracle<T extends core::Object = dynamic>([self::oracle::T t = #C1]) → dynamic
+static method oracle<T extends core::Object = dynamic>([self::oracle::T t = null]) → dynamic
   return true;
 static method testIfElement(dynamic dynVar, core::List<core::int> listInt, core::List<core::double> listDouble, core::Map<core::String, core::int> mapToInt, core::Map<core::String, core::double> mapToDouble) → dynamic {
   core::List<core::int> list10 = block {
diff --git a/pkg/front_end/testcases/default_values.dart.legacy.expect b/pkg/front_end/testcases/default_values.dart.legacy.expect
index 6f9001b..ac79608 100644
--- a/pkg/front_end/testcases/default_values.dart.legacy.expect
+++ b/pkg/front_end/testcases/default_values.dart.legacy.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-static method topLevel([dynamic a = #C1]) → dynamic
+static method topLevel([dynamic a = 42]) → dynamic
   return a;
 static method main() → dynamic {
   core::print(self::topLevel());
diff --git a/pkg/front_end/testcases/default_values.dart.legacy.transformed.expect b/pkg/front_end/testcases/default_values.dart.legacy.transformed.expect
index 6f9001b..ac79608 100644
--- a/pkg/front_end/testcases/default_values.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/default_values.dart.legacy.transformed.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-static method topLevel([dynamic a = #C1]) → dynamic
+static method topLevel([dynamic a = 42]) → dynamic
   return a;
 static method main() → dynamic {
   core::print(self::topLevel());
diff --git a/pkg/front_end/testcases/default_values.dart.strong.expect b/pkg/front_end/testcases/default_values.dart.strong.expect
index 6f9001b..ac79608 100644
--- a/pkg/front_end/testcases/default_values.dart.strong.expect
+++ b/pkg/front_end/testcases/default_values.dart.strong.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-static method topLevel([dynamic a = #C1]) → dynamic
+static method topLevel([dynamic a = 42]) → dynamic
   return a;
 static method main() → dynamic {
   core::print(self::topLevel());
diff --git a/pkg/front_end/testcases/default_values.dart.strong.transformed.expect b/pkg/front_end/testcases/default_values.dart.strong.transformed.expect
index 6f9001b..ac79608 100644
--- a/pkg/front_end/testcases/default_values.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/default_values.dart.strong.transformed.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-static method topLevel([dynamic a = #C1]) → dynamic
+static method topLevel([dynamic a = 42]) → dynamic
   return a;
 static method main() → dynamic {
   core::print(self::topLevel());
diff --git a/pkg/front_end/testcases/duplicated_declarations.dart.legacy.expect b/pkg/front_end/testcases/duplicated_declarations.dart.legacy.expect
index 5c60233..86ec30f 100644
--- a/pkg/front_end/testcases/duplicated_declarations.dart.legacy.expect
+++ b/pkg/front_end/testcases/duplicated_declarations.dart.legacy.expect
@@ -410,7 +410,7 @@
 }
 class Sub extends core::Object {
   constructor •() → self::Sub
-    : final dynamic #t1 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[null]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)))
+    : final dynamic #t1 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Object, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[null]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))
     ;
   method m() → dynamic
     return super.m();
@@ -418,8 +418,8 @@
 class Enum#4 extends core::Object { // from org-dartlang-testcase:///duplicated_declarations_part.dart
   final field core::int index;
   final field core::String _name;
-  static const field core::List<self::Enum#4> values = #C8;
-  static const field self::Enum#4 a = #C7;
+  static const field core::List<self::Enum#4> values = const <self::Enum#4>[self::Enum#4::a];
+  static const field self::Enum#4 a = const self::Enum#4::•(0, "Enum.a");
   const constructor •(core::int index, core::String _name) → self::Enum#4
     : self::Enum#4::index = index, self::Enum#4::_name = _name, super core::Object::•()
     ;
@@ -429,10 +429,10 @@
 class Enum#3 extends core::Object { // from org-dartlang-testcase:///duplicated_declarations_part.dart
   final field core::int index;
   final field core::String _name;
-  static const field core::List<self::Enum#3> values = #C16;
-  static const field self::Enum#3 a = #C9;
-  static const field self::Enum#3 b = #C12;
-  static const field self::Enum#3 c = #C15;
+  static const field core::List<self::Enum#3> values = const <self::Enum#3>[self::Enum#3::a, self::Enum#3::b, self::Enum#3::c];
+  static const field self::Enum#3 a = const self::Enum#3::•(0, "Enum.a");
+  static const field self::Enum#3 b = const self::Enum#3::•(1, "Enum.b");
+  static const field self::Enum#3 c = const self::Enum#3::•(2, "Enum.c");
   const constructor •(core::int index, core::String _name) → self::Enum#3
     : self::Enum#3::index = index, self::Enum#3::_name = _name, super core::Object::•()
     ;
@@ -442,10 +442,10 @@
 class Enum#2 extends core::Object { // from org-dartlang-testcase:///duplicated_declarations_part.dart
   final field core::int index;
   final field core::String _name;
-  static const field core::List<self::Enum#2> values = #C21;
-  static const field self::Enum#2 Enum = #C18;
-  static const field self::Enum#2 a = #C19;
-  static const field self::Enum#2 b = #C20;
+  static const field core::List<self::Enum#2> values = const <self::Enum#2>[self::Enum#2::Enum, self::Enum#2::a, self::Enum#2::b];
+  static const field self::Enum#2 Enum = const self::Enum#2::•(0, "Enum.Enum");
+  static const field self::Enum#2 a = const self::Enum#2::•(1, "Enum.a");
+  static const field self::Enum#2 b = const self::Enum#2::•(2, "Enum.b");
   const constructor •(core::int index, core::String _name) → self::Enum#2
     : self::Enum#2::index = index, self::Enum#2::_name = _name, super core::Object::•()
     ;
@@ -455,10 +455,10 @@
 class Enum#1 extends core::Object {
   final field core::int index;
   final field core::String _name;
-  static const field core::List<self::Enum#1> values = #C25;
-  static const field self::Enum#1 a = #C22;
-  static const field self::Enum#1 b = #C23;
-  static const field self::Enum#1 c = #C24;
+  static const field core::List<self::Enum#1> values = const <self::Enum#1>[self::Enum#1::a, self::Enum#1::b, self::Enum#1::c];
+  static const field self::Enum#1 a = const self::Enum#1::•(0, "Enum.a");
+  static const field self::Enum#1 b = const self::Enum#1::•(1, "Enum.b");
+  static const field self::Enum#1 c = const self::Enum#1::•(2, "Enum.c");
   const constructor •(core::int index, core::String _name) → self::Enum#1
     : self::Enum#1::index = index, self::Enum#1::_name = _name, super core::Object::•()
     ;
@@ -468,10 +468,10 @@
 class Enum extends core::Object {
   final field core::int index;
   final field core::String _name;
-  static const field core::List<self::Enum> values = #C29;
-  static const field self::Enum Enum = #C26;
-  static const field self::Enum a = #C27;
-  static const field self::Enum b = #C28;
+  static const field core::List<self::Enum> values = const <self::Enum>[self::Enum::Enum, self::Enum::a, self::Enum::b];
+  static const field self::Enum Enum = const self::Enum::•(0, "Enum.Enum");
+  static const field self::Enum a = const self::Enum::•(1, "Enum.a");
+  static const field self::Enum b = const self::Enum::•(2, "Enum.b");
   const constructor •(core::int index, core::String _name) → self::Enum
     : self::Enum::index = index, self::Enum::_name = _name, super core::Object::•()
     ;
@@ -481,10 +481,10 @@
 class AnotherEnum extends core::Object {
   final field core::int index;
   final field core::String _name;
-  static const field core::List<self::AnotherEnum> values = #C36;
-  static const field self::AnotherEnum a = #C31;
-  static const field self::AnotherEnum b = #C33;
-  static const field self::AnotherEnum c = #C35;
+  static const field core::List<self::AnotherEnum> values = const <self::AnotherEnum>[self::AnotherEnum::a, self::AnotherEnum::b, self::AnotherEnum::c];
+  static const field self::AnotherEnum a = const self::AnotherEnum::•(0, "AnotherEnum.a");
+  static const field self::AnotherEnum b = const self::AnotherEnum::•(1, "AnotherEnum.b");
+  static const field self::AnotherEnum c = const self::AnotherEnum::•(2, "AnotherEnum.c");
   const constructor •(core::int index, core::String _name) → self::AnotherEnum
     : self::AnotherEnum::index = index, self::AnotherEnum::_name = _name, super core::Object::•()
     ;
@@ -507,7 +507,7 @@
   ^".s();
 }
 static method useAnotherEnum() → dynamic {
-  <core::String, core::Object>{"AnotherEnum.a": #C31, "AnotherEnum.b": #C33, "AnotherEnum.c": #C35, "AnotherEnum._name": invalid-expression "pkg/front_end/testcases/duplicated_declarations.dart:102:38: Error: Can't use '_name' because it is declared more than once.
+  <core::String, core::Object>{"AnotherEnum.a": self::AnotherEnum::a, "AnotherEnum.b": self::AnotherEnum::b, "AnotherEnum.c": self::AnotherEnum::c, "AnotherEnum._name": invalid-expression "pkg/front_end/testcases/duplicated_declarations.dart:102:38: Error: Can't use '_name' because it is declared more than once.
     \"AnotherEnum._name\": AnotherEnum._name,
                                      ^^^^^", "AnotherEnum.index": invalid-expression "pkg/front_end/testcases/duplicated_declarations.dart:103:38: Error: Can't use 'index' because it is declared more than once.
     \"AnotherEnum.index\": AnotherEnum.index,
diff --git a/pkg/front_end/testcases/duplicated_declarations.dart.legacy.transformed.expect b/pkg/front_end/testcases/duplicated_declarations.dart.legacy.transformed.expect
index 5c60233..86ec30f 100644
--- a/pkg/front_end/testcases/duplicated_declarations.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/duplicated_declarations.dart.legacy.transformed.expect
@@ -410,7 +410,7 @@
 }
 class Sub extends core::Object {
   constructor •() → self::Sub
-    : final dynamic #t1 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[null]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)))
+    : final dynamic #t1 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Object, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[null]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))
     ;
   method m() → dynamic
     return super.m();
@@ -418,8 +418,8 @@
 class Enum#4 extends core::Object { // from org-dartlang-testcase:///duplicated_declarations_part.dart
   final field core::int index;
   final field core::String _name;
-  static const field core::List<self::Enum#4> values = #C8;
-  static const field self::Enum#4 a = #C7;
+  static const field core::List<self::Enum#4> values = const <self::Enum#4>[self::Enum#4::a];
+  static const field self::Enum#4 a = const self::Enum#4::•(0, "Enum.a");
   const constructor •(core::int index, core::String _name) → self::Enum#4
     : self::Enum#4::index = index, self::Enum#4::_name = _name, super core::Object::•()
     ;
@@ -429,10 +429,10 @@
 class Enum#3 extends core::Object { // from org-dartlang-testcase:///duplicated_declarations_part.dart
   final field core::int index;
   final field core::String _name;
-  static const field core::List<self::Enum#3> values = #C16;
-  static const field self::Enum#3 a = #C9;
-  static const field self::Enum#3 b = #C12;
-  static const field self::Enum#3 c = #C15;
+  static const field core::List<self::Enum#3> values = const <self::Enum#3>[self::Enum#3::a, self::Enum#3::b, self::Enum#3::c];
+  static const field self::Enum#3 a = const self::Enum#3::•(0, "Enum.a");
+  static const field self::Enum#3 b = const self::Enum#3::•(1, "Enum.b");
+  static const field self::Enum#3 c = const self::Enum#3::•(2, "Enum.c");
   const constructor •(core::int index, core::String _name) → self::Enum#3
     : self::Enum#3::index = index, self::Enum#3::_name = _name, super core::Object::•()
     ;
@@ -442,10 +442,10 @@
 class Enum#2 extends core::Object { // from org-dartlang-testcase:///duplicated_declarations_part.dart
   final field core::int index;
   final field core::String _name;
-  static const field core::List<self::Enum#2> values = #C21;
-  static const field self::Enum#2 Enum = #C18;
-  static const field self::Enum#2 a = #C19;
-  static const field self::Enum#2 b = #C20;
+  static const field core::List<self::Enum#2> values = const <self::Enum#2>[self::Enum#2::Enum, self::Enum#2::a, self::Enum#2::b];
+  static const field self::Enum#2 Enum = const self::Enum#2::•(0, "Enum.Enum");
+  static const field self::Enum#2 a = const self::Enum#2::•(1, "Enum.a");
+  static const field self::Enum#2 b = const self::Enum#2::•(2, "Enum.b");
   const constructor •(core::int index, core::String _name) → self::Enum#2
     : self::Enum#2::index = index, self::Enum#2::_name = _name, super core::Object::•()
     ;
@@ -455,10 +455,10 @@
 class Enum#1 extends core::Object {
   final field core::int index;
   final field core::String _name;
-  static const field core::List<self::Enum#1> values = #C25;
-  static const field self::Enum#1 a = #C22;
-  static const field self::Enum#1 b = #C23;
-  static const field self::Enum#1 c = #C24;
+  static const field core::List<self::Enum#1> values = const <self::Enum#1>[self::Enum#1::a, self::Enum#1::b, self::Enum#1::c];
+  static const field self::Enum#1 a = const self::Enum#1::•(0, "Enum.a");
+  static const field self::Enum#1 b = const self::Enum#1::•(1, "Enum.b");
+  static const field self::Enum#1 c = const self::Enum#1::•(2, "Enum.c");
   const constructor •(core::int index, core::String _name) → self::Enum#1
     : self::Enum#1::index = index, self::Enum#1::_name = _name, super core::Object::•()
     ;
@@ -468,10 +468,10 @@
 class Enum extends core::Object {
   final field core::int index;
   final field core::String _name;
-  static const field core::List<self::Enum> values = #C29;
-  static const field self::Enum Enum = #C26;
-  static const field self::Enum a = #C27;
-  static const field self::Enum b = #C28;
+  static const field core::List<self::Enum> values = const <self::Enum>[self::Enum::Enum, self::Enum::a, self::Enum::b];
+  static const field self::Enum Enum = const self::Enum::•(0, "Enum.Enum");
+  static const field self::Enum a = const self::Enum::•(1, "Enum.a");
+  static const field self::Enum b = const self::Enum::•(2, "Enum.b");
   const constructor •(core::int index, core::String _name) → self::Enum
     : self::Enum::index = index, self::Enum::_name = _name, super core::Object::•()
     ;
@@ -481,10 +481,10 @@
 class AnotherEnum extends core::Object {
   final field core::int index;
   final field core::String _name;
-  static const field core::List<self::AnotherEnum> values = #C36;
-  static const field self::AnotherEnum a = #C31;
-  static const field self::AnotherEnum b = #C33;
-  static const field self::AnotherEnum c = #C35;
+  static const field core::List<self::AnotherEnum> values = const <self::AnotherEnum>[self::AnotherEnum::a, self::AnotherEnum::b, self::AnotherEnum::c];
+  static const field self::AnotherEnum a = const self::AnotherEnum::•(0, "AnotherEnum.a");
+  static const field self::AnotherEnum b = const self::AnotherEnum::•(1, "AnotherEnum.b");
+  static const field self::AnotherEnum c = const self::AnotherEnum::•(2, "AnotherEnum.c");
   const constructor •(core::int index, core::String _name) → self::AnotherEnum
     : self::AnotherEnum::index = index, self::AnotherEnum::_name = _name, super core::Object::•()
     ;
@@ -507,7 +507,7 @@
   ^".s();
 }
 static method useAnotherEnum() → dynamic {
-  <core::String, core::Object>{"AnotherEnum.a": #C31, "AnotherEnum.b": #C33, "AnotherEnum.c": #C35, "AnotherEnum._name": invalid-expression "pkg/front_end/testcases/duplicated_declarations.dart:102:38: Error: Can't use '_name' because it is declared more than once.
+  <core::String, core::Object>{"AnotherEnum.a": self::AnotherEnum::a, "AnotherEnum.b": self::AnotherEnum::b, "AnotherEnum.c": self::AnotherEnum::c, "AnotherEnum._name": invalid-expression "pkg/front_end/testcases/duplicated_declarations.dart:102:38: Error: Can't use '_name' because it is declared more than once.
     \"AnotherEnum._name\": AnotherEnum._name,
                                      ^^^^^", "AnotherEnum.index": invalid-expression "pkg/front_end/testcases/duplicated_declarations.dart:103:38: Error: Can't use 'index' because it is declared more than once.
     \"AnotherEnum.index\": AnotherEnum.index,
diff --git a/pkg/front_end/testcases/duplicated_declarations.dart.strong.expect b/pkg/front_end/testcases/duplicated_declarations.dart.strong.expect
index 2e63d8d..6e8d2d8 100644
--- a/pkg/front_end/testcases/duplicated_declarations.dart.strong.expect
+++ b/pkg/front_end/testcases/duplicated_declarations.dart.strong.expect
@@ -421,8 +421,8 @@
 class Enum#4 extends core::Object { // from org-dartlang-testcase:///duplicated_declarations_part.dart
   final field core::int index;
   final field core::String _name;
-  static const field core::List<self::Enum#4> values = #C4;
-  static const field self::Enum#4 a = #C3;
+  static const field core::List<self::Enum#4> values = const <self::Enum#4>[self::Enum#4::a];
+  static const field self::Enum#4 a = const self::Enum#4::•(0, "Enum.a");
   const constructor •(core::int index, core::String _name) → self::Enum#4
     : self::Enum#4::index = index, self::Enum#4::_name = _name, super core::Object::•()
     ;
@@ -432,10 +432,10 @@
 class Enum#3 extends core::Object { // from org-dartlang-testcase:///duplicated_declarations_part.dart
   final field core::int index;
   final field core::String _name;
-  static const field core::List<self::Enum#3> values = #C12;
-  static const field self::Enum#3 a = #C5;
-  static const field self::Enum#3 b = #C8;
-  static const field self::Enum#3 c = #C11;
+  static const field core::List<self::Enum#3> values = const <self::Enum#3>[self::Enum#3::a, self::Enum#3::b, self::Enum#3::c];
+  static const field self::Enum#3 a = const self::Enum#3::•(0, "Enum.a");
+  static const field self::Enum#3 b = const self::Enum#3::•(1, "Enum.b");
+  static const field self::Enum#3 c = const self::Enum#3::•(2, "Enum.c");
   const constructor •(core::int index, core::String _name) → self::Enum#3
     : self::Enum#3::index = index, self::Enum#3::_name = _name, super core::Object::•()
     ;
@@ -445,10 +445,10 @@
 class Enum#2 extends core::Object { // from org-dartlang-testcase:///duplicated_declarations_part.dart
   final field core::int index;
   final field core::String _name;
-  static const field core::List<self::Enum#2> values = #C17;
-  static const field self::Enum#2 Enum = #C14;
-  static const field self::Enum#2 a = #C15;
-  static const field self::Enum#2 b = #C16;
+  static const field core::List<self::Enum#2> values = const <self::Enum#2>[self::Enum#2::Enum, self::Enum#2::a, self::Enum#2::b];
+  static const field self::Enum#2 Enum = const self::Enum#2::•(0, "Enum.Enum");
+  static const field self::Enum#2 a = const self::Enum#2::•(1, "Enum.a");
+  static const field self::Enum#2 b = const self::Enum#2::•(2, "Enum.b");
   const constructor •(core::int index, core::String _name) → self::Enum#2
     : self::Enum#2::index = index, self::Enum#2::_name = _name, super core::Object::•()
     ;
@@ -458,10 +458,10 @@
 class Enum#1 extends core::Object {
   final field core::int index;
   final field core::String _name;
-  static const field core::List<self::Enum#1> values = #C21;
-  static const field self::Enum#1 a = #C18;
-  static const field self::Enum#1 b = #C19;
-  static const field self::Enum#1 c = #C20;
+  static const field core::List<self::Enum#1> values = const <self::Enum#1>[self::Enum#1::a, self::Enum#1::b, self::Enum#1::c];
+  static const field self::Enum#1 a = const self::Enum#1::•(0, "Enum.a");
+  static const field self::Enum#1 b = const self::Enum#1::•(1, "Enum.b");
+  static const field self::Enum#1 c = const self::Enum#1::•(2, "Enum.c");
   const constructor •(core::int index, core::String _name) → self::Enum#1
     : self::Enum#1::index = index, self::Enum#1::_name = _name, super core::Object::•()
     ;
@@ -471,10 +471,10 @@
 class Enum extends core::Object {
   final field core::int index;
   final field core::String _name;
-  static const field core::List<self::Enum> values = #C25;
-  static const field self::Enum Enum = #C22;
-  static const field self::Enum a = #C23;
-  static const field self::Enum b = #C24;
+  static const field core::List<self::Enum> values = const <self::Enum>[self::Enum::Enum, self::Enum::a, self::Enum::b];
+  static const field self::Enum Enum = const self::Enum::•(0, "Enum.Enum");
+  static const field self::Enum a = const self::Enum::•(1, "Enum.a");
+  static const field self::Enum b = const self::Enum::•(2, "Enum.b");
   const constructor •(core::int index, core::String _name) → self::Enum
     : self::Enum::index = index, self::Enum::_name = _name, super core::Object::•()
     ;
@@ -484,10 +484,10 @@
 class AnotherEnum extends core::Object {
   final field core::int index;
   final field core::String _name;
-  static const field core::List<self::AnotherEnum> values = #C32;
-  static const field self::AnotherEnum a = #C27;
-  static const field self::AnotherEnum b = #C29;
-  static const field self::AnotherEnum c = #C31;
+  static const field core::List<self::AnotherEnum> values = const <self::AnotherEnum>[self::AnotherEnum::a, self::AnotherEnum::b, self::AnotherEnum::c];
+  static const field self::AnotherEnum a = const self::AnotherEnum::•(0, "AnotherEnum.a");
+  static const field self::AnotherEnum b = const self::AnotherEnum::•(1, "AnotherEnum.b");
+  static const field self::AnotherEnum c = const self::AnotherEnum::•(2, "AnotherEnum.c");
   const constructor •(core::int index, core::String _name) → self::AnotherEnum
     : self::AnotherEnum::index = index, self::AnotherEnum::_name = _name, super core::Object::•()
     ;
@@ -510,7 +510,7 @@
   ^".s();
 }
 static method useAnotherEnum() → dynamic {
-  <core::String, core::Object>{"AnotherEnum.a": #C27, "AnotherEnum.b": #C29, "AnotherEnum.c": #C31, "AnotherEnum._name": invalid-expression "pkg/front_end/testcases/duplicated_declarations.dart:102:38: Error: Can't use '_name' because it is declared more than once.
+  <core::String, core::Object>{"AnotherEnum.a": self::AnotherEnum::a, "AnotherEnum.b": self::AnotherEnum::b, "AnotherEnum.c": self::AnotherEnum::c, "AnotherEnum._name": invalid-expression "pkg/front_end/testcases/duplicated_declarations.dart:102:38: Error: Can't use '_name' because it is declared more than once.
     \"AnotherEnum._name\": AnotherEnum._name,
                                      ^^^^^", "AnotherEnum.index": invalid-expression "pkg/front_end/testcases/duplicated_declarations.dart:103:38: Error: Can't use 'index' because it is declared more than once.
     \"AnotherEnum.index\": AnotherEnum.index,
diff --git a/pkg/front_end/testcases/duplicated_named_args_3.dart.legacy.expect b/pkg/front_end/testcases/duplicated_named_args_3.dart.legacy.expect
index 7c2f585..2baebe3 100644
--- a/pkg/front_end/testcases/duplicated_named_args_3.dart.legacy.expect
+++ b/pkg/front_end/testcases/duplicated_named_args_3.dart.legacy.expect
@@ -6,7 +6,7 @@
   synthetic constructor •() → self::C
     : super core::Object::•()
     ;
-  static method m({core::int a = #C1}) → dynamic {}
+  static method m({core::int a = 0}) → dynamic {}
 }
 static method test() → void {
   self::C::m(a: 1, a: 2, a: 3);
diff --git a/pkg/front_end/testcases/duplicated_named_args_3.dart.legacy.transformed.expect b/pkg/front_end/testcases/duplicated_named_args_3.dart.legacy.transformed.expect
index 7c2f585..2baebe3 100644
--- a/pkg/front_end/testcases/duplicated_named_args_3.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/duplicated_named_args_3.dart.legacy.transformed.expect
@@ -6,7 +6,7 @@
   synthetic constructor •() → self::C
     : super core::Object::•()
     ;
-  static method m({core::int a = #C1}) → dynamic {}
+  static method m({core::int a = 0}) → dynamic {}
 }
 static method test() → void {
   self::C::m(a: 1, a: 2, a: 3);
diff --git a/pkg/front_end/testcases/duplicated_named_args_3.dart.strong.expect b/pkg/front_end/testcases/duplicated_named_args_3.dart.strong.expect
index a389c57..42c312a 100644
--- a/pkg/front_end/testcases/duplicated_named_args_3.dart.strong.expect
+++ b/pkg/front_end/testcases/duplicated_named_args_3.dart.strong.expect
@@ -17,7 +17,7 @@
   synthetic constructor •() → self::C
     : super core::Object::•()
     ;
-  static method m({core::int a = #C1}) → dynamic {}
+  static method m({core::int a = 0}) → dynamic {}
 }
 static method test() → void {
   self::C::m(a: invalid-expression "pkg/front_end/testcases/duplicated_named_args_3.dart:13:19: Error: Duplicated named argument 'a'.
diff --git a/pkg/front_end/testcases/duplicated_named_args_3.dart.strong.transformed.expect b/pkg/front_end/testcases/duplicated_named_args_3.dart.strong.transformed.expect
index a389c57..42c312a 100644
--- a/pkg/front_end/testcases/duplicated_named_args_3.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/duplicated_named_args_3.dart.strong.transformed.expect
@@ -17,7 +17,7 @@
   synthetic constructor •() → self::C
     : super core::Object::•()
     ;
-  static method m({core::int a = #C1}) → dynamic {}
+  static method m({core::int a = 0}) → dynamic {}
 }
 static method test() → void {
   self::C::m(a: invalid-expression "pkg/front_end/testcases/duplicated_named_args_3.dart:13:19: Error: Duplicated named argument 'a'.
diff --git a/pkg/front_end/testcases/expressions.dart.legacy.expect b/pkg/front_end/testcases/expressions.dart.legacy.expect
index d5497df..5676a4d 100644
--- a/pkg/front_end/testcases/expressions.dart.legacy.expect
+++ b/pkg/front_end/testcases/expressions.dart.legacy.expect
@@ -9,7 +9,7 @@
 import self as self;
 import "dart:core" as core;
 
-static method foo({dynamic fisk = #C1}) → dynamic {
+static method foo({dynamic fisk = null}) → dynamic {
   core::print(fisk);
 }
 static method caller(dynamic f) → dynamic {
@@ -48,7 +48,7 @@
   core::print(let final dynamic #t1 = i in let final dynamic #t2 = i = #t1.-(1) in #t1);
   core::print(let final dynamic #t3 = i in let final dynamic #t4 = i = #t3.+(1) in #t3);
   core::print(new core::Object::•());
-  core::print(#C2);
+  core::print(const core::Object::•());
   core::print(core::List::•<core::String>(2).runtimeType);
   self::foo(fisk: "Blorp gulp");
   function f() → dynamic {
@@ -58,25 +58,25 @@
   self::caller(() → dynamic {
     core::print("<anon> was called");
   });
-  function g([dynamic message = #C1]) → dynamic {
+  function g([dynamic message = null]) → dynamic {
     core::print(message);
   }
   g.call("Hello, World");
-  self::caller(([dynamic x = #C1]) → dynamic {
+  self::caller(([dynamic x = null]) → dynamic {
     core::print("<anon> was called with ${x}");
   });
-  function h({dynamic message = #C1}) → dynamic {
+  function h({dynamic message = null}) → dynamic {
     core::print(message);
   }
   h.call(message: "Hello, World");
-  self::caller(({dynamic x = #C1}) → dynamic {
+  self::caller(({dynamic x = null}) → dynamic {
     core::print("<anon> was called with ${x}");
   });
   core::print(core::int.toString());
   core::print(core::int);
   core::print(let final dynamic #t5 = core::int in let final dynamic #t6 = #t5.toString() in #t5);
   try {
-    core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C3, 32, #C4, #C5, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))));
+    core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#int.toString, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
     throw "Shouldn't work";
   }
   on core::NoSuchMethodError catch(final core::NoSuchMethodError e) {
diff --git a/pkg/front_end/testcases/expressions.dart.legacy.transformed.expect b/pkg/front_end/testcases/expressions.dart.legacy.transformed.expect
index a16c2c4..5a549bb 100644
--- a/pkg/front_end/testcases/expressions.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/expressions.dart.legacy.transformed.expect
@@ -9,7 +9,7 @@
 import self as self;
 import "dart:core" as core;
 
-static method foo({dynamic fisk = #C1}) → dynamic {
+static method foo({dynamic fisk = null}) → dynamic {
   core::print(fisk);
 }
 static method caller(dynamic f) → dynamic {
@@ -48,7 +48,7 @@
   core::print(let final dynamic #t1 = i in let final dynamic #t2 = i = #t1.-(1) in #t1);
   core::print(let final dynamic #t3 = i in let final dynamic #t4 = i = #t3.+(1) in #t3);
   core::print(new core::Object::•());
-  core::print(#C2);
+  core::print(const core::Object::•());
   core::print(core::_List::•<core::String>(2).runtimeType);
   self::foo(fisk: "Blorp gulp");
   function f() → dynamic {
@@ -58,25 +58,25 @@
   self::caller(() → dynamic {
     core::print("<anon> was called");
   });
-  function g([dynamic message = #C1]) → dynamic {
+  function g([dynamic message = null]) → dynamic {
     core::print(message);
   }
   g.call("Hello, World");
-  self::caller(([dynamic x = #C1]) → dynamic {
+  self::caller(([dynamic x = null]) → dynamic {
     core::print("<anon> was called with ${x}");
   });
-  function h({dynamic message = #C1}) → dynamic {
+  function h({dynamic message = null}) → dynamic {
     core::print(message);
   }
   h.call(message: "Hello, World");
-  self::caller(({dynamic x = #C1}) → dynamic {
+  self::caller(({dynamic x = null}) → dynamic {
     core::print("<anon> was called with ${x}");
   });
   core::print(core::int.toString());
   core::print(core::int);
   core::print(let final dynamic #t5 = core::int in let final dynamic #t6 = #t5.toString() in #t5);
   try {
-    core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C3, 32, #C4, #C5, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))));
+    core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#int.toString, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
     throw "Shouldn't work";
   }
   on core::NoSuchMethodError catch(final core::NoSuchMethodError e) {
diff --git a/pkg/front_end/testcases/expressions.dart.strong.expect b/pkg/front_end/testcases/expressions.dart.strong.expect
index 68fa72d..2a658a7 100644
--- a/pkg/front_end/testcases/expressions.dart.strong.expect
+++ b/pkg/front_end/testcases/expressions.dart.strong.expect
@@ -9,7 +9,7 @@
 import self as self;
 import "dart:core" as core;
 
-static method foo({dynamic fisk = #C1}) → dynamic {
+static method foo({dynamic fisk = null}) → dynamic {
   core::print(fisk);
 }
 static method caller(dynamic f) → dynamic {
@@ -48,7 +48,7 @@
   core::print(let final core::int #t1 = i in let final core::int #t2 = i = #t1.{core::num::-}(1) in #t1);
   core::print(let final core::int #t3 = i in let final core::int #t4 = i = #t3.{core::num::+}(1) in #t3);
   core::print(new core::Object::•());
-  core::print(#C2);
+  core::print(const core::Object::•());
   core::print(core::List::•<core::String>(2).{core::Object::runtimeType});
   self::foo(fisk: "Blorp gulp");
   function f() → core::Null {
@@ -58,18 +58,18 @@
   self::caller(() → core::Null {
     core::print("<anon> was called");
   });
-  function g([dynamic message = #C1]) → core::Null {
+  function g([dynamic message = null]) → core::Null {
     core::print(message);
   }
   g.call("Hello, World");
-  self::caller(([dynamic x = #C1]) → core::Null {
+  self::caller(([dynamic x = null]) → core::Null {
     core::print("<anon> was called with ${x}");
   });
-  function h({dynamic message = #C1}) → core::Null {
+  function h({dynamic message = null}) → core::Null {
     core::print(message);
   }
   h.call(message: "Hello, World");
-  self::caller(({dynamic x = #C1}) → core::Null {
+  self::caller(({dynamic x = null}) → core::Null {
     core::print("<anon> was called with ${x}");
   });
   core::print(core::int.{core::Object::toString}());
diff --git a/pkg/front_end/testcases/expressions.dart.strong.transformed.expect b/pkg/front_end/testcases/expressions.dart.strong.transformed.expect
index 8cb85c4..2732cf4 100644
--- a/pkg/front_end/testcases/expressions.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/expressions.dart.strong.transformed.expect
@@ -9,7 +9,7 @@
 import self as self;
 import "dart:core" as core;
 
-static method foo({dynamic fisk = #C1}) → dynamic {
+static method foo({dynamic fisk = null}) → dynamic {
   core::print(fisk);
 }
 static method caller(dynamic f) → dynamic {
@@ -48,7 +48,7 @@
   core::print(let final core::int #t1 = i in let final core::int #t2 = i = #t1.{core::num::-}(1) in #t1);
   core::print(let final core::int #t3 = i in let final core::int #t4 = i = #t3.{core::num::+}(1) in #t3);
   core::print(new core::Object::•());
-  core::print(#C2);
+  core::print(const core::Object::•());
   core::print(core::_List::•<core::String>(2).{core::Object::runtimeType});
   self::foo(fisk: "Blorp gulp");
   function f() → core::Null {
@@ -58,18 +58,18 @@
   self::caller(() → core::Null {
     core::print("<anon> was called");
   });
-  function g([dynamic message = #C1]) → core::Null {
+  function g([dynamic message = null]) → core::Null {
     core::print(message);
   }
   g.call("Hello, World");
-  self::caller(([dynamic x = #C1]) → core::Null {
+  self::caller(([dynamic x = null]) → core::Null {
     core::print("<anon> was called with ${x}");
   });
-  function h({dynamic message = #C1}) → core::Null {
+  function h({dynamic message = null}) → core::Null {
     core::print(message);
   }
   h.call(message: "Hello, World");
-  self::caller(({dynamic x = #C1}) → core::Null {
+  self::caller(({dynamic x = null}) → core::Null {
     core::print("<anon> was called with ${x}");
   });
   core::print(core::int.{core::Object::toString}());
diff --git a/pkg/front_end/testcases/external.dart.legacy.expect b/pkg/front_end/testcases/external.dart.legacy.expect
index 16cef1f..12cc7b1 100644
--- a/pkg/front_end/testcases/external.dart.legacy.expect
+++ b/pkg/front_end/testcases/external.dart.legacy.expect
@@ -13,6 +13,6 @@
 static method main() → dynamic {
   dynamic string = core::String::fromCharCode(65);
   dynamic port = iso::ReceivePort::•();
-  self::subscription = port.listen(#C1);
+  self::subscription = port.listen(self::onData);
   port.sendPort.send(string);
 }
diff --git a/pkg/front_end/testcases/external.dart.legacy.transformed.expect b/pkg/front_end/testcases/external.dart.legacy.transformed.expect
index 16cef1f..12cc7b1 100644
--- a/pkg/front_end/testcases/external.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/external.dart.legacy.transformed.expect
@@ -13,6 +13,6 @@
 static method main() → dynamic {
   dynamic string = core::String::fromCharCode(65);
   dynamic port = iso::ReceivePort::•();
-  self::subscription = port.listen(#C1);
+  self::subscription = port.listen(self::onData);
   port.sendPort.send(string);
 }
diff --git a/pkg/front_end/testcases/external.dart.strong.expect b/pkg/front_end/testcases/external.dart.strong.expect
index 8f21dc2..8025ecf 100644
--- a/pkg/front_end/testcases/external.dart.strong.expect
+++ b/pkg/front_end/testcases/external.dart.strong.expect
@@ -13,6 +13,6 @@
 static method main() → dynamic {
   core::String string = core::String::fromCharCode(65);
   iso::ReceivePort port = iso::ReceivePort::•();
-  self::subscription = port.{iso::ReceivePort::listen}(#C1);
+  self::subscription = port.{iso::ReceivePort::listen}(self::onData);
   port.{iso::ReceivePort::sendPort}.{iso::SendPort::send}(string);
 }
diff --git a/pkg/front_end/testcases/external.dart.strong.transformed.expect b/pkg/front_end/testcases/external.dart.strong.transformed.expect
index 8f21dc2..8025ecf 100644
--- a/pkg/front_end/testcases/external.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/external.dart.strong.transformed.expect
@@ -13,6 +13,6 @@
 static method main() → dynamic {
   core::String string = core::String::fromCharCode(65);
   iso::ReceivePort port = iso::ReceivePort::•();
-  self::subscription = port.{iso::ReceivePort::listen}(#C1);
+  self::subscription = port.{iso::ReceivePort::listen}(self::onData);
   port.{iso::ReceivePort::sendPort}.{iso::SendPort::send}(string);
 }
diff --git a/pkg/front_end/testcases/external_import.dart.legacy.expect b/pkg/front_end/testcases/external_import.dart.legacy.expect
index 6c92591..2776224 100644
--- a/pkg/front_end/testcases/external_import.dart.legacy.expect
+++ b/pkg/front_end/testcases/external_import.dart.legacy.expect
@@ -1,6 +1,6 @@
-@#C2
-@#C4
-@#C6
+@dart._internal::ExternalName::•("dart-ext:here")
+@dart._internal::ExternalName::•("dart-ext:foo/../there")
+@dart._internal::ExternalName::•("dart-ext:/usr/local/somewhere")
 library;
 import self as self;
 import "dart:_internal" as _in;
diff --git a/pkg/front_end/testcases/external_import.dart.legacy.transformed.expect b/pkg/front_end/testcases/external_import.dart.legacy.transformed.expect
index 6c92591..2776224 100644
--- a/pkg/front_end/testcases/external_import.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/external_import.dart.legacy.transformed.expect
@@ -1,6 +1,6 @@
-@#C2
-@#C4
-@#C6
+@dart._internal::ExternalName::•("dart-ext:here")
+@dart._internal::ExternalName::•("dart-ext:foo/../there")
+@dart._internal::ExternalName::•("dart-ext:/usr/local/somewhere")
 library;
 import self as self;
 import "dart:_internal" as _in;
diff --git a/pkg/front_end/testcases/external_import.dart.strong.expect b/pkg/front_end/testcases/external_import.dart.strong.expect
index 6c92591..2776224 100644
--- a/pkg/front_end/testcases/external_import.dart.strong.expect
+++ b/pkg/front_end/testcases/external_import.dart.strong.expect
@@ -1,6 +1,6 @@
-@#C2
-@#C4
-@#C6
+@dart._internal::ExternalName::•("dart-ext:here")
+@dart._internal::ExternalName::•("dart-ext:foo/../there")
+@dart._internal::ExternalName::•("dart-ext:/usr/local/somewhere")
 library;
 import self as self;
 import "dart:_internal" as _in;
diff --git a/pkg/front_end/testcases/external_import.dart.strong.transformed.expect b/pkg/front_end/testcases/external_import.dart.strong.transformed.expect
index 6c92591..2776224 100644
--- a/pkg/front_end/testcases/external_import.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/external_import.dart.strong.transformed.expect
@@ -1,6 +1,6 @@
-@#C2
-@#C4
-@#C6
+@dart._internal::ExternalName::•("dart-ext:here")
+@dart._internal::ExternalName::•("dart-ext:foo/../there")
+@dart._internal::ExternalName::•("dart-ext:/usr/local/somewhere")
 library;
 import self as self;
 import "dart:_internal" as _in;
diff --git a/pkg/front_end/testcases/for_in_without_declaration.dart.legacy.expect b/pkg/front_end/testcases/for_in_without_declaration.dart.legacy.expect
index 3c9b1c1..9cc7892 100644
--- a/pkg/front_end/testcases/for_in_without_declaration.dart.legacy.expect
+++ b/pkg/front_end/testcases/for_in_without_declaration.dart.legacy.expect
@@ -146,8 +146,9 @@
         core::print(y);
       }
     }
+    const core::int constant = 0;
     for (final dynamic #t18 in <dynamic>[]) {
-      throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 34, #C2, core::List::unmodifiable<dynamic>(<dynamic>[#t18]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+      throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#constant, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[#t18]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
     }
   }
 }
diff --git a/pkg/front_end/testcases/for_in_without_declaration.dart.legacy.transformed.expect b/pkg/front_end/testcases/for_in_without_declaration.dart.legacy.transformed.expect
index 3c9b1c1..9cc7892 100644
--- a/pkg/front_end/testcases/for_in_without_declaration.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/for_in_without_declaration.dart.legacy.transformed.expect
@@ -146,8 +146,9 @@
         core::print(y);
       }
     }
+    const core::int constant = 0;
     for (final dynamic #t18 in <dynamic>[]) {
-      throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 34, #C2, core::List::unmodifiable<dynamic>(<dynamic>[#t18]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+      throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#constant, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[#t18]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
     }
   }
 }
diff --git a/pkg/front_end/testcases/for_in_without_declaration.dart.strong.expect b/pkg/front_end/testcases/for_in_without_declaration.dart.strong.expect
index 4b46c48..9e758ec 100644
--- a/pkg/front_end/testcases/for_in_without_declaration.dart.strong.expect
+++ b/pkg/front_end/testcases/for_in_without_declaration.dart.strong.expect
@@ -176,6 +176,7 @@
         core::print(y);
       }
     }
+    const core::int constant = 0;
     for (final dynamic #t18 in <dynamic>[]) {
       invalid-expression "pkg/front_end/testcases/for_in_without_declaration.dart:46:10: Error: Setter not found: 'constant'.
     for (constant in []) {}
diff --git a/pkg/front_end/testcases/for_in_without_declaration.dart.strong.transformed.expect b/pkg/front_end/testcases/for_in_without_declaration.dart.strong.transformed.expect
index 4b46c48..9e758ec 100644
--- a/pkg/front_end/testcases/for_in_without_declaration.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/for_in_without_declaration.dart.strong.transformed.expect
@@ -176,6 +176,7 @@
         core::print(y);
       }
     }
+    const core::int constant = 0;
     for (final dynamic #t18 in <dynamic>[]) {
       invalid-expression "pkg/front_end/testcases/for_in_without_declaration.dart:46:10: Error: Setter not found: 'constant'.
     for (constant in []) {}
diff --git a/pkg/front_end/testcases/function_type_assignments.dart.legacy.expect b/pkg/front_end/testcases/function_type_assignments.dart.legacy.expect
index 72bc802..fa72575 100644
--- a/pkg/front_end/testcases/function_type_assignments.dart.legacy.expect
+++ b/pkg/front_end/testcases/function_type_assignments.dart.legacy.expect
@@ -2,9 +2,9 @@
 import self as self;
 import "dart:core" as core;
 
-static field core::String x = #C1;
-static field core::String y = #C2;
-static field core::String z = #C3;
+static field core::String x = self::identity;
+static field core::String y = self::identityObject;
+static field core::String z = self::identityList;
 static method identity<T extends core::Object = dynamic>(self::identity::T t) → self::identity::T
   return t;
 static method identityObject<T extends core::Object = dynamic>(self::identityObject::T t) → self::identityObject::T
diff --git a/pkg/front_end/testcases/function_type_assignments.dart.legacy.transformed.expect b/pkg/front_end/testcases/function_type_assignments.dart.legacy.transformed.expect
index 72bc802..fa72575 100644
--- a/pkg/front_end/testcases/function_type_assignments.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/function_type_assignments.dart.legacy.transformed.expect
@@ -2,9 +2,9 @@
 import self as self;
 import "dart:core" as core;
 
-static field core::String x = #C1;
-static field core::String y = #C2;
-static field core::String z = #C3;
+static field core::String x = self::identity;
+static field core::String y = self::identityObject;
+static field core::String z = self::identityList;
 static method identity<T extends core::Object = dynamic>(self::identity::T t) → self::identity::T
   return t;
 static method identityObject<T extends core::Object = dynamic>(self::identityObject::T t) → self::identityObject::T
diff --git a/pkg/front_end/testcases/function_type_assignments.dart.strong.expect b/pkg/front_end/testcases/function_type_assignments.dart.strong.expect
index 8903783..47dadba 100644
--- a/pkg/front_end/testcases/function_type_assignments.dart.strong.expect
+++ b/pkg/front_end/testcases/function_type_assignments.dart.strong.expect
@@ -25,17 +25,17 @@
 static field core::String x = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/function_type_assignments.dart:11:12: Error: A value of type 'T Function<T>(T)' can't be assigned to a variable of type 'String'.
 Try changing the type of the left hand side, or casting the right hand side to 'String'.
 String x = identity; // No bound
-           ^" in (#C1) as{TypeError} core::String;
+           ^" in self::identity as{TypeError} core::String;
 static field core::String y = let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/function_type_assignments.dart:12:12: Error: A value of type 'T Function<T extends Object>(T)' can't be assigned to a variable of type 'String'.
  - 'Object' is from 'dart:core'.
 Try changing the type of the left hand side, or casting the right hand side to 'String'.
 String y = identityObject; // Object bound
-           ^" in (#C2) as{TypeError} core::String;
+           ^" in self::identityObject as{TypeError} core::String;
 static field core::String z = let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/function_type_assignments.dart:13:12: Error: A value of type 'T Function<T extends List<T>>(T)' can't be assigned to a variable of type 'String'.
  - 'List' is from 'dart:core'.
 Try changing the type of the left hand side, or casting the right hand side to 'String'.
 String z = identityList; // List<T> bound
-           ^" in (#C3) as{TypeError} core::String;
+           ^" in self::identityList as{TypeError} core::String;
 static method identity<T extends core::Object = dynamic>(self::identity::T t) → self::identity::T
   return t;
 static method identityObject<T extends core::Object = core::Object>(self::identityObject::T t) → self::identityObject::T
diff --git a/pkg/front_end/testcases/function_type_assignments.dart.strong.transformed.expect b/pkg/front_end/testcases/function_type_assignments.dart.strong.transformed.expect
index 8903783..47dadba 100644
--- a/pkg/front_end/testcases/function_type_assignments.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/function_type_assignments.dart.strong.transformed.expect
@@ -25,17 +25,17 @@
 static field core::String x = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/function_type_assignments.dart:11:12: Error: A value of type 'T Function<T>(T)' can't be assigned to a variable of type 'String'.
 Try changing the type of the left hand side, or casting the right hand side to 'String'.
 String x = identity; // No bound
-           ^" in (#C1) as{TypeError} core::String;
+           ^" in self::identity as{TypeError} core::String;
 static field core::String y = let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/function_type_assignments.dart:12:12: Error: A value of type 'T Function<T extends Object>(T)' can't be assigned to a variable of type 'String'.
  - 'Object' is from 'dart:core'.
 Try changing the type of the left hand side, or casting the right hand side to 'String'.
 String y = identityObject; // Object bound
-           ^" in (#C2) as{TypeError} core::String;
+           ^" in self::identityObject as{TypeError} core::String;
 static field core::String z = let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/function_type_assignments.dart:13:12: Error: A value of type 'T Function<T extends List<T>>(T)' can't be assigned to a variable of type 'String'.
  - 'List' is from 'dart:core'.
 Try changing the type of the left hand side, or casting the right hand side to 'String'.
 String z = identityList; // List<T> bound
-           ^" in (#C3) as{TypeError} core::String;
+           ^" in self::identityList as{TypeError} core::String;
 static method identity<T extends core::Object = dynamic>(self::identity::T t) → self::identity::T
   return t;
 static method identityObject<T extends core::Object = core::Object>(self::identityObject::T t) → self::identityObject::T
diff --git a/pkg/front_end/testcases/functions.dart.legacy.expect b/pkg/front_end/testcases/functions.dart.legacy.expect
index 9edb67c..a816760 100644
--- a/pkg/front_end/testcases/functions.dart.legacy.expect
+++ b/pkg/front_end/testcases/functions.dart.legacy.expect
@@ -7,7 +7,7 @@
     f.call(a: "Hello, World");
     f.call();
   }
-  local.call(({dynamic a = #C1}) → dynamic {
+  local.call(({dynamic a = "Default greeting!"}) → dynamic {
     core::print(a);
   });
 }
diff --git a/pkg/front_end/testcases/functions.dart.legacy.transformed.expect b/pkg/front_end/testcases/functions.dart.legacy.transformed.expect
index 9edb67c..a816760 100644
--- a/pkg/front_end/testcases/functions.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/functions.dart.legacy.transformed.expect
@@ -7,7 +7,7 @@
     f.call(a: "Hello, World");
     f.call();
   }
-  local.call(({dynamic a = #C1}) → dynamic {
+  local.call(({dynamic a = "Default greeting!"}) → dynamic {
     core::print(a);
   });
 }
diff --git a/pkg/front_end/testcases/functions.dart.strong.expect b/pkg/front_end/testcases/functions.dart.strong.expect
index 115ea38..500ef71 100644
--- a/pkg/front_end/testcases/functions.dart.strong.expect
+++ b/pkg/front_end/testcases/functions.dart.strong.expect
@@ -7,7 +7,7 @@
     f.call(a: "Hello, World");
     f.call();
   }
-  local.call(({dynamic a = #C1}) → core::Null {
+  local.call(({dynamic a = "Default greeting!"}) → core::Null {
     core::print(a);
   });
 }
diff --git a/pkg/front_end/testcases/functions.dart.strong.transformed.expect b/pkg/front_end/testcases/functions.dart.strong.transformed.expect
index 115ea38..500ef71 100644
--- a/pkg/front_end/testcases/functions.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/functions.dart.strong.transformed.expect
@@ -7,7 +7,7 @@
     f.call(a: "Hello, World");
     f.call();
   }
-  local.call(({dynamic a = #C1}) → core::Null {
+  local.call(({dynamic a = "Default greeting!"}) → core::Null {
     core::print(a);
   });
 }
diff --git a/pkg/front_end/testcases/implicit_const_with_static_fields.dart.legacy.expect b/pkg/front_end/testcases/implicit_const_with_static_fields.dart.legacy.expect
index 308cf43..f090f06 100644
--- a/pkg/front_end/testcases/implicit_const_with_static_fields.dart.legacy.expect
+++ b/pkg/front_end/testcases/implicit_const_with_static_fields.dart.legacy.expect
@@ -3,13 +3,13 @@
 import "dart:core" as core;
 
 class C extends core::Object {
-  static const field dynamic constField = #C1;
+  static const field dynamic constField = 87;
   const constructor •(dynamic x) → self::C
     : super core::Object::•()
     ;
 }
-static const field dynamic constTopLevelField = #C2;
+static const field dynamic constTopLevelField = 42;
 static method main() → dynamic {
-  new self::C::•(#C1);
-  new self::C::•(#C2);
+  new self::C::•(self::C::constField);
+  new self::C::•(self::constTopLevelField);
 }
diff --git a/pkg/front_end/testcases/implicit_const_with_static_fields.dart.legacy.transformed.expect b/pkg/front_end/testcases/implicit_const_with_static_fields.dart.legacy.transformed.expect
index 308cf43..f090f06 100644
--- a/pkg/front_end/testcases/implicit_const_with_static_fields.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/implicit_const_with_static_fields.dart.legacy.transformed.expect
@@ -3,13 +3,13 @@
 import "dart:core" as core;
 
 class C extends core::Object {
-  static const field dynamic constField = #C1;
+  static const field dynamic constField = 87;
   const constructor •(dynamic x) → self::C
     : super core::Object::•()
     ;
 }
-static const field dynamic constTopLevelField = #C2;
+static const field dynamic constTopLevelField = 42;
 static method main() → dynamic {
-  new self::C::•(#C1);
-  new self::C::•(#C2);
+  new self::C::•(self::C::constField);
+  new self::C::•(self::constTopLevelField);
 }
diff --git a/pkg/front_end/testcases/implicit_const_with_static_fields.dart.strong.expect b/pkg/front_end/testcases/implicit_const_with_static_fields.dart.strong.expect
index 85a4ef6..2a08350 100644
--- a/pkg/front_end/testcases/implicit_const_with_static_fields.dart.strong.expect
+++ b/pkg/front_end/testcases/implicit_const_with_static_fields.dart.strong.expect
@@ -3,13 +3,13 @@
 import "dart:core" as core;
 
 class C extends core::Object {
-  static const field core::int constField = #C1;
+  static const field core::int constField = 87;
   const constructor •(dynamic x) → self::C
     : super core::Object::•()
     ;
 }
-static const field core::int constTopLevelField = #C2;
+static const field core::int constTopLevelField = 42;
 static method main() → dynamic {
-  new self::C::•(#C1);
-  new self::C::•(#C2);
+  new self::C::•(self::C::constField);
+  new self::C::•(self::constTopLevelField);
 }
diff --git a/pkg/front_end/testcases/implicit_const_with_static_fields.dart.strong.transformed.expect b/pkg/front_end/testcases/implicit_const_with_static_fields.dart.strong.transformed.expect
index 85a4ef6..2a08350 100644
--- a/pkg/front_end/testcases/implicit_const_with_static_fields.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/implicit_const_with_static_fields.dart.strong.transformed.expect
@@ -3,13 +3,13 @@
 import "dart:core" as core;
 
 class C extends core::Object {
-  static const field core::int constField = #C1;
+  static const field core::int constField = 87;
   const constructor •(dynamic x) → self::C
     : super core::Object::•()
     ;
 }
-static const field core::int constTopLevelField = #C2;
+static const field core::int constTopLevelField = 42;
 static method main() → dynamic {
-  new self::C::•(#C1);
-  new self::C::•(#C2);
+  new self::C::•(self::C::constField);
+  new self::C::•(self::constTopLevelField);
 }
diff --git a/pkg/front_end/testcases/implicit_new.dart.legacy.expect b/pkg/front_end/testcases/implicit_new.dart.legacy.expect
index a41bca8..2b438cf 100644
--- a/pkg/front_end/testcases/implicit_new.dart.legacy.expect
+++ b/pkg/front_end/testcases/implicit_new.dart.legacy.expect
@@ -38,8 +38,8 @@
   operator []=(dynamic _a, dynamic _b) → void {}
 }
 static method testNSM() → dynamic {
-  dynamic y = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 32, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
-  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 32, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+  dynamic y = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Bar, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Bar, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method f(dynamic x) → dynamic
   return x;
diff --git a/pkg/front_end/testcases/implicit_new.dart.legacy.transformed.expect b/pkg/front_end/testcases/implicit_new.dart.legacy.transformed.expect
index a41bca8..2b438cf 100644
--- a/pkg/front_end/testcases/implicit_new.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/implicit_new.dart.legacy.transformed.expect
@@ -38,8 +38,8 @@
   operator []=(dynamic _a, dynamic _b) → void {}
 }
 static method testNSM() → dynamic {
-  dynamic y = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 32, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
-  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 32, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+  dynamic y = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Bar, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Bar, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method f(dynamic x) → dynamic
   return x;
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_downwards_incompatible_with_upwards_inference_top_level.dart.legacy.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_downwards_incompatible_with_upwards_inference_top_level.dart.legacy.expect
index deeeda8..08eb46a 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_downwards_incompatible_with_upwards_inference_top_level.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_downwards_incompatible_with_upwards_inference_top_level.dart.legacy.expect
@@ -2,9 +2,9 @@
 import self as self;
 import "dart:core" as core;
 
-static field dynamic g = #C1;
+static field dynamic g = self::f;
 static method f() → core::String
   return null;
 static method main() → dynamic {
-  #C1;
+  self::f;
 }
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_downwards_incompatible_with_upwards_inference_top_level.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_downwards_incompatible_with_upwards_inference_top_level.dart.legacy.transformed.expect
index deeeda8..08eb46a 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_downwards_incompatible_with_upwards_inference_top_level.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_downwards_incompatible_with_upwards_inference_top_level.dart.legacy.transformed.expect
@@ -2,9 +2,9 @@
 import self as self;
 import "dart:core" as core;
 
-static field dynamic g = #C1;
+static field dynamic g = self::f;
 static method f() → core::String
   return null;
 static method main() → dynamic {
-  #C1;
+  self::f;
 }
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_downwards_incompatible_with_upwards_inference_top_level.dart.strong.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_downwards_incompatible_with_upwards_inference_top_level.dart.strong.expect
index 0dd9f32..3860922 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_downwards_incompatible_with_upwards_inference_top_level.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_downwards_incompatible_with_upwards_inference_top_level.dart.strong.expect
@@ -2,9 +2,9 @@
 import self as self;
 import "dart:core" as core;
 
-static field () → core::String g = #C1;
+static field () → core::String g = self::f;
 static method f() → core::String
   return null;
 static method main() → dynamic {
-  #C1;
+  self::f;
 }
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_downwards_incompatible_with_upwards_inference_top_level.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_downwards_incompatible_with_upwards_inference_top_level.dart.strong.transformed.expect
index 0dd9f32..3860922 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_downwards_incompatible_with_upwards_inference_top_level.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_downwards_incompatible_with_upwards_inference_top_level.dart.strong.transformed.expect
@@ -2,9 +2,9 @@
 import self as self;
 import "dart:core" as core;
 
-static field () → core::String g = #C1;
+static field () → core::String g = self::f;
 static method f() → core::String
   return null;
 static method main() → dynamic {
-  #C1;
+  self::f;
 }
diff --git a/pkg/front_end/testcases/inference/bug30624.dart.legacy.expect b/pkg/front_end/testcases/inference/bug30624.dart.legacy.expect
index fa6eff1..18bd73b 100644
--- a/pkg/front_end/testcases/inference/bug30624.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/bug30624.dart.legacy.expect
@@ -6,24 +6,24 @@
   synthetic constructor •() → self::C<self::C::E>
     : super core::Object::•()
     ;
-  method barA([(self::C::E, self::C::E) → core::int cmp = #C1]) → void {
-    self::foo<dynamic>(this, let final dynamic #t1 = cmp in #t1.==(null) ? #C2 : #t1);
+  method barA([(self::C::E, self::C::E) → core::int cmp = null]) → void {
+    self::foo<dynamic>(this, let final dynamic #t1 = cmp in #t1.==(null) ? self::C::_default : #t1);
   }
-  method barB([(self::C::E, self::C::E) → core::int cmp = #C1]) → void {
-    self::foo<dynamic>(this, let final dynamic #t2 = cmp in #t2.==(null) ? (#C2) as (self::C::E, self::C::E) → core::int : #t2);
+  method barB([(self::C::E, self::C::E) → core::int cmp = null]) → void {
+    self::foo<dynamic>(this, let final dynamic #t2 = cmp in #t2.==(null) ? self::C::_default as (self::C::E, self::C::E) → core::int : #t2);
   }
-  method barC([(self::C::E, self::C::E) → core::int cmp = #C1]) → void {
-    (self::C::E, self::C::E) → core::int v = #C2;
+  method barC([(self::C::E, self::C::E) → core::int cmp = null]) → void {
+    (self::C::E, self::C::E) → core::int v = self::C::_default;
     self::foo<dynamic>(this, let final dynamic #t3 = cmp in #t3.==(null) ? v : #t3);
   }
-  method barD([(self::C::E, self::C::E) → core::int cmp = #C1]) → void {
-    self::foo<self::C::E>(this, let final dynamic #t4 = cmp in #t4.==(null) ? #C2 : #t4);
+  method barD([(self::C::E, self::C::E) → core::int cmp = null]) → void {
+    self::foo<self::C::E>(this, let final dynamic #t4 = cmp in #t4.==(null) ? self::C::_default : #t4);
   }
-  method barE([(self::C::E, self::C::E) → core::int cmp = #C1]) → void {
-    self::foo<dynamic>(this, cmp.==(null) ? #C2 : cmp);
+  method barE([(self::C::E, self::C::E) → core::int cmp = null]) → void {
+    self::foo<dynamic>(this, cmp.==(null) ? self::C::_default : cmp);
   }
-  method barF([(self::C::E, self::C::E) → core::int cmp = #C1]) → void {
-    self::foo<dynamic>(this, !cmp.==(null) ? cmp : #C2);
+  method barF([(self::C::E, self::C::E) → core::int cmp = null]) → void {
+    self::foo<dynamic>(this, !cmp.==(null) ? cmp : self::C::_default);
   }
   static method _default(dynamic a, dynamic b) → core::int {
     return 1.unary-();
diff --git a/pkg/front_end/testcases/inference/bug30624.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/bug30624.dart.legacy.transformed.expect
index fa6eff1..18bd73b 100644
--- a/pkg/front_end/testcases/inference/bug30624.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/bug30624.dart.legacy.transformed.expect
@@ -6,24 +6,24 @@
   synthetic constructor •() → self::C<self::C::E>
     : super core::Object::•()
     ;
-  method barA([(self::C::E, self::C::E) → core::int cmp = #C1]) → void {
-    self::foo<dynamic>(this, let final dynamic #t1 = cmp in #t1.==(null) ? #C2 : #t1);
+  method barA([(self::C::E, self::C::E) → core::int cmp = null]) → void {
+    self::foo<dynamic>(this, let final dynamic #t1 = cmp in #t1.==(null) ? self::C::_default : #t1);
   }
-  method barB([(self::C::E, self::C::E) → core::int cmp = #C1]) → void {
-    self::foo<dynamic>(this, let final dynamic #t2 = cmp in #t2.==(null) ? (#C2) as (self::C::E, self::C::E) → core::int : #t2);
+  method barB([(self::C::E, self::C::E) → core::int cmp = null]) → void {
+    self::foo<dynamic>(this, let final dynamic #t2 = cmp in #t2.==(null) ? self::C::_default as (self::C::E, self::C::E) → core::int : #t2);
   }
-  method barC([(self::C::E, self::C::E) → core::int cmp = #C1]) → void {
-    (self::C::E, self::C::E) → core::int v = #C2;
+  method barC([(self::C::E, self::C::E) → core::int cmp = null]) → void {
+    (self::C::E, self::C::E) → core::int v = self::C::_default;
     self::foo<dynamic>(this, let final dynamic #t3 = cmp in #t3.==(null) ? v : #t3);
   }
-  method barD([(self::C::E, self::C::E) → core::int cmp = #C1]) → void {
-    self::foo<self::C::E>(this, let final dynamic #t4 = cmp in #t4.==(null) ? #C2 : #t4);
+  method barD([(self::C::E, self::C::E) → core::int cmp = null]) → void {
+    self::foo<self::C::E>(this, let final dynamic #t4 = cmp in #t4.==(null) ? self::C::_default : #t4);
   }
-  method barE([(self::C::E, self::C::E) → core::int cmp = #C1]) → void {
-    self::foo<dynamic>(this, cmp.==(null) ? #C2 : cmp);
+  method barE([(self::C::E, self::C::E) → core::int cmp = null]) → void {
+    self::foo<dynamic>(this, cmp.==(null) ? self::C::_default : cmp);
   }
-  method barF([(self::C::E, self::C::E) → core::int cmp = #C1]) → void {
-    self::foo<dynamic>(this, !cmp.==(null) ? cmp : #C2);
+  method barF([(self::C::E, self::C::E) → core::int cmp = null]) → void {
+    self::foo<dynamic>(this, !cmp.==(null) ? cmp : self::C::_default);
   }
   static method _default(dynamic a, dynamic b) → core::int {
     return 1.unary-();
diff --git a/pkg/front_end/testcases/inference/bug30624.dart.strong.expect b/pkg/front_end/testcases/inference/bug30624.dart.strong.expect
index b18dcc5..30ffb21 100644
--- a/pkg/front_end/testcases/inference/bug30624.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/bug30624.dart.strong.expect
@@ -6,24 +6,24 @@
   synthetic constructor •() → self::C<self::C::E>
     : super core::Object::•()
     ;
-  method barA([(self::C::E, self::C::E) → core::int cmp = #C1]) → void {
-    self::foo<self::C::E>(this, let final (self::C::E, self::C::E) → core::int #t1 = cmp in #t1.==(null) ?{(self::C::E, self::C::E) → core::int} #C2 : #t1);
+  method barA([(self::C::E, self::C::E) → core::int cmp = null]) → void {
+    self::foo<self::C::E>(this, let final (self::C::E, self::C::E) → core::int #t1 = cmp in #t1.==(null) ?{(self::C::E, self::C::E) → core::int} self::C::_default : #t1);
   }
-  method barB([(self::C::E, self::C::E) → core::int cmp = #C1]) → void {
-    self::foo<self::C::E>(this, let final (self::C::E, self::C::E) → core::int #t2 = cmp in #t2.==(null) ?{(self::C::E, self::C::E) → core::int} (#C2) as (self::C::E, self::C::E) → core::int : #t2);
+  method barB([(self::C::E, self::C::E) → core::int cmp = null]) → void {
+    self::foo<self::C::E>(this, let final (self::C::E, self::C::E) → core::int #t2 = cmp in #t2.==(null) ?{(self::C::E, self::C::E) → core::int} self::C::_default as (self::C::E, self::C::E) → core::int : #t2);
   }
-  method barC([(self::C::E, self::C::E) → core::int cmp = #C1]) → void {
-    (self::C::E, self::C::E) → core::int v = #C2;
+  method barC([(self::C::E, self::C::E) → core::int cmp = null]) → void {
+    (self::C::E, self::C::E) → core::int v = self::C::_default;
     self::foo<self::C::E>(this, let final (self::C::E, self::C::E) → core::int #t3 = cmp in #t3.==(null) ?{(self::C::E, self::C::E) → core::int} v : #t3);
   }
-  method barD([(self::C::E, self::C::E) → core::int cmp = #C1]) → void {
-    self::foo<self::C::E>(this, let final (self::C::E, self::C::E) → core::int #t4 = cmp in #t4.==(null) ?{(self::C::E, self::C::E) → core::int} #C2 : #t4);
+  method barD([(self::C::E, self::C::E) → core::int cmp = null]) → void {
+    self::foo<self::C::E>(this, let final (self::C::E, self::C::E) → core::int #t4 = cmp in #t4.==(null) ?{(self::C::E, self::C::E) → core::int} self::C::_default : #t4);
   }
-  method barE([(self::C::E, self::C::E) → core::int cmp = #C1]) → void {
-    self::foo<self::C::E>(this, cmp.{core::Object::==}(null) ?{(self::C::E, self::C::E) → core::int} #C2 : cmp);
+  method barE([(self::C::E, self::C::E) → core::int cmp = null]) → void {
+    self::foo<self::C::E>(this, cmp.{core::Object::==}(null) ?{(self::C::E, self::C::E) → core::int} self::C::_default : cmp);
   }
-  method barF([(self::C::E, self::C::E) → core::int cmp = #C1]) → void {
-    self::foo<self::C::E>(this, !cmp.{core::Object::==}(null) ?{(self::C::E, self::C::E) → core::int} cmp : #C2);
+  method barF([(self::C::E, self::C::E) → core::int cmp = null]) → void {
+    self::foo<self::C::E>(this, !cmp.{core::Object::==}(null) ?{(self::C::E, self::C::E) → core::int} cmp : self::C::_default);
   }
   static method _default(dynamic a, dynamic b) → core::int {
     return 1.{core::int::unary-}();
diff --git a/pkg/front_end/testcases/inference/bug30624.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/bug30624.dart.strong.transformed.expect
index b18dcc5..30ffb21 100644
--- a/pkg/front_end/testcases/inference/bug30624.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/bug30624.dart.strong.transformed.expect
@@ -6,24 +6,24 @@
   synthetic constructor •() → self::C<self::C::E>
     : super core::Object::•()
     ;
-  method barA([(self::C::E, self::C::E) → core::int cmp = #C1]) → void {
-    self::foo<self::C::E>(this, let final (self::C::E, self::C::E) → core::int #t1 = cmp in #t1.==(null) ?{(self::C::E, self::C::E) → core::int} #C2 : #t1);
+  method barA([(self::C::E, self::C::E) → core::int cmp = null]) → void {
+    self::foo<self::C::E>(this, let final (self::C::E, self::C::E) → core::int #t1 = cmp in #t1.==(null) ?{(self::C::E, self::C::E) → core::int} self::C::_default : #t1);
   }
-  method barB([(self::C::E, self::C::E) → core::int cmp = #C1]) → void {
-    self::foo<self::C::E>(this, let final (self::C::E, self::C::E) → core::int #t2 = cmp in #t2.==(null) ?{(self::C::E, self::C::E) → core::int} (#C2) as (self::C::E, self::C::E) → core::int : #t2);
+  method barB([(self::C::E, self::C::E) → core::int cmp = null]) → void {
+    self::foo<self::C::E>(this, let final (self::C::E, self::C::E) → core::int #t2 = cmp in #t2.==(null) ?{(self::C::E, self::C::E) → core::int} self::C::_default as (self::C::E, self::C::E) → core::int : #t2);
   }
-  method barC([(self::C::E, self::C::E) → core::int cmp = #C1]) → void {
-    (self::C::E, self::C::E) → core::int v = #C2;
+  method barC([(self::C::E, self::C::E) → core::int cmp = null]) → void {
+    (self::C::E, self::C::E) → core::int v = self::C::_default;
     self::foo<self::C::E>(this, let final (self::C::E, self::C::E) → core::int #t3 = cmp in #t3.==(null) ?{(self::C::E, self::C::E) → core::int} v : #t3);
   }
-  method barD([(self::C::E, self::C::E) → core::int cmp = #C1]) → void {
-    self::foo<self::C::E>(this, let final (self::C::E, self::C::E) → core::int #t4 = cmp in #t4.==(null) ?{(self::C::E, self::C::E) → core::int} #C2 : #t4);
+  method barD([(self::C::E, self::C::E) → core::int cmp = null]) → void {
+    self::foo<self::C::E>(this, let final (self::C::E, self::C::E) → core::int #t4 = cmp in #t4.==(null) ?{(self::C::E, self::C::E) → core::int} self::C::_default : #t4);
   }
-  method barE([(self::C::E, self::C::E) → core::int cmp = #C1]) → void {
-    self::foo<self::C::E>(this, cmp.{core::Object::==}(null) ?{(self::C::E, self::C::E) → core::int} #C2 : cmp);
+  method barE([(self::C::E, self::C::E) → core::int cmp = null]) → void {
+    self::foo<self::C::E>(this, cmp.{core::Object::==}(null) ?{(self::C::E, self::C::E) → core::int} self::C::_default : cmp);
   }
-  method barF([(self::C::E, self::C::E) → core::int cmp = #C1]) → void {
-    self::foo<self::C::E>(this, !cmp.{core::Object::==}(null) ?{(self::C::E, self::C::E) → core::int} cmp : #C2);
+  method barF([(self::C::E, self::C::E) → core::int cmp = null]) → void {
+    self::foo<self::C::E>(this, !cmp.{core::Object::==}(null) ?{(self::C::E, self::C::E) → core::int} cmp : self::C::_default);
   }
   static method _default(dynamic a, dynamic b) → core::int {
     return 1.{core::int::unary-}();
diff --git a/pkg/front_end/testcases/inference/callable_generic_class.dart.legacy.expect b/pkg/front_end/testcases/inference/callable_generic_class.dart.legacy.expect
index 3012f37..0423f11 100644
--- a/pkg/front_end/testcases/inference/callable_generic_class.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/callable_generic_class.dart.legacy.expect
@@ -6,7 +6,7 @@
   synthetic constructor •() → self::ActionDispatcher<self::ActionDispatcher::P>
     : super core::Object::•()
     ;
-  method call([generic-covariant-impl self::ActionDispatcher::P value = #C1]) → void {}
+  method call([generic-covariant-impl self::ActionDispatcher::P value = null]) → void {}
 }
 class Bar extends core::Object {
   synthetic constructor •() → self::Bar
diff --git a/pkg/front_end/testcases/inference/callable_generic_class.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/callable_generic_class.dart.legacy.transformed.expect
index 3012f37..0423f11 100644
--- a/pkg/front_end/testcases/inference/callable_generic_class.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/callable_generic_class.dart.legacy.transformed.expect
@@ -6,7 +6,7 @@
   synthetic constructor •() → self::ActionDispatcher<self::ActionDispatcher::P>
     : super core::Object::•()
     ;
-  method call([generic-covariant-impl self::ActionDispatcher::P value = #C1]) → void {}
+  method call([generic-covariant-impl self::ActionDispatcher::P value = null]) → void {}
 }
 class Bar extends core::Object {
   synthetic constructor •() → self::Bar
diff --git a/pkg/front_end/testcases/inference/callable_generic_class.dart.strong.expect b/pkg/front_end/testcases/inference/callable_generic_class.dart.strong.expect
index e71f53c..d25caeb 100644
--- a/pkg/front_end/testcases/inference/callable_generic_class.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/callable_generic_class.dart.strong.expect
@@ -6,7 +6,7 @@
   synthetic constructor •() → self::ActionDispatcher<self::ActionDispatcher::P>
     : super core::Object::•()
     ;
-  method call([generic-covariant-impl self::ActionDispatcher::P value = #C1]) → void {}
+  method call([generic-covariant-impl self::ActionDispatcher::P value = null]) → void {}
 }
 class Bar extends core::Object {
   synthetic constructor •() → self::Bar
diff --git a/pkg/front_end/testcases/inference/callable_generic_class.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/callable_generic_class.dart.strong.transformed.expect
index e71f53c..d25caeb 100644
--- a/pkg/front_end/testcases/inference/callable_generic_class.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/callable_generic_class.dart.strong.transformed.expect
@@ -6,7 +6,7 @@
   synthetic constructor •() → self::ActionDispatcher<self::ActionDispatcher::P>
     : super core::Object::•()
     ;
-  method call([generic-covariant-impl self::ActionDispatcher::P value = #C1]) → void {}
+  method call([generic-covariant-impl self::ActionDispatcher::P value = null]) → void {}
 }
 class Bar extends core::Object {
   synthetic constructor •() → self::Bar
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_argument_not_assignable.dart.legacy.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_argument_not_assignable.dart.legacy.expect
index 2220882..4cad6f5 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_argument_not_assignable.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_argument_not_assignable.dart.legacy.expect
@@ -21,5 +21,5 @@
 static method myF() → self::NotA
   return null;
 static method main() → dynamic {
-  dynamic x = new self::C::•<dynamic>(#C1);
+  dynamic x = new self::C::•<dynamic>(self::myF);
 }
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_argument_not_assignable.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_argument_not_assignable.dart.legacy.transformed.expect
index 2220882..4cad6f5 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_argument_not_assignable.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_argument_not_assignable.dart.legacy.transformed.expect
@@ -21,5 +21,5 @@
 static method myF() → self::NotA
   return null;
 static method main() → dynamic {
-  dynamic x = new self::C::•<dynamic>(#C1);
+  dynamic x = new self::C::•<dynamic>(self::myF);
 }
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_argument_not_assignable.dart.strong.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_argument_not_assignable.dart.strong.expect
index fc55df8..d1fa08b 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_argument_not_assignable.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_argument_not_assignable.dart.strong.expect
@@ -44,5 +44,5 @@
 static method myF() → self::NotA
   return null;
 static method main() → dynamic {
-  self::C<self::NotA> x = new self::C::•<self::NotA>(#C1);
+  self::C<self::NotA> x = new self::C::•<self::NotA>(self::myF);
 }
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const.dart.legacy.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const.dart.legacy.expect
index 0a60127..0eb5ed3 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const.dart.legacy.expect
@@ -9,5 +9,5 @@
     ;
 }
 static method main() → dynamic {
-  dynamic x = #C2;
+  dynamic x = const self::C::•<dynamic>(42);
 }
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const.dart.legacy.transformed.expect
index 0a60127..0eb5ed3 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const.dart.legacy.transformed.expect
@@ -9,5 +9,5 @@
     ;
 }
 static method main() → dynamic {
-  dynamic x = #C2;
+  dynamic x = const self::C::•<dynamic>(42);
 }
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const.dart.strong.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const.dart.strong.expect
index f7242ae..acaa923 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const.dart.strong.expect
@@ -9,5 +9,5 @@
     ;
 }
 static method main() → dynamic {
-  self::C<core::int> x = #C2;
+  self::C<core::int> x = const self::C::•<core::int>(42);
 }
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const.dart.strong.transformed.expect
index f7242ae..acaa923 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const.dart.strong.transformed.expect
@@ -9,5 +9,5 @@
     ;
 }
 static method main() → dynamic {
-  self::C<core::int> x = #C2;
+  self::C<core::int> x = const self::C::•<core::int>(42);
 }
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const_with_upper_bound.dart.legacy.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const_with_upper_bound.dart.legacy.expect
index 7a7ad6b..ffe3403 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const_with_upper_bound.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const_with_upper_bound.dart.legacy.expect
@@ -14,5 +14,7 @@
     ;
 }
 static method main() → void {
-  self::C<core::int> c2 = #C2;
+  const dynamic c = const self::C::•<dynamic>(0);
+  self::C<core::int> c2 = c;
+  const self::D<core::int> d = const self::D::•<dynamic>();
 }
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const_with_upper_bound.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const_with_upper_bound.dart.legacy.transformed.expect
index 7a7ad6b..ffe3403 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const_with_upper_bound.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const_with_upper_bound.dart.legacy.transformed.expect
@@ -14,5 +14,7 @@
     ;
 }
 static method main() → void {
-  self::C<core::int> c2 = #C2;
+  const dynamic c = const self::C::•<dynamic>(0);
+  self::C<core::int> c2 = c;
+  const self::D<core::int> d = const self::D::•<dynamic>();
 }
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const_with_upper_bound.dart.strong.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const_with_upper_bound.dart.strong.expect
index f9d08a6..eb8ade1 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const_with_upper_bound.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const_with_upper_bound.dart.strong.expect
@@ -14,5 +14,7 @@
     ;
 }
 static method main() → void {
-  self::C<core::int> c2 = #C2;
+  const self::C<core::int> c = const self::C::•<core::int>(0);
+  self::C<core::int> c2 = c;
+  const self::D<core::int> d = const self::D::•<core::int>();
 }
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const_with_upper_bound.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const_with_upper_bound.dart.strong.transformed.expect
index f9d08a6..eb8ade1 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const_with_upper_bound.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_const_with_upper_bound.dart.strong.transformed.expect
@@ -14,5 +14,7 @@
     ;
 }
 static method main() → void {
-  self::C<core::int> c2 = #C2;
+  const self::C<core::int> c = const self::C::•<core::int>(0);
+  self::C<core::int> c2 = c;
+  const self::D<core::int> d = const self::D::•<core::int>();
 }
diff --git a/pkg/front_end/testcases/inference/downwards_context_from_inferred_field_type.dart.legacy.expect b/pkg/front_end/testcases/inference/downwards_context_from_inferred_field_type.dart.legacy.expect
index 15f7181..9a63601 100644
--- a/pkg/front_end/testcases/inference/downwards_context_from_inferred_field_type.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/downwards_context_from_inferred_field_type.dart.legacy.expect
@@ -9,7 +9,7 @@
   abstract get foo() → core::Iterable<core::String>;
 }
 class B extends core::Object implements self::A {
-  final field dynamic foo = #C1;
+  final field dynamic foo = const <dynamic>[];
   synthetic constructor •() → self::B
     : super core::Object::•()
     ;
diff --git a/pkg/front_end/testcases/inference/downwards_context_from_inferred_field_type.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/downwards_context_from_inferred_field_type.dart.legacy.transformed.expect
index 15f7181..9a63601 100644
--- a/pkg/front_end/testcases/inference/downwards_context_from_inferred_field_type.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_context_from_inferred_field_type.dart.legacy.transformed.expect
@@ -9,7 +9,7 @@
   abstract get foo() → core::Iterable<core::String>;
 }
 class B extends core::Object implements self::A {
-  final field dynamic foo = #C1;
+  final field dynamic foo = const <dynamic>[];
   synthetic constructor •() → self::B
     : super core::Object::•()
     ;
diff --git a/pkg/front_end/testcases/inference/downwards_context_from_inferred_field_type.dart.strong.expect b/pkg/front_end/testcases/inference/downwards_context_from_inferred_field_type.dart.strong.expect
index 4afb3e3..97ebeda 100644
--- a/pkg/front_end/testcases/inference/downwards_context_from_inferred_field_type.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/downwards_context_from_inferred_field_type.dart.strong.expect
@@ -9,7 +9,7 @@
   abstract get foo() → core::Iterable<core::String>;
 }
 class B extends core::Object implements self::A {
-  final field core::Iterable<core::String> foo = #C1;
+  final field core::Iterable<core::String> foo = const <core::String>[];
   synthetic constructor •() → self::B
     : super core::Object::•()
     ;
diff --git a/pkg/front_end/testcases/inference/downwards_context_from_inferred_field_type.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/downwards_context_from_inferred_field_type.dart.strong.transformed.expect
index 4afb3e3..97ebeda 100644
--- a/pkg/front_end/testcases/inference/downwards_context_from_inferred_field_type.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_context_from_inferred_field_type.dart.strong.transformed.expect
@@ -9,7 +9,7 @@
   abstract get foo() → core::Iterable<core::String>;
 }
 class B extends core::Object implements self::A {
-  final field core::Iterable<core::String> foo = #C1;
+  final field core::Iterable<core::String> foo = const <core::String>[];
   synthetic constructor •() → self::B
     : super core::Object::•()
     ;
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations.dart.legacy.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations.dart.legacy.expect
index acf0811..b08a49b 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations.dart.legacy.expect
@@ -10,13 +10,13 @@
     : super core::Object::•()
     ;
 }
-@#C1
+@self::Foo::•(const <dynamic>[])
 class Bar extends core::Object {
   synthetic constructor •() → self::Bar
     : super core::Object::•()
     ;
 }
-@#C1
+@self::Foo::named(const <dynamic>[])
 class Baz extends core::Object {
   synthetic constructor •() → self::Baz
     : super core::Object::•()
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations.dart.legacy.transformed.expect
index acf0811..b08a49b 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations.dart.legacy.transformed.expect
@@ -10,13 +10,13 @@
     : super core::Object::•()
     ;
 }
-@#C1
+@self::Foo::•(const <dynamic>[])
 class Bar extends core::Object {
   synthetic constructor •() → self::Bar
     : super core::Object::•()
     ;
 }
-@#C1
+@self::Foo::named(const <dynamic>[])
 class Baz extends core::Object {
   synthetic constructor •() → self::Baz
     : super core::Object::•()
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations.dart.strong.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations.dart.strong.expect
index acf0811..9ebf851 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations.dart.strong.expect
@@ -10,13 +10,13 @@
     : super core::Object::•()
     ;
 }
-@#C1
+@self::Foo::•(const <core::String>[])
 class Bar extends core::Object {
   synthetic constructor •() → self::Bar
     : super core::Object::•()
     ;
 }
-@#C1
+@self::Foo::named(const <core::String>[])
 class Baz extends core::Object {
   synthetic constructor •() → self::Baz
     : super core::Object::•()
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations.dart.strong.transformed.expect
index acf0811..9ebf851 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations.dart.strong.transformed.expect
@@ -10,13 +10,13 @@
     : super core::Object::•()
     ;
 }
-@#C1
+@self::Foo::•(const <core::String>[])
 class Bar extends core::Object {
   synthetic constructor •() → self::Bar
     : super core::Object::•()
     ;
 }
-@#C1
+@self::Foo::named(const <core::String>[])
 class Baz extends core::Object {
   synthetic constructor •() → self::Baz
     : super core::Object::•()
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_class_members.dart.legacy.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_class_members.dart.legacy.expect
index 3d8fff7..7687ebe 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_class_members.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_class_members.dart.legacy.expect
@@ -8,13 +8,13 @@
     ;
 }
 abstract class Bar extends core::Object {
-  @#C1
+  @self::Foo::•(const <dynamic>[])
   field dynamic x = null;
-  @#C1
+  @self::Foo::•(const <dynamic>[])
   constructor •() → self::Bar
     : super core::Object::•()
     ;
-  @#C1
+  @self::Foo::•(const <dynamic>[])
   abstract method f() → void;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_class_members.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_class_members.dart.legacy.transformed.expect
index 3d8fff7..7687ebe 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_class_members.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_class_members.dart.legacy.transformed.expect
@@ -8,13 +8,13 @@
     ;
 }
 abstract class Bar extends core::Object {
-  @#C1
+  @self::Foo::•(const <dynamic>[])
   field dynamic x = null;
-  @#C1
+  @self::Foo::•(const <dynamic>[])
   constructor •() → self::Bar
     : super core::Object::•()
     ;
-  @#C1
+  @self::Foo::•(const <dynamic>[])
   abstract method f() → void;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_class_members.dart.strong.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_class_members.dart.strong.expect
index 3d8fff7..242be1c 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_class_members.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_class_members.dart.strong.expect
@@ -8,13 +8,13 @@
     ;
 }
 abstract class Bar extends core::Object {
-  @#C1
+  @self::Foo::•(const <core::String>[])
   field dynamic x = null;
-  @#C1
+  @self::Foo::•(const <core::String>[])
   constructor •() → self::Bar
     : super core::Object::•()
     ;
-  @#C1
+  @self::Foo::•(const <core::String>[])
   abstract method f() → void;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_class_members.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_class_members.dart.strong.transformed.expect
index 3d8fff7..242be1c 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_class_members.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_class_members.dart.strong.transformed.expect
@@ -8,13 +8,13 @@
     ;
 }
 abstract class Bar extends core::Object {
-  @#C1
+  @self::Foo::•(const <core::String>[])
   field dynamic x = null;
-  @#C1
+  @self::Foo::•(const <core::String>[])
   constructor •() → self::Bar
     : super core::Object::•()
     ;
-  @#C1
+  @self::Foo::•(const <core::String>[])
   abstract method f() → void;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_for_loop_variable.dart.legacy.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_for_loop_variable.dart.legacy.expect
index 2385d81..fef9dfe 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_for_loop_variable.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_for_loop_variable.dart.legacy.expect
@@ -8,9 +8,9 @@
     ;
 }
 static method test() → void {
-  for (@#C1 core::int i = 0; i.<(1); i = i.+(1)) {
+  for (@self::Foo::•(const <dynamic>[]) core::int i = 0; i.<(1); i = i.+(1)) {
   }
-  for (@#C1 core::int i in <dynamic>[0]) {
+  for (@self::Foo::•(const <dynamic>[]) core::int i in <dynamic>[0]) {
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_for_loop_variable.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_for_loop_variable.dart.legacy.transformed.expect
index 2385d81..fef9dfe 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_for_loop_variable.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_for_loop_variable.dart.legacy.transformed.expect
@@ -8,9 +8,9 @@
     ;
 }
 static method test() → void {
-  for (@#C1 core::int i = 0; i.<(1); i = i.+(1)) {
+  for (@self::Foo::•(const <dynamic>[]) core::int i = 0; i.<(1); i = i.+(1)) {
   }
-  for (@#C1 core::int i in <dynamic>[0]) {
+  for (@self::Foo::•(const <dynamic>[]) core::int i in <dynamic>[0]) {
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_for_loop_variable.dart.strong.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_for_loop_variable.dart.strong.expect
index 7a2c8db..4136905 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_for_loop_variable.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_for_loop_variable.dart.strong.expect
@@ -8,9 +8,9 @@
     ;
 }
 static method test() → void {
-  for (@#C1 core::int i = 0; i.{core::num::<}(1); i = i.{core::num::+}(1)) {
+  for (@self::Foo::•(const <core::String>[]) core::int i = 0; i.{core::num::<}(1); i = i.{core::num::+}(1)) {
   }
-  for (@#C1 core::int i in <core::int>[0]) {
+  for (@self::Foo::•(const <core::String>[]) core::int i in <core::int>[0]) {
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_for_loop_variable.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_for_loop_variable.dart.strong.transformed.expect
index 7a2c8db..4136905 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_for_loop_variable.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_for_loop_variable.dart.strong.transformed.expect
@@ -8,9 +8,9 @@
     ;
 }
 static method test() → void {
-  for (@#C1 core::int i = 0; i.{core::num::<}(1); i = i.{core::num::+}(1)) {
+  for (@self::Foo::•(const <core::String>[]) core::int i = 0; i.{core::num::<}(1); i = i.{core::num::+}(1)) {
   }
-  for (@#C1 core::int i in <core::int>[0]) {
+  for (@self::Foo::•(const <core::String>[]) core::int i in <core::int>[0]) {
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_locals.dart.strong.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_locals.dart.strong.expect
index d0f65f5..d5e20ee 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_locals.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_locals.dart.strong.expect
@@ -8,8 +8,8 @@
     ;
 }
 static method test() → void {
-  @#C1 dynamic x;
-  @#C1
+  @self::Foo::•(const <core::String>[]) dynamic x;
+  @self::Foo::•(const <core::String>[])
   function f() → void {}
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_locals.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_locals.dart.strong.transformed.expect
index d0f65f5..d5e20ee 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_locals.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_locals.dart.strong.transformed.expect
@@ -8,8 +8,8 @@
     ;
 }
 static method test() → void {
-  @#C1 dynamic x;
-  @#C1
+  @self::Foo::•(const <core::String>[]) dynamic x;
+  @self::Foo::•(const <core::String>[])
   function f() → void {}
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_locals_referring_to_locals.dart.legacy.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_locals_referring_to_locals.dart.legacy.expect
index 6adf69f..610a4e6 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_locals_referring_to_locals.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_locals_referring_to_locals.dart.legacy.expect
@@ -8,9 +8,10 @@
     ;
 }
 static method test() → void {
-  @#C1 dynamic y;
-  @#C1
+  const dynamic x = 0;
+  @self::Foo::•(const <dynamic>[x]) dynamic y;
+  @self::Foo::•(const <dynamic>[x])
   function bar() → void {}
-  function baz(@#C1 dynamic formal) → void {}
+  function baz(@self::Foo::•(const <dynamic>[x]) dynamic formal) → void {}
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_locals_referring_to_locals.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_locals_referring_to_locals.dart.legacy.transformed.expect
index 6adf69f..610a4e6 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_locals_referring_to_locals.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_locals_referring_to_locals.dart.legacy.transformed.expect
@@ -8,9 +8,10 @@
     ;
 }
 static method test() → void {
-  @#C1 dynamic y;
-  @#C1
+  const dynamic x = 0;
+  @self::Foo::•(const <dynamic>[x]) dynamic y;
+  @self::Foo::•(const <dynamic>[x])
   function bar() → void {}
-  function baz(@#C1 dynamic formal) → void {}
+  function baz(@self::Foo::•(const <dynamic>[x]) dynamic formal) → void {}
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_locals_referring_to_locals.dart.strong.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_locals_referring_to_locals.dart.strong.expect
index 6adf69f..8947a5f 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_locals_referring_to_locals.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_locals_referring_to_locals.dart.strong.expect
@@ -8,9 +8,10 @@
     ;
 }
 static method test() → void {
-  @#C1 dynamic y;
-  @#C1
+  const core::int x = 0;
+  @self::Foo::•(const <core::int>[x]) dynamic y;
+  @self::Foo::•(const <core::int>[x])
   function bar() → void {}
-  function baz(@#C1 dynamic formal) → void {}
+  function baz(@self::Foo::•(const <core::int>[x]) dynamic formal) → void {}
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_locals_referring_to_locals.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_locals_referring_to_locals.dart.strong.transformed.expect
index 6adf69f..8947a5f 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_locals_referring_to_locals.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_locals_referring_to_locals.dart.strong.transformed.expect
@@ -8,9 +8,10 @@
     ;
 }
 static method test() → void {
-  @#C1 dynamic y;
-  @#C1
+  const core::int x = 0;
+  @self::Foo::•(const <core::int>[x]) dynamic y;
+  @self::Foo::•(const <core::int>[x])
   function bar() → void {}
-  function baz(@#C1 dynamic formal) → void {}
+  function baz(@self::Foo::•(const <core::int>[x]) dynamic formal) → void {}
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter.dart.legacy.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter.dart.legacy.expect
index 327d644..7a9bc053 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter.dart.legacy.expect
@@ -11,7 +11,7 @@
   synthetic constructor •() → self::C
     : super core::Object::•()
     ;
-  method m(@#C1 dynamic x) → void {}
+  method m(@self::Foo::•(const <dynamic>[]) dynamic x) → void {}
 }
-static method f(@#C1 dynamic x) → void {}
+static method f(@self::Foo::•(const <dynamic>[]) dynamic x) → void {}
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter.dart.legacy.transformed.expect
index 327d644..7a9bc053 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter.dart.legacy.transformed.expect
@@ -11,7 +11,7 @@
   synthetic constructor •() → self::C
     : super core::Object::•()
     ;
-  method m(@#C1 dynamic x) → void {}
+  method m(@self::Foo::•(const <dynamic>[]) dynamic x) → void {}
 }
-static method f(@#C1 dynamic x) → void {}
+static method f(@self::Foo::•(const <dynamic>[]) dynamic x) → void {}
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter.dart.strong.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter.dart.strong.expect
index 327d644..42e6f96 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter.dart.strong.expect
@@ -11,7 +11,7 @@
   synthetic constructor •() → self::C
     : super core::Object::•()
     ;
-  method m(@#C1 dynamic x) → void {}
+  method m(@self::Foo::•(const <core::String>[]) dynamic x) → void {}
 }
-static method f(@#C1 dynamic x) → void {}
+static method f(@self::Foo::•(const <core::String>[]) dynamic x) → void {}
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter.dart.strong.transformed.expect
index 327d644..42e6f96 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter.dart.strong.transformed.expect
@@ -11,7 +11,7 @@
   synthetic constructor •() → self::C
     : super core::Object::•()
     ;
-  method m(@#C1 dynamic x) → void {}
+  method m(@self::Foo::•(const <core::String>[]) dynamic x) → void {}
 }
-static method f(@#C1 dynamic x) → void {}
+static method f(@self::Foo::•(const <core::String>[]) dynamic x) → void {}
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter_local.dart.legacy.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter_local.dart.legacy.expect
index 077e79e..e33e87f 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter_local.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter_local.dart.legacy.expect
@@ -8,7 +8,7 @@
     ;
 }
 static method test() → void {
-  function f(@#C1 dynamic x) → void {}
-  dynamic x = (@#C1 dynamic x) → dynamic {};
+  function f(@self::Foo::•(const <dynamic>[]) dynamic x) → void {}
+  dynamic x = (@self::Foo::•(const <dynamic>[]) dynamic x) → dynamic {};
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter_local.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter_local.dart.legacy.transformed.expect
index 077e79e..e33e87f 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter_local.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter_local.dart.legacy.transformed.expect
@@ -8,7 +8,7 @@
     ;
 }
 static method test() → void {
-  function f(@#C1 dynamic x) → void {}
-  dynamic x = (@#C1 dynamic x) → dynamic {};
+  function f(@self::Foo::•(const <dynamic>[]) dynamic x) → void {}
+  dynamic x = (@self::Foo::•(const <dynamic>[]) dynamic x) → dynamic {};
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter_local.dart.strong.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter_local.dart.strong.expect
index 2509e8c..502e69f 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter_local.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter_local.dart.strong.expect
@@ -8,7 +8,7 @@
     ;
 }
 static method test() → void {
-  function f(@#C1 dynamic x) → void {}
-  (dynamic) → core::Null x = (@#C1 dynamic x) → core::Null {};
+  function f(@self::Foo::•(const <core::String>[]) dynamic x) → void {}
+  (dynamic) → core::Null x = (@self::Foo::•(const <core::String>[]) dynamic x) → core::Null {};
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter_local.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter_local.dart.strong.transformed.expect
index 2509e8c..502e69f 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter_local.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_parameter_local.dart.strong.transformed.expect
@@ -8,7 +8,7 @@
     ;
 }
 static method test() → void {
-  function f(@#C1 dynamic x) → void {}
-  (dynamic) → core::Null x = (@#C1 dynamic x) → core::Null {};
+  function f(@self::Foo::•(const <core::String>[]) dynamic x) → void {}
+  (dynamic) → core::Null x = (@self::Foo::•(const <core::String>[]) dynamic x) → core::Null {};
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_typedef.dart.legacy.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_typedef.dart.legacy.expect
index 53ef376..96a26e4 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_typedef.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_typedef.dart.legacy.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-@#C1
+@self::Foo::•(const <dynamic>[])
 typedef F = () → void;
 class Foo extends core::Object {
   const constructor •(core::List<core::String> l) → self::Foo
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_typedef.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_typedef.dart.legacy.transformed.expect
index 53ef376..96a26e4 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_typedef.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_typedef.dart.legacy.transformed.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-@#C1
+@self::Foo::•(const <dynamic>[])
 typedef F = () → void;
 class Foo extends core::Object {
   const constructor •(core::List<core::String> l) → self::Foo
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_typedef.dart.strong.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_typedef.dart.strong.expect
index 53ef376..dfedff2 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_typedef.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_typedef.dart.strong.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-@#C1
+@self::Foo::•(const <core::String>[])
 typedef F = () → void;
 class Foo extends core::Object {
   const constructor •(core::List<core::String> l) → self::Foo
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_typedef.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_typedef.dart.strong.transformed.expect
index 53ef376..dfedff2 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_typedef.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_typedef.dart.strong.transformed.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-@#C1
+@self::Foo::•(const <core::String>[])
 typedef F = () → void;
 class Foo extends core::Object {
   const constructor •(core::List<core::String> l) → self::Foo
diff --git a/pkg/front_end/testcases/inference/downwards_inference_initializing_formal_default_formal.dart.legacy.expect b/pkg/front_end/testcases/inference/downwards_inference_initializing_formal_default_formal.dart.legacy.expect
index a799b4f..d64cebd 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_initializing_formal_default_formal.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_initializing_formal_default_formal.dart.legacy.expect
@@ -5,13 +5,13 @@
 typedef Function2<S extends core::Object = dynamic, T extends core::Object = dynamic> = ([S]) → T;
 class Foo extends core::Object {
   field core::List<core::int> x;
-  constructor •([core::List<core::int> x = #C2]) → self::Foo
+  constructor •([core::List<core::int> x = const <dynamic>[1]]) → self::Foo
     : self::Foo::x = x, super core::Object::•()
     ;
-  constructor named([core::List<core::int> x = #C2]) → self::Foo
+  constructor named([core::List<core::int> x = const <dynamic>[1]]) → self::Foo
     : self::Foo::x = null, super core::Object::•()
     ;
 }
-static field ([core::List<core::int>]) → core::String g = ([dynamic llll = #C2]) → dynamic => "hello";
-static method f([core::List<core::int> l = #C2]) → void {}
+static field ([core::List<core::int>]) → core::String g = ([dynamic llll = const <dynamic>[1]]) → dynamic => "hello";
+static method f([core::List<core::int> l = const <dynamic>[1]]) → void {}
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_initializing_formal_default_formal.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_initializing_formal_default_formal.dart.legacy.transformed.expect
index a799b4f..d64cebd 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_initializing_formal_default_formal.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_initializing_formal_default_formal.dart.legacy.transformed.expect
@@ -5,13 +5,13 @@
 typedef Function2<S extends core::Object = dynamic, T extends core::Object = dynamic> = ([S]) → T;
 class Foo extends core::Object {
   field core::List<core::int> x;
-  constructor •([core::List<core::int> x = #C2]) → self::Foo
+  constructor •([core::List<core::int> x = const <dynamic>[1]]) → self::Foo
     : self::Foo::x = x, super core::Object::•()
     ;
-  constructor named([core::List<core::int> x = #C2]) → self::Foo
+  constructor named([core::List<core::int> x = const <dynamic>[1]]) → self::Foo
     : self::Foo::x = null, super core::Object::•()
     ;
 }
-static field ([core::List<core::int>]) → core::String g = ([dynamic llll = #C2]) → dynamic => "hello";
-static method f([core::List<core::int> l = #C2]) → void {}
+static field ([core::List<core::int>]) → core::String g = ([dynamic llll = const <dynamic>[1]]) → dynamic => "hello";
+static method f([core::List<core::int> l = const <dynamic>[1]]) → void {}
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_initializing_formal_default_formal.dart.strong.expect b/pkg/front_end/testcases/inference/downwards_inference_initializing_formal_default_formal.dart.strong.expect
index 21ff3f5..a211ade 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_initializing_formal_default_formal.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_initializing_formal_default_formal.dart.strong.expect
@@ -5,13 +5,13 @@
 typedef Function2<S extends core::Object = dynamic, T extends core::Object = dynamic> = ([S]) → T;
 class Foo extends core::Object {
   field core::List<core::int> x;
-  constructor •([core::List<core::int> x = #C2]) → self::Foo
+  constructor •([core::List<core::int> x = const <core::int>[1]]) → self::Foo
     : self::Foo::x = x, super core::Object::•()
     ;
-  constructor named([core::List<core::int> x = #C2]) → self::Foo
+  constructor named([core::List<core::int> x = const <core::int>[1]]) → self::Foo
     : self::Foo::x = null, super core::Object::•()
     ;
 }
-static field ([core::List<core::int>]) → core::String g = ([core::List<core::int> llll = #C2]) → core::String => "hello";
-static method f([core::List<core::int> l = #C2]) → void {}
+static field ([core::List<core::int>]) → core::String g = ([core::List<core::int> llll = const <core::int>[1]]) → core::String => "hello";
+static method f([core::List<core::int> l = const <core::int>[1]]) → void {}
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_initializing_formal_default_formal.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_initializing_formal_default_formal.dart.strong.transformed.expect
index 21ff3f5..a211ade 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_initializing_formal_default_formal.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_initializing_formal_default_formal.dart.strong.transformed.expect
@@ -5,13 +5,13 @@
 typedef Function2<S extends core::Object = dynamic, T extends core::Object = dynamic> = ([S]) → T;
 class Foo extends core::Object {
   field core::List<core::int> x;
-  constructor •([core::List<core::int> x = #C2]) → self::Foo
+  constructor •([core::List<core::int> x = const <core::int>[1]]) → self::Foo
     : self::Foo::x = x, super core::Object::•()
     ;
-  constructor named([core::List<core::int> x = #C2]) → self::Foo
+  constructor named([core::List<core::int> x = const <core::int>[1]]) → self::Foo
     : self::Foo::x = null, super core::Object::•()
     ;
 }
-static field ([core::List<core::int>]) → core::String g = ([core::List<core::int> llll = #C2]) → core::String => "hello";
-static method f([core::List<core::int> l = #C2]) → void {}
+static field ([core::List<core::int>]) → core::String g = ([core::List<core::int> llll = const <core::int>[1]]) → core::String => "hello";
+static method f([core::List<core::int> l = const <core::int>[1]]) → void {}
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart.legacy.expect b/pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart.legacy.expect
index 970e75b..2c7378c 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart.legacy.expect
@@ -7,7 +7,7 @@
     : super core::Object::•() {}
 }
 class F1 extends core::Object {
-  constructor •({core::List<core::int> a = #C1}) → self::F1
+  constructor •({core::List<core::int> a = null}) → self::F1
     : super core::Object::•() {}
 }
 class F2 extends core::Object {
@@ -19,7 +19,7 @@
     : super core::Object::•() {}
 }
 class F4 extends core::Object {
-  constructor •({core::Iterable<core::Iterable<core::int>> a = #C1}) → self::F4
+  constructor •({core::Iterable<core::Iterable<core::int>> a = null}) → self::F4
     : super core::Object::•() {}
 }
 static method test() → void {
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart.legacy.transformed.expect
index 970e75b..2c7378c 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart.legacy.transformed.expect
@@ -7,7 +7,7 @@
     : super core::Object::•() {}
 }
 class F1 extends core::Object {
-  constructor •({core::List<core::int> a = #C1}) → self::F1
+  constructor •({core::List<core::int> a = null}) → self::F1
     : super core::Object::•() {}
 }
 class F2 extends core::Object {
@@ -19,7 +19,7 @@
     : super core::Object::•() {}
 }
 class F4 extends core::Object {
-  constructor •({core::Iterable<core::Iterable<core::int>> a = #C1}) → self::F4
+  constructor •({core::Iterable<core::Iterable<core::int>> a = null}) → self::F4
     : super core::Object::•() {}
 }
 static method test() → void {
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart.strong.expect b/pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart.strong.expect
index cb206fd..9eda7db 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart.strong.expect
@@ -60,7 +60,7 @@
     : super core::Object::•() {}
 }
 class F1 extends core::Object {
-  constructor •({core::List<core::int> a = #C1}) → self::F1
+  constructor •({core::List<core::int> a = null}) → self::F1
     : super core::Object::•() {}
 }
 class F2 extends core::Object {
@@ -72,7 +72,7 @@
     : super core::Object::•() {}
 }
 class F4 extends core::Object {
-  constructor •({core::Iterable<core::Iterable<core::int>> a = #C1}) → self::F4
+  constructor •({core::Iterable<core::Iterable<core::int>> a = null}) → self::F4
     : super core::Object::•() {}
 }
 static method test() → void {
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart.strong.transformed.expect
index cb206fd..9eda7db 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart.strong.transformed.expect
@@ -60,7 +60,7 @@
     : super core::Object::•() {}
 }
 class F1 extends core::Object {
-  constructor •({core::List<core::int> a = #C1}) → self::F1
+  constructor •({core::List<core::int> a = null}) → self::F1
     : super core::Object::•() {}
 }
 class F2 extends core::Object {
@@ -72,7 +72,7 @@
     : super core::Object::•() {}
 }
 class F4 extends core::Object {
-  constructor •({core::Iterable<core::Iterable<core::int>> a = #C1}) → self::F4
+  constructor •({core::Iterable<core::Iterable<core::int>> a = null}) → self::F4
     : super core::Object::•() {}
 }
 static method test() → void {
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart.legacy.expect b/pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart.legacy.expect
index e664781..c1a3c1f 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart.legacy.expect
@@ -3,10 +3,10 @@
 import "dart:core" as core;
 
 static method f0(core::List<core::int> a) → void {}
-static method f1({core::List<core::int> a = #C1}) → void {}
+static method f1({core::List<core::int> a = null}) → void {}
 static method f2(core::Iterable<core::int> a) → void {}
 static method f3(core::Iterable<core::Iterable<core::int>> a) → void {}
-static method f4({core::Iterable<core::Iterable<core::int>> a = #C1}) → void {}
+static method f4({core::Iterable<core::Iterable<core::int>> a = null}) → void {}
 static method test() → void {
   self::f0(<dynamic>[]);
   self::f0(<dynamic>[3]);
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart.legacy.transformed.expect
index e664781..c1a3c1f 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart.legacy.transformed.expect
@@ -3,10 +3,10 @@
 import "dart:core" as core;
 
 static method f0(core::List<core::int> a) → void {}
-static method f1({core::List<core::int> a = #C1}) → void {}
+static method f1({core::List<core::int> a = null}) → void {}
 static method f2(core::Iterable<core::int> a) → void {}
 static method f3(core::Iterable<core::Iterable<core::int>> a) → void {}
-static method f4({core::Iterable<core::Iterable<core::int>> a = #C1}) → void {}
+static method f4({core::Iterable<core::Iterable<core::int>> a = null}) → void {}
 static method test() → void {
   self::f0(<dynamic>[]);
   self::f0(<dynamic>[3]);
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart.strong.expect b/pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart.strong.expect
index c531339..00e805a 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart.strong.expect
@@ -56,10 +56,10 @@
 import "dart:core" as core;
 
 static method f0(core::List<core::int> a) → void {}
-static method f1({core::List<core::int> a = #C1}) → void {}
+static method f1({core::List<core::int> a = null}) → void {}
 static method f2(core::Iterable<core::int> a) → void {}
 static method f3(core::Iterable<core::Iterable<core::int>> a) → void {}
-static method f4({core::Iterable<core::Iterable<core::int>> a = #C1}) → void {}
+static method f4({core::Iterable<core::Iterable<core::int>> a = null}) → void {}
 static method test() → void {
   self::f0(<core::int>[]);
   self::f0(<core::int>[3]);
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart.strong.transformed.expect
index c531339..00e805a 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart.strong.transformed.expect
@@ -56,10 +56,10 @@
 import "dart:core" as core;
 
 static method f0(core::List<core::int> a) → void {}
-static method f1({core::List<core::int> a = #C1}) → void {}
+static method f1({core::List<core::int> a = null}) → void {}
 static method f2(core::Iterable<core::int> a) → void {}
 static method f3(core::Iterable<core::Iterable<core::int>> a) → void {}
-static method f4({core::Iterable<core::Iterable<core::int>> a = #C1}) → void {}
+static method f4({core::Iterable<core::Iterable<core::int>> a = null}) → void {}
 static method test() → void {
   self::f0(<core::int>[]);
   self::f0(<core::int>[3]);
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_empty_list.dart.legacy.expect b/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_empty_list.dart.legacy.expect
index 570920f..b53e773 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_empty_list.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_empty_list.dart.legacy.expect
@@ -7,7 +7,7 @@
     : super core::Object::•() {}
 }
 class F4<T extends core::Object = dynamic> extends core::Object {
-  constructor •({core::Iterable<core::Iterable<self::F4::T>> a = #C1}) → self::F4<self::F4::T>
+  constructor •({core::Iterable<core::Iterable<self::F4::T>> a = null}) → self::F4<self::F4::T>
     : super core::Object::•() {}
 }
 static method main() → void {
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_empty_list.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_empty_list.dart.legacy.transformed.expect
index 570920f..b53e773 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_empty_list.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_empty_list.dart.legacy.transformed.expect
@@ -7,7 +7,7 @@
     : super core::Object::•() {}
 }
 class F4<T extends core::Object = dynamic> extends core::Object {
-  constructor •({core::Iterable<core::Iterable<self::F4::T>> a = #C1}) → self::F4<self::F4::T>
+  constructor •({core::Iterable<core::Iterable<self::F4::T>> a = null}) → self::F4<self::F4::T>
     : super core::Object::•() {}
 }
 static method main() → void {
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_empty_list.dart.strong.expect b/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_empty_list.dart.strong.expect
index 00b0918..925d667 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_empty_list.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_empty_list.dart.strong.expect
@@ -7,7 +7,7 @@
     : super core::Object::•() {}
 }
 class F4<T extends core::Object = dynamic> extends core::Object {
-  constructor •({core::Iterable<core::Iterable<self::F4::T>> a = #C1}) → self::F4<self::F4::T>
+  constructor •({core::Iterable<core::Iterable<self::F4::T>> a = null}) → self::F4<self::F4::T>
     : super core::Object::•() {}
 }
 static method main() → void {
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_empty_list.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_empty_list.dart.strong.transformed.expect
index 00b0918..925d667 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_empty_list.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_empty_list.dart.strong.transformed.expect
@@ -7,7 +7,7 @@
     : super core::Object::•() {}
 }
 class F4<T extends core::Object = dynamic> extends core::Object {
-  constructor •({core::Iterable<core::Iterable<self::F4::T>> a = #C1}) → self::F4<self::F4::T>
+  constructor •({core::Iterable<core::Iterable<self::F4::T>> a = null}) → self::F4<self::F4::T>
     : super core::Object::•() {}
 }
 static method main() → void {
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart.legacy.expect b/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart.legacy.expect
index d1f1acb..9af9d65 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart.legacy.expect
@@ -7,7 +7,7 @@
     : super core::Object::•() {}
 }
 class F1<T extends core::Object = dynamic> extends core::Object {
-  constructor •({core::List<self::F1::T> a = #C1}) → self::F1<self::F1::T>
+  constructor •({core::List<self::F1::T> a = null}) → self::F1<self::F1::T>
     : super core::Object::•() {}
 }
 class F2<T extends core::Object = dynamic> extends core::Object {
@@ -19,7 +19,7 @@
     : super core::Object::•() {}
 }
 class F4<T extends core::Object = dynamic> extends core::Object {
-  constructor •({core::Iterable<core::Iterable<self::F4::T>> a = #C1}) → self::F4<self::F4::T>
+  constructor •({core::Iterable<core::Iterable<self::F4::T>> a = null}) → self::F4<self::F4::T>
     : super core::Object::•() {}
 }
 static method test() → void {
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart.legacy.transformed.expect
index d1f1acb..9af9d65 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart.legacy.transformed.expect
@@ -7,7 +7,7 @@
     : super core::Object::•() {}
 }
 class F1<T extends core::Object = dynamic> extends core::Object {
-  constructor •({core::List<self::F1::T> a = #C1}) → self::F1<self::F1::T>
+  constructor •({core::List<self::F1::T> a = null}) → self::F1<self::F1::T>
     : super core::Object::•() {}
 }
 class F2<T extends core::Object = dynamic> extends core::Object {
@@ -19,7 +19,7 @@
     : super core::Object::•() {}
 }
 class F4<T extends core::Object = dynamic> extends core::Object {
-  constructor •({core::Iterable<core::Iterable<self::F4::T>> a = #C1}) → self::F4<self::F4::T>
+  constructor •({core::Iterable<core::Iterable<self::F4::T>> a = null}) → self::F4<self::F4::T>
     : super core::Object::•() {}
 }
 static method test() → void {
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart.strong.expect b/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart.strong.expect
index 2b50b02..7a7d29f 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart.strong.expect
@@ -60,7 +60,7 @@
     : super core::Object::•() {}
 }
 class F1<T extends core::Object = dynamic> extends core::Object {
-  constructor •({core::List<self::F1::T> a = #C1}) → self::F1<self::F1::T>
+  constructor •({core::List<self::F1::T> a = null}) → self::F1<self::F1::T>
     : super core::Object::•() {}
 }
 class F2<T extends core::Object = dynamic> extends core::Object {
@@ -72,7 +72,7 @@
     : super core::Object::•() {}
 }
 class F4<T extends core::Object = dynamic> extends core::Object {
-  constructor •({core::Iterable<core::Iterable<self::F4::T>> a = #C1}) → self::F4<self::F4::T>
+  constructor •({core::Iterable<core::Iterable<self::F4::T>> a = null}) → self::F4<self::F4::T>
     : super core::Object::•() {}
 }
 static method test() → void {
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart.strong.transformed.expect
index 2b50b02..7a7d29f 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart.strong.transformed.expect
@@ -60,7 +60,7 @@
     : super core::Object::•() {}
 }
 class F1<T extends core::Object = dynamic> extends core::Object {
-  constructor •({core::List<self::F1::T> a = #C1}) → self::F1<self::F1::T>
+  constructor •({core::List<self::F1::T> a = null}) → self::F1<self::F1::T>
     : super core::Object::•() {}
 }
 class F2<T extends core::Object = dynamic> extends core::Object {
@@ -72,7 +72,7 @@
     : super core::Object::•() {}
 }
 class F4<T extends core::Object = dynamic> extends core::Object {
-  constructor •({core::Iterable<core::Iterable<self::F4::T>> a = #C1}) → self::F4<self::F4::T>
+  constructor •({core::Iterable<core::Iterable<self::F4::T>> a = null}) → self::F4<self::F4::T>
     : super core::Object::•() {}
 }
 static method test() → void {
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart.legacy.expect b/pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart.legacy.expect
index d7678fd..c641be2 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart.legacy.expect
@@ -42,10 +42,10 @@
     ;
 }
 class F<S extends core::Object = dynamic, T extends core::Object = dynamic> extends self::A<self::F::S, self::F::T> {
-  constructor •(self::F::S x, self::F::T y, {core::List<self::F::S> a = #C1, core::List<self::F::T> b = #C1}) → self::F<self::F::S, self::F::T>
+  constructor •(self::F::S x, self::F::T y, {core::List<self::F::S> a = null, core::List<self::F::T> b = null}) → self::F<self::F::S, self::F::T>
     : super self::A::•(x, y)
     ;
-  constructor named(self::F::S x, self::F::T y, [self::F::S a = #C1, self::F::T b = #C1]) → self::F<self::F::S, self::F::T>
+  constructor named(self::F::S x, self::F::T y, [self::F::S a = null, self::F::T b = null]) → self::F<self::F::S, self::F::T>
     : super self::A::•(a, b)
     ;
 }
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart.legacy.transformed.expect
index d7678fd..c641be2 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart.legacy.transformed.expect
@@ -42,10 +42,10 @@
     ;
 }
 class F<S extends core::Object = dynamic, T extends core::Object = dynamic> extends self::A<self::F::S, self::F::T> {
-  constructor •(self::F::S x, self::F::T y, {core::List<self::F::S> a = #C1, core::List<self::F::T> b = #C1}) → self::F<self::F::S, self::F::T>
+  constructor •(self::F::S x, self::F::T y, {core::List<self::F::S> a = null, core::List<self::F::T> b = null}) → self::F<self::F::S, self::F::T>
     : super self::A::•(x, y)
     ;
-  constructor named(self::F::S x, self::F::T y, [self::F::S a = #C1, self::F::T b = #C1]) → self::F<self::F::S, self::F::T>
+  constructor named(self::F::S x, self::F::T y, [self::F::S a = null, self::F::T b = null]) → self::F<self::F::S, self::F::T>
     : super self::A::•(a, b)
     ;
 }
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart.strong.expect b/pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart.strong.expect
index e728ca9..8ca9a95 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart.strong.expect
@@ -184,10 +184,10 @@
     ;
 }
 class F<S extends core::Object = dynamic, T extends core::Object = dynamic> extends self::A<self::F::S, self::F::T> {
-  constructor •(self::F::S x, self::F::T y, {core::List<self::F::S> a = #C1, core::List<self::F::T> b = #C1}) → self::F<self::F::S, self::F::T>
+  constructor •(self::F::S x, self::F::T y, {core::List<self::F::S> a = null, core::List<self::F::T> b = null}) → self::F<self::F::S, self::F::T>
     : super self::A::•(x, y)
     ;
-  constructor named(self::F::S x, self::F::T y, [self::F::S a = #C1, self::F::T b = #C1]) → self::F<self::F::S, self::F::T>
+  constructor named(self::F::S x, self::F::T y, [self::F::S a = null, self::F::T b = null]) → self::F<self::F::S, self::F::T>
     : super self::A::•(a, b)
     ;
 }
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart.strong.transformed.expect
index e728ca9..8ca9a95 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart.strong.transformed.expect
@@ -184,10 +184,10 @@
     ;
 }
 class F<S extends core::Object = dynamic, T extends core::Object = dynamic> extends self::A<self::F::S, self::F::T> {
-  constructor •(self::F::S x, self::F::T y, {core::List<self::F::S> a = #C1, core::List<self::F::T> b = #C1}) → self::F<self::F::S, self::F::T>
+  constructor •(self::F::S x, self::F::T y, {core::List<self::F::S> a = null, core::List<self::F::T> b = null}) → self::F<self::F::S, self::F::T>
     : super self::A::•(x, y)
     ;
-  constructor named(self::F::S x, self::F::T y, [self::F::S a = #C1, self::F::T b = #C1]) → self::F<self::F::S, self::F::T>
+  constructor named(self::F::S x, self::F::T y, [self::F::S a = null, self::F::T b = null]) → self::F<self::F::S, self::F::T>
     : super self::A::•(a, b)
     ;
 }
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart.legacy.expect b/pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart.legacy.expect
index 1ba3817..764ed07 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart.legacy.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-static method foo([core::List<core::String> list1 = #C1, core::List<core::String> list2 = #C3]) → void {}
+static method foo([core::List<core::String> list1 = const <dynamic>[], core::List<core::String> list2 = const <dynamic>[42]]) → void {}
 static method main() → void {
   {
     core::List<core::int> l0 = <dynamic>[];
@@ -28,5 +28,10 @@
     core::Iterable<core::int> i2 = <dynamic>["hello"];
     core::Iterable<core::int> i3 = <dynamic>["hello", 3];
   }
-  {}
+  {
+    const core::List<core::int> c0 = const <dynamic>[];
+    const core::List<core::int> c1 = const <dynamic>[3];
+    const core::List<core::int> c2 = const <dynamic>["hello"];
+    const core::List<core::int> c3 = const <dynamic>["hello", 3];
+  }
 }
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart.legacy.transformed.expect
index 1ba3817..764ed07 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart.legacy.transformed.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-static method foo([core::List<core::String> list1 = #C1, core::List<core::String> list2 = #C3]) → void {}
+static method foo([core::List<core::String> list1 = const <dynamic>[], core::List<core::String> list2 = const <dynamic>[42]]) → void {}
 static method main() → void {
   {
     core::List<core::int> l0 = <dynamic>[];
@@ -28,5 +28,10 @@
     core::Iterable<core::int> i2 = <dynamic>["hello"];
     core::Iterable<core::int> i3 = <dynamic>["hello", 3];
   }
-  {}
+  {
+    const core::List<core::int> c0 = const <dynamic>[];
+    const core::List<core::int> c1 = const <dynamic>[3];
+    const core::List<core::int> c2 = const <dynamic>["hello"];
+    const core::List<core::int> c3 = const <dynamic>["hello", 3];
+  }
 }
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart.strong.expect b/pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart.strong.expect
index 1c27831..c7a14c1 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart.strong.expect
@@ -74,19 +74,19 @@
 import self as self;
 import "dart:core" as core;
 
-static method foo([core::List<core::String> list1 = #C1, core::List<core::String> list2 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:11:89: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
+static method foo([core::List<core::String> list1 = const <core::String>[], core::List<core::String> list2 = const <core::String>[let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:11:89: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
 Try changing the type of the left hand side, or casting the right hand side to 'String'.
       /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE,error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ 42
-                                                                                        ^"]) → void {}
+                                                                                        ^" in 42 as{TypeError} core::String]]) → void {}
 static method main() → void {
   {
     core::List<core::int> l0 = <core::int>[];
     core::List<core::int> l1 = <core::int>[3];
-    core::List<core::int> l2 = <core::int>[let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:19:50: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+    core::List<core::int> l2 = <core::int>[let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:19:50: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
 Try changing the type of the left hand side, or casting the right hand side to 'int'.
       /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"
                                                  ^" in "hello" as{TypeError} core::int];
-    core::List<core::int> l3 = <core::int>[let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:22:50: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+    core::List<core::int> l3 = <core::int>[let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:22:50: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
 Try changing the type of the left hand side, or casting the right hand side to 'int'.
       /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\",
                                                  ^" in "hello" as{TypeError} core::int, 3];
@@ -98,29 +98,29 @@
     core::List<dynamic> l3 = <dynamic>["hello", 3];
   }
   {
-    core::List<core::int> l0 = let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:33:61: Error: The list literal type 'List<num>' isn't of expected type 'List<int>'.
+    core::List<core::int> l0 = let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:33:61: Error: The list literal type 'List<num>' isn't of expected type 'List<int>'.
  - 'List' is from 'dart:core'.
 Change the type of the list literal or the context in which it is used.
     List<int> l0 = /*error:INVALID_CAST_LITERAL_LIST*/ <num>[];
                                                             ^" in <core::num>[];
-    core::List<core::int> l1 = let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:34:61: Error: The list literal type 'List<num>' isn't of expected type 'List<int>'.
+    core::List<core::int> l1 = let final<BottomType> #t5 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:34:61: Error: The list literal type 'List<num>' isn't of expected type 'List<int>'.
  - 'List' is from 'dart:core'.
 Change the type of the list literal or the context in which it is used.
     List<int> l1 = /*error:INVALID_CAST_LITERAL_LIST*/ <num>[3];
                                                             ^" in <core::num>[3];
-    core::List<core::int> l2 = let final<BottomType> #t5 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:35:61: Error: The list literal type 'List<num>' isn't of expected type 'List<int>'.
+    core::List<core::int> l2 = let final<BottomType> #t6 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:35:61: Error: The list literal type 'List<num>' isn't of expected type 'List<int>'.
  - 'List' is from 'dart:core'.
 Change the type of the list literal or the context in which it is used.
     List<int> l2 = /*error:INVALID_CAST_LITERAL_LIST*/ <num>[
-                                                            ^" in <core::num>[let final<BottomType> #t6 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:36:50: Error: A value of type 'String' can't be assigned to a variable of type 'num'.
+                                                            ^" in <core::num>[let final<BottomType> #t7 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:36:50: Error: A value of type 'String' can't be assigned to a variable of type 'num'.
 Try changing the type of the left hand side, or casting the right hand side to 'num'.
       /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"
                                                  ^" in "hello" as{TypeError} core::num];
-    core::List<core::int> l3 = let final<BottomType> #t7 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:38:61: Error: The list literal type 'List<num>' isn't of expected type 'List<int>'.
+    core::List<core::int> l3 = let final<BottomType> #t8 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:38:61: Error: The list literal type 'List<num>' isn't of expected type 'List<int>'.
  - 'List' is from 'dart:core'.
 Change the type of the list literal or the context in which it is used.
     List<int> l3 = /*error:INVALID_CAST_LITERAL_LIST*/ <num>[
-                                                            ^" in <core::num>[let final<BottomType> #t8 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:39:50: Error: A value of type 'String' can't be assigned to a variable of type 'num'.
+                                                            ^" in <core::num>[let final<BottomType> #t9 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:39:50: Error: A value of type 'String' can't be assigned to a variable of type 'num'.
 Try changing the type of the left hand side, or casting the right hand side to 'num'.
       /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\",
                                                  ^" in "hello" as{TypeError} core::num, 3];
@@ -128,14 +128,25 @@
   {
     core::Iterable<core::int> i0 = <core::int>[];
     core::Iterable<core::int> i1 = <core::int>[3];
-    core::Iterable<core::int> i2 = <core::int>[let final<BottomType> #t9 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:47:50: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+    core::Iterable<core::int> i2 = <core::int>[let final<BottomType> #t10 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:47:50: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
 Try changing the type of the left hand side, or casting the right hand side to 'int'.
       /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"
                                                  ^" in "hello" as{TypeError} core::int];
-    core::Iterable<core::int> i3 = <core::int>[let final<BottomType> #t10 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:50:50: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+    core::Iterable<core::int> i3 = <core::int>[let final<BottomType> #t11 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:50:50: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
 Try changing the type of the left hand side, or casting the right hand side to 'int'.
       /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\",
                                                  ^" in "hello" as{TypeError} core::int, 3];
   }
-  {}
+  {
+    const core::List<core::int> c0 = const <core::int>[];
+    const core::List<core::int> c1 = const <core::int>[3];
+    const core::List<core::int> c2 = const <core::int>[let final<BottomType> #t12 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:58:89: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+Try changing the type of the left hand side, or casting the right hand side to 'int'.
+      /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE,error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"
+                                                                                        ^" in "hello" as{TypeError} core::int];
+    const core::List<core::int> c3 = const <core::int>[let final<BottomType> #t13 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:61:89: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+Try changing the type of the left hand side, or casting the right hand side to 'int'.
+      /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE,error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\",
+                                                                                        ^" in "hello" as{TypeError} core::int, 3];
+  }
 }
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart.strong.transformed.expect
index 1c27831..c7a14c1 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart.strong.transformed.expect
@@ -74,19 +74,19 @@
 import self as self;
 import "dart:core" as core;
 
-static method foo([core::List<core::String> list1 = #C1, core::List<core::String> list2 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:11:89: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
+static method foo([core::List<core::String> list1 = const <core::String>[], core::List<core::String> list2 = const <core::String>[let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:11:89: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
 Try changing the type of the left hand side, or casting the right hand side to 'String'.
       /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE,error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ 42
-                                                                                        ^"]) → void {}
+                                                                                        ^" in 42 as{TypeError} core::String]]) → void {}
 static method main() → void {
   {
     core::List<core::int> l0 = <core::int>[];
     core::List<core::int> l1 = <core::int>[3];
-    core::List<core::int> l2 = <core::int>[let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:19:50: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+    core::List<core::int> l2 = <core::int>[let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:19:50: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
 Try changing the type of the left hand side, or casting the right hand side to 'int'.
       /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"
                                                  ^" in "hello" as{TypeError} core::int];
-    core::List<core::int> l3 = <core::int>[let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:22:50: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+    core::List<core::int> l3 = <core::int>[let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:22:50: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
 Try changing the type of the left hand side, or casting the right hand side to 'int'.
       /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\",
                                                  ^" in "hello" as{TypeError} core::int, 3];
@@ -98,29 +98,29 @@
     core::List<dynamic> l3 = <dynamic>["hello", 3];
   }
   {
-    core::List<core::int> l0 = let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:33:61: Error: The list literal type 'List<num>' isn't of expected type 'List<int>'.
+    core::List<core::int> l0 = let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:33:61: Error: The list literal type 'List<num>' isn't of expected type 'List<int>'.
  - 'List' is from 'dart:core'.
 Change the type of the list literal or the context in which it is used.
     List<int> l0 = /*error:INVALID_CAST_LITERAL_LIST*/ <num>[];
                                                             ^" in <core::num>[];
-    core::List<core::int> l1 = let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:34:61: Error: The list literal type 'List<num>' isn't of expected type 'List<int>'.
+    core::List<core::int> l1 = let final<BottomType> #t5 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:34:61: Error: The list literal type 'List<num>' isn't of expected type 'List<int>'.
  - 'List' is from 'dart:core'.
 Change the type of the list literal or the context in which it is used.
     List<int> l1 = /*error:INVALID_CAST_LITERAL_LIST*/ <num>[3];
                                                             ^" in <core::num>[3];
-    core::List<core::int> l2 = let final<BottomType> #t5 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:35:61: Error: The list literal type 'List<num>' isn't of expected type 'List<int>'.
+    core::List<core::int> l2 = let final<BottomType> #t6 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:35:61: Error: The list literal type 'List<num>' isn't of expected type 'List<int>'.
  - 'List' is from 'dart:core'.
 Change the type of the list literal or the context in which it is used.
     List<int> l2 = /*error:INVALID_CAST_LITERAL_LIST*/ <num>[
-                                                            ^" in <core::num>[let final<BottomType> #t6 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:36:50: Error: A value of type 'String' can't be assigned to a variable of type 'num'.
+                                                            ^" in <core::num>[let final<BottomType> #t7 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:36:50: Error: A value of type 'String' can't be assigned to a variable of type 'num'.
 Try changing the type of the left hand side, or casting the right hand side to 'num'.
       /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"
                                                  ^" in "hello" as{TypeError} core::num];
-    core::List<core::int> l3 = let final<BottomType> #t7 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:38:61: Error: The list literal type 'List<num>' isn't of expected type 'List<int>'.
+    core::List<core::int> l3 = let final<BottomType> #t8 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:38:61: Error: The list literal type 'List<num>' isn't of expected type 'List<int>'.
  - 'List' is from 'dart:core'.
 Change the type of the list literal or the context in which it is used.
     List<int> l3 = /*error:INVALID_CAST_LITERAL_LIST*/ <num>[
-                                                            ^" in <core::num>[let final<BottomType> #t8 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:39:50: Error: A value of type 'String' can't be assigned to a variable of type 'num'.
+                                                            ^" in <core::num>[let final<BottomType> #t9 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:39:50: Error: A value of type 'String' can't be assigned to a variable of type 'num'.
 Try changing the type of the left hand side, or casting the right hand side to 'num'.
       /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\",
                                                  ^" in "hello" as{TypeError} core::num, 3];
@@ -128,14 +128,25 @@
   {
     core::Iterable<core::int> i0 = <core::int>[];
     core::Iterable<core::int> i1 = <core::int>[3];
-    core::Iterable<core::int> i2 = <core::int>[let final<BottomType> #t9 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:47:50: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+    core::Iterable<core::int> i2 = <core::int>[let final<BottomType> #t10 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:47:50: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
 Try changing the type of the left hand side, or casting the right hand side to 'int'.
       /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"
                                                  ^" in "hello" as{TypeError} core::int];
-    core::Iterable<core::int> i3 = <core::int>[let final<BottomType> #t10 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:50:50: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+    core::Iterable<core::int> i3 = <core::int>[let final<BottomType> #t11 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:50:50: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
 Try changing the type of the left hand side, or casting the right hand side to 'int'.
       /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\",
                                                  ^" in "hello" as{TypeError} core::int, 3];
   }
-  {}
+  {
+    const core::List<core::int> c0 = const <core::int>[];
+    const core::List<core::int> c1 = const <core::int>[3];
+    const core::List<core::int> c2 = const <core::int>[let final<BottomType> #t12 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:58:89: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+Try changing the type of the left hand side, or casting the right hand side to 'int'.
+      /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE,error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"
+                                                                                        ^" in "hello" as{TypeError} core::int];
+    const core::List<core::int> c3 = const <core::int>[let final<BottomType> #t13 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:61:89: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+Try changing the type of the left hand side, or casting the right hand side to 'int'.
+      /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE,error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\",
+                                                                                        ^" in "hello" as{TypeError} core::int, 3];
+  }
 }
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart.legacy.expect b/pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart.legacy.expect
index 44a5786..57c74f5 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart.legacy.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-static method foo([core::Map<core::int, core::String> m1 = #C4, core::Map<core::int, core::String> m2 = #C7]) → void {}
+static method foo([core::Map<core::int, core::String> m1 = const <dynamic, dynamic>{1: "hello"}, core::Map<core::int, core::String> m2 = const <dynamic, dynamic>{"hello": "world"}]) → void {}
 static method test() → void {
   {
     core::Map<core::int, core::String> l0 = <dynamic, dynamic>{};
@@ -37,6 +37,12 @@
     core::Map<core::int, core::String> l1 = <core::num, dynamic>{3: "hello"};
     core::Map<core::int, core::String> l3 = <core::num, dynamic>{3: 3};
   }
-  {}
+  {
+    const core::Map<core::int, core::String> l0 = const <dynamic, dynamic>{};
+    const core::Map<core::int, core::String> l1 = const <dynamic, dynamic>{3: "hello"};
+    const core::Map<core::int, core::String> l2 = const <dynamic, dynamic>{"hello": "hello"};
+    const core::Map<core::int, core::String> l3 = const <dynamic, dynamic>{3: 3};
+    const core::Map<core::int, core::String> l4 = const <dynamic, dynamic>{3: "hello", "hello": 3};
+  }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart.legacy.transformed.expect
index 44a5786..57c74f5 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart.legacy.transformed.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-static method foo([core::Map<core::int, core::String> m1 = #C4, core::Map<core::int, core::String> m2 = #C7]) → void {}
+static method foo([core::Map<core::int, core::String> m1 = const <dynamic, dynamic>{1: "hello"}, core::Map<core::int, core::String> m2 = const <dynamic, dynamic>{"hello": "world"}]) → void {}
 static method test() → void {
   {
     core::Map<core::int, core::String> l0 = <dynamic, dynamic>{};
@@ -37,6 +37,12 @@
     core::Map<core::int, core::String> l1 = <core::num, dynamic>{3: "hello"};
     core::Map<core::int, core::String> l3 = <core::num, dynamic>{3: 3};
   }
-  {}
+  {
+    const core::Map<core::int, core::String> l0 = const <dynamic, dynamic>{};
+    const core::Map<core::int, core::String> l1 = const <dynamic, dynamic>{3: "hello"};
+    const core::Map<core::int, core::String> l2 = const <dynamic, dynamic>{"hello": "hello"};
+    const core::Map<core::int, core::String> l3 = const <dynamic, dynamic>{3: 3};
+    const core::Map<core::int, core::String> l4 = const <dynamic, dynamic>{3: "hello", "hello": 3};
+  }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart.strong.expect b/pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart.strong.expect
index e6e54c7..de242ae 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart.strong.expect
@@ -88,26 +88,26 @@
 import self as self;
 import "dart:core" as core;
 
-static method foo([core::Map<core::int, core::String> m1 = #C4, core::Map<core::int, core::String> m2 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:12:79: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+static method foo([core::Map<core::int, core::String> m1 = const <core::int, core::String>{1: "hello"}, core::Map<core::int, core::String> m2 = const <core::int, core::String>{let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:12:79: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
 Try changing the type of the left hand side, or casting the right hand side to 'int'.
       /*error:MAP_KEY_TYPE_NOT_ASSIGNABLE,error:MAP_KEY_TYPE_NOT_ASSIGNABLE*/ \"hello\":
-                                                                              ^"]) → void {}
+                                                                              ^" in "hello" as{TypeError} core::int: "world"}]) → void {}
 static method test() → void {
   {
     core::Map<core::int, core::String> l0 = <core::int, core::String>{};
     core::Map<core::int, core::String> l1 = <core::int, core::String>{3: "hello"};
-    core::Map<core::int, core::String> l2 = <core::int, core::String>{let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:20:45: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+    core::Map<core::int, core::String> l2 = <core::int, core::String>{let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:20:45: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
 Try changing the type of the left hand side, or casting the right hand side to 'int'.
       /*error:MAP_KEY_TYPE_NOT_ASSIGNABLE*/ \"hello\": \"hello\"
                                             ^" in "hello" as{TypeError} core::int: "hello"};
-    core::Map<core::int, core::String> l3 = <core::int, core::String>{3: let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:23:50: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
+    core::Map<core::int, core::String> l3 = <core::int, core::String>{3: let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:23:50: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
 Try changing the type of the left hand side, or casting the right hand side to 'String'.
       3: /*error:MAP_VALUE_TYPE_NOT_ASSIGNABLE*/ 3
                                                  ^" in 3 as{TypeError} core::String};
-    core::Map<core::int, core::String> l4 = <core::int, core::String>{3: "hello", let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:27:45: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+    core::Map<core::int, core::String> l4 = <core::int, core::String>{3: "hello", let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:27:45: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
 Try changing the type of the left hand side, or casting the right hand side to 'int'.
       /*error:MAP_KEY_TYPE_NOT_ASSIGNABLE*/ \"hello\":
-                                            ^" in "hello" as{TypeError} core::int: let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:28:51: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
+                                            ^" in "hello" as{TypeError} core::int: let final<BottomType> #t5 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:28:51: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
 Try changing the type of the left hand side, or casting the right hand side to 'String'.
           /*error:MAP_VALUE_TYPE_NOT_ASSIGNABLE*/ 3
                                                   ^" in 3 as{TypeError} core::String};
@@ -123,11 +123,11 @@
     core::Map<dynamic, core::String> l0 = <dynamic, core::String>{};
     core::Map<dynamic, core::String> l1 = <dynamic, core::String>{3: "hello"};
     core::Map<dynamic, core::String> l2 = <dynamic, core::String>{"hello": "hello"};
-    core::Map<dynamic, core::String> l3 = <dynamic, core::String>{3: let final<BottomType> #t5 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:48:50: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
+    core::Map<dynamic, core::String> l3 = <dynamic, core::String>{3: let final<BottomType> #t6 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:48:50: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
 Try changing the type of the left hand side, or casting the right hand side to 'String'.
       3: /*error:MAP_VALUE_TYPE_NOT_ASSIGNABLE*/ 3
                                                  ^" in 3 as{TypeError} core::String};
-    core::Map<dynamic, core::String> l4 = <dynamic, core::String>{3: "hello", "hello": let final<BottomType> #t6 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:52:56: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
+    core::Map<dynamic, core::String> l4 = <dynamic, core::String>{3: "hello", "hello": let final<BottomType> #t7 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:52:56: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
 Try changing the type of the left hand side, or casting the right hand side to 'String'.
       \"hello\": /*error:MAP_VALUE_TYPE_NOT_ASSIGNABLE*/ 3
                                                        ^" in 3 as{TypeError} core::String};
@@ -135,33 +135,51 @@
   {
     core::Map<core::int, dynamic> l0 = <core::int, dynamic>{};
     core::Map<core::int, dynamic> l1 = <core::int, dynamic>{3: "hello"};
-    core::Map<core::int, dynamic> l2 = <core::int, dynamic>{let final<BottomType> #t7 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:59:45: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+    core::Map<core::int, dynamic> l2 = <core::int, dynamic>{let final<BottomType> #t8 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:59:45: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
 Try changing the type of the left hand side, or casting the right hand side to 'int'.
       /*error:MAP_KEY_TYPE_NOT_ASSIGNABLE*/ \"hello\": \"hello\"
                                             ^" in "hello" as{TypeError} core::int: "hello"};
     core::Map<core::int, dynamic> l3 = <core::int, dynamic>{3: 3};
-    core::Map<core::int, dynamic> l4 = <core::int, dynamic>{3: "hello", let final<BottomType> #t8 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:64:45: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+    core::Map<core::int, dynamic> l4 = <core::int, dynamic>{3: "hello", let final<BottomType> #t9 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:64:45: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
 Try changing the type of the left hand side, or casting the right hand side to 'int'.
       /*error:MAP_KEY_TYPE_NOT_ASSIGNABLE*/ \"hello\": 3
                                             ^" in "hello" as{TypeError} core::int: 3};
   }
   {
-    core::Map<core::int, core::String> l0 = let final<BottomType> #t9 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:68:76: Error: The map literal type 'Map<num, dynamic>' isn't of expected type 'Map<int, String>'.
+    core::Map<core::int, core::String> l0 = let final<BottomType> #t10 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:68:76: Error: The map literal type 'Map<num, dynamic>' isn't of expected type 'Map<int, String>'.
  - 'Map' is from 'dart:core'.
 Change the type of the map literal or the context in which it is used.
     Map<int, String> l0 = /*error:INVALID_CAST_LITERAL_MAP*/ <num, dynamic>{};
                                                                            ^" in <core::num, dynamic>{};
-    core::Map<core::int, core::String> l1 = let final<BottomType> #t10 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:69:76: Error: The map literal type 'Map<num, dynamic>' isn't of expected type 'Map<int, String>'.
+    core::Map<core::int, core::String> l1 = let final<BottomType> #t11 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:69:76: Error: The map literal type 'Map<num, dynamic>' isn't of expected type 'Map<int, String>'.
  - 'Map' is from 'dart:core'.
 Change the type of the map literal or the context in which it is used.
     Map<int, String> l1 = /*error:INVALID_CAST_LITERAL_MAP*/ <num, dynamic>{
                                                                            ^" in <core::num, dynamic>{3: "hello"};
-    core::Map<core::int, core::String> l3 = let final<BottomType> #t11 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:72:76: Error: The map literal type 'Map<num, dynamic>' isn't of expected type 'Map<int, String>'.
+    core::Map<core::int, core::String> l3 = let final<BottomType> #t12 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:72:76: Error: The map literal type 'Map<num, dynamic>' isn't of expected type 'Map<int, String>'.
  - 'Map' is from 'dart:core'.
 Change the type of the map literal or the context in which it is used.
     Map<int, String> l3 = /*error:INVALID_CAST_LITERAL_MAP*/ <num, dynamic>{
                                                                            ^" in <core::num, dynamic>{3: 3};
   }
-  {}
+  {
+    const core::Map<core::int, core::String> l0 = const <core::int, core::String>{};
+    const core::Map<core::int, core::String> l1 = const <core::int, core::String>{3: "hello"};
+    const core::Map<core::int, core::String> l2 = const <core::int, core::String>{let final<BottomType> #t13 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:80:79: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+Try changing the type of the left hand side, or casting the right hand side to 'int'.
+      /*error:MAP_KEY_TYPE_NOT_ASSIGNABLE,error:MAP_KEY_TYPE_NOT_ASSIGNABLE*/ \"hello\":
+                                                                              ^" in "hello" as{TypeError} core::int: "hello"};
+    const core::Map<core::int, core::String> l3 = const <core::int, core::String>{3: let final<BottomType> #t14 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:84:86: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
+Try changing the type of the left hand side, or casting the right hand side to 'String'.
+      3: /*error:MAP_VALUE_TYPE_NOT_ASSIGNABLE,error:MAP_VALUE_TYPE_NOT_ASSIGNABLE*/ 3
+                                                                                     ^" in 3 as{TypeError} core::String};
+    const core::Map<core::int, core::String> l4 = const <core::int, core::String>{3: "hello", let final<BottomType> #t15 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:88:79: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+Try changing the type of the left hand side, or casting the right hand side to 'int'.
+      /*error:MAP_KEY_TYPE_NOT_ASSIGNABLE,error:MAP_KEY_TYPE_NOT_ASSIGNABLE*/ \"hello\":
+                                                                              ^" in "hello" as{TypeError} core::int: let final<BottomType> #t16 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:89:87: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
+Try changing the type of the left hand side, or casting the right hand side to 'String'.
+          /*error:MAP_VALUE_TYPE_NOT_ASSIGNABLE,error:MAP_VALUE_TYPE_NOT_ASSIGNABLE*/ 3
+                                                                                      ^" in 3 as{TypeError} core::String};
+  }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart.strong.transformed.expect
index e6e54c7..de242ae 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart.strong.transformed.expect
@@ -88,26 +88,26 @@
 import self as self;
 import "dart:core" as core;
 
-static method foo([core::Map<core::int, core::String> m1 = #C4, core::Map<core::int, core::String> m2 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:12:79: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+static method foo([core::Map<core::int, core::String> m1 = const <core::int, core::String>{1: "hello"}, core::Map<core::int, core::String> m2 = const <core::int, core::String>{let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:12:79: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
 Try changing the type of the left hand side, or casting the right hand side to 'int'.
       /*error:MAP_KEY_TYPE_NOT_ASSIGNABLE,error:MAP_KEY_TYPE_NOT_ASSIGNABLE*/ \"hello\":
-                                                                              ^"]) → void {}
+                                                                              ^" in "hello" as{TypeError} core::int: "world"}]) → void {}
 static method test() → void {
   {
     core::Map<core::int, core::String> l0 = <core::int, core::String>{};
     core::Map<core::int, core::String> l1 = <core::int, core::String>{3: "hello"};
-    core::Map<core::int, core::String> l2 = <core::int, core::String>{let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:20:45: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+    core::Map<core::int, core::String> l2 = <core::int, core::String>{let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:20:45: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
 Try changing the type of the left hand side, or casting the right hand side to 'int'.
       /*error:MAP_KEY_TYPE_NOT_ASSIGNABLE*/ \"hello\": \"hello\"
                                             ^" in "hello" as{TypeError} core::int: "hello"};
-    core::Map<core::int, core::String> l3 = <core::int, core::String>{3: let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:23:50: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
+    core::Map<core::int, core::String> l3 = <core::int, core::String>{3: let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:23:50: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
 Try changing the type of the left hand side, or casting the right hand side to 'String'.
       3: /*error:MAP_VALUE_TYPE_NOT_ASSIGNABLE*/ 3
                                                  ^" in 3 as{TypeError} core::String};
-    core::Map<core::int, core::String> l4 = <core::int, core::String>{3: "hello", let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:27:45: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+    core::Map<core::int, core::String> l4 = <core::int, core::String>{3: "hello", let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:27:45: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
 Try changing the type of the left hand side, or casting the right hand side to 'int'.
       /*error:MAP_KEY_TYPE_NOT_ASSIGNABLE*/ \"hello\":
-                                            ^" in "hello" as{TypeError} core::int: let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:28:51: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
+                                            ^" in "hello" as{TypeError} core::int: let final<BottomType> #t5 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:28:51: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
 Try changing the type of the left hand side, or casting the right hand side to 'String'.
           /*error:MAP_VALUE_TYPE_NOT_ASSIGNABLE*/ 3
                                                   ^" in 3 as{TypeError} core::String};
@@ -123,11 +123,11 @@
     core::Map<dynamic, core::String> l0 = <dynamic, core::String>{};
     core::Map<dynamic, core::String> l1 = <dynamic, core::String>{3: "hello"};
     core::Map<dynamic, core::String> l2 = <dynamic, core::String>{"hello": "hello"};
-    core::Map<dynamic, core::String> l3 = <dynamic, core::String>{3: let final<BottomType> #t5 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:48:50: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
+    core::Map<dynamic, core::String> l3 = <dynamic, core::String>{3: let final<BottomType> #t6 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:48:50: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
 Try changing the type of the left hand side, or casting the right hand side to 'String'.
       3: /*error:MAP_VALUE_TYPE_NOT_ASSIGNABLE*/ 3
                                                  ^" in 3 as{TypeError} core::String};
-    core::Map<dynamic, core::String> l4 = <dynamic, core::String>{3: "hello", "hello": let final<BottomType> #t6 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:52:56: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
+    core::Map<dynamic, core::String> l4 = <dynamic, core::String>{3: "hello", "hello": let final<BottomType> #t7 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:52:56: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
 Try changing the type of the left hand side, or casting the right hand side to 'String'.
       \"hello\": /*error:MAP_VALUE_TYPE_NOT_ASSIGNABLE*/ 3
                                                        ^" in 3 as{TypeError} core::String};
@@ -135,33 +135,51 @@
   {
     core::Map<core::int, dynamic> l0 = <core::int, dynamic>{};
     core::Map<core::int, dynamic> l1 = <core::int, dynamic>{3: "hello"};
-    core::Map<core::int, dynamic> l2 = <core::int, dynamic>{let final<BottomType> #t7 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:59:45: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+    core::Map<core::int, dynamic> l2 = <core::int, dynamic>{let final<BottomType> #t8 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:59:45: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
 Try changing the type of the left hand side, or casting the right hand side to 'int'.
       /*error:MAP_KEY_TYPE_NOT_ASSIGNABLE*/ \"hello\": \"hello\"
                                             ^" in "hello" as{TypeError} core::int: "hello"};
     core::Map<core::int, dynamic> l3 = <core::int, dynamic>{3: 3};
-    core::Map<core::int, dynamic> l4 = <core::int, dynamic>{3: "hello", let final<BottomType> #t8 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:64:45: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+    core::Map<core::int, dynamic> l4 = <core::int, dynamic>{3: "hello", let final<BottomType> #t9 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:64:45: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
 Try changing the type of the left hand side, or casting the right hand side to 'int'.
       /*error:MAP_KEY_TYPE_NOT_ASSIGNABLE*/ \"hello\": 3
                                             ^" in "hello" as{TypeError} core::int: 3};
   }
   {
-    core::Map<core::int, core::String> l0 = let final<BottomType> #t9 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:68:76: Error: The map literal type 'Map<num, dynamic>' isn't of expected type 'Map<int, String>'.
+    core::Map<core::int, core::String> l0 = let final<BottomType> #t10 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:68:76: Error: The map literal type 'Map<num, dynamic>' isn't of expected type 'Map<int, String>'.
  - 'Map' is from 'dart:core'.
 Change the type of the map literal or the context in which it is used.
     Map<int, String> l0 = /*error:INVALID_CAST_LITERAL_MAP*/ <num, dynamic>{};
                                                                            ^" in <core::num, dynamic>{};
-    core::Map<core::int, core::String> l1 = let final<BottomType> #t10 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:69:76: Error: The map literal type 'Map<num, dynamic>' isn't of expected type 'Map<int, String>'.
+    core::Map<core::int, core::String> l1 = let final<BottomType> #t11 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:69:76: Error: The map literal type 'Map<num, dynamic>' isn't of expected type 'Map<int, String>'.
  - 'Map' is from 'dart:core'.
 Change the type of the map literal or the context in which it is used.
     Map<int, String> l1 = /*error:INVALID_CAST_LITERAL_MAP*/ <num, dynamic>{
                                                                            ^" in <core::num, dynamic>{3: "hello"};
-    core::Map<core::int, core::String> l3 = let final<BottomType> #t11 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:72:76: Error: The map literal type 'Map<num, dynamic>' isn't of expected type 'Map<int, String>'.
+    core::Map<core::int, core::String> l3 = let final<BottomType> #t12 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:72:76: Error: The map literal type 'Map<num, dynamic>' isn't of expected type 'Map<int, String>'.
  - 'Map' is from 'dart:core'.
 Change the type of the map literal or the context in which it is used.
     Map<int, String> l3 = /*error:INVALID_CAST_LITERAL_MAP*/ <num, dynamic>{
                                                                            ^" in <core::num, dynamic>{3: 3};
   }
-  {}
+  {
+    const core::Map<core::int, core::String> l0 = const <core::int, core::String>{};
+    const core::Map<core::int, core::String> l1 = const <core::int, core::String>{3: "hello"};
+    const core::Map<core::int, core::String> l2 = const <core::int, core::String>{let final<BottomType> #t13 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:80:79: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+Try changing the type of the left hand side, or casting the right hand side to 'int'.
+      /*error:MAP_KEY_TYPE_NOT_ASSIGNABLE,error:MAP_KEY_TYPE_NOT_ASSIGNABLE*/ \"hello\":
+                                                                              ^" in "hello" as{TypeError} core::int: "hello"};
+    const core::Map<core::int, core::String> l3 = const <core::int, core::String>{3: let final<BottomType> #t14 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:84:86: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
+Try changing the type of the left hand side, or casting the right hand side to 'String'.
+      3: /*error:MAP_VALUE_TYPE_NOT_ASSIGNABLE,error:MAP_VALUE_TYPE_NOT_ASSIGNABLE*/ 3
+                                                                                     ^" in 3 as{TypeError} core::String};
+    const core::Map<core::int, core::String> l4 = const <core::int, core::String>{3: "hello", let final<BottomType> #t15 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:88:79: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+Try changing the type of the left hand side, or casting the right hand side to 'int'.
+      /*error:MAP_KEY_TYPE_NOT_ASSIGNABLE,error:MAP_KEY_TYPE_NOT_ASSIGNABLE*/ \"hello\":
+                                                                              ^" in "hello" as{TypeError} core::int: let final<BottomType> #t16 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:89:87: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
+Try changing the type of the left hand side, or casting the right hand side to 'String'.
+          /*error:MAP_VALUE_TYPE_NOT_ASSIGNABLE,error:MAP_VALUE_TYPE_NOT_ASSIGNABLE*/ 3
+                                                                                      ^" in 3 as{TypeError} core::String};
+  }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/future_or_subtyping.dart.legacy.expect b/pkg/front_end/testcases/inference/future_or_subtyping.dart.legacy.expect
index 361c8c6..6af7018 100644
--- a/pkg/front_end/testcases/inference/future_or_subtyping.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/future_or_subtyping.dart.legacy.expect
@@ -9,7 +9,7 @@
 static method add2(core::int y) → dynamic {}
 static method test() → dynamic {
   asy::Future<core::int> f;
-  dynamic a = f.then(#C1);
-  dynamic b = f.then(#C2);
+  dynamic a = f.then(self::add);
+  dynamic b = f.then(self::add2);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/future_or_subtyping.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/future_or_subtyping.dart.legacy.transformed.expect
index 361c8c6..6af7018 100644
--- a/pkg/front_end/testcases/inference/future_or_subtyping.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_or_subtyping.dart.legacy.transformed.expect
@@ -9,7 +9,7 @@
 static method add2(core::int y) → dynamic {}
 static method test() → dynamic {
   asy::Future<core::int> f;
-  dynamic a = f.then(#C1);
-  dynamic b = f.then(#C2);
+  dynamic a = f.then(self::add);
+  dynamic b = f.then(self::add2);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/future_or_subtyping.dart.strong.expect b/pkg/front_end/testcases/inference/future_or_subtyping.dart.strong.expect
index 1a7662b..0f5a59a 100644
--- a/pkg/front_end/testcases/inference/future_or_subtyping.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_or_subtyping.dart.strong.expect
@@ -9,7 +9,7 @@
 static method add2(core::int y) → dynamic {}
 static method test() → dynamic {
   asy::Future<core::int> f;
-  asy::Future<void> a = f.{asy::Future::then}<void>(#C1);
-  asy::Future<dynamic> b = f.{asy::Future::then}<dynamic>(#C2);
+  asy::Future<void> a = f.{asy::Future::then}<void>(self::add);
+  asy::Future<dynamic> b = f.{asy::Future::then}<dynamic>(self::add2);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/future_or_subtyping.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_or_subtyping.dart.strong.transformed.expect
index 1a7662b..0f5a59a 100644
--- a/pkg/front_end/testcases/inference/future_or_subtyping.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_or_subtyping.dart.strong.transformed.expect
@@ -9,7 +9,7 @@
 static method add2(core::int y) → dynamic {}
 static method test() → dynamic {
   asy::Future<core::int> f;
-  asy::Future<void> a = f.{asy::Future::then}<void>(#C1);
-  asy::Future<dynamic> b = f.{asy::Future::then}<dynamic>(#C2);
+  asy::Future<void> a = f.{asy::Future::then}<void>(self::add);
+  asy::Future<dynamic> b = f.{asy::Future::then}<dynamic>(self::add2);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/future_then.dart.legacy.expect b/pkg/front_end/testcases/inference/future_then.dart.legacy.expect
index b55e7b0..88b6639 100644
--- a/pkg/front_end/testcases/inference/future_then.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/future_then.dart.legacy.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(dynamic invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   self::MyFuture<dynamic> f;
diff --git a/pkg/front_end/testcases/inference/future_then.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/future_then.dart.legacy.transformed.expect
index 4b161b6..4f440e2 100644
--- a/pkg/front_end/testcases/inference/future_then.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then.dart.legacy.transformed.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(dynamic invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   self::MyFuture<dynamic> f;
diff --git a/pkg/front_end/testcases/inference/future_then.dart.outline.expect b/pkg/front_end/testcases/inference/future_then.dart.outline.expect
index 9de8740..18f6651 100644
--- a/pkg/front_end/testcases/inference/future_then.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then.dart.outline.expect
@@ -14,11 +14,11 @@
     ;
   method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError}) → self::MyFuture<self::MyFuture::then::S>
     ;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
diff --git a/pkg/front_end/testcases/inference/future_then.dart.strong.expect b/pkg/front_end/testcases/inference/future_then.dart.strong.expect
index b53becf..96beacd 100644
--- a/pkg/front_end/testcases/inference/future_then.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then.dart.strong.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   self::MyFuture<dynamic> f;
diff --git a/pkg/front_end/testcases/inference/future_then.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then.dart.strong.transformed.expect
index 4edec15..3fb8754 100644
--- a/pkg/front_end/testcases/inference/future_then.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then.dart.strong.transformed.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   self::MyFuture<dynamic> f;
diff --git a/pkg/front_end/testcases/inference/future_then_2.dart.legacy.expect b/pkg/front_end/testcases/inference/future_then_2.dart.legacy.expect
index 3d52a22..a91d75e 100644
--- a/pkg/front_end/testcases/inference/future_then_2.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/future_then_2.dart.legacy.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(dynamic invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   self::MyFuture<dynamic> f;
diff --git a/pkg/front_end/testcases/inference/future_then_2.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/future_then_2.dart.legacy.transformed.expect
index d2257aa..6538f9e 100644
--- a/pkg/front_end/testcases/inference/future_then_2.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_2.dart.legacy.transformed.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(dynamic invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   self::MyFuture<dynamic> f;
diff --git a/pkg/front_end/testcases/inference/future_then_2.dart.outline.expect b/pkg/front_end/testcases/inference/future_then_2.dart.outline.expect
index 9de8740..18f6651 100644
--- a/pkg/front_end/testcases/inference/future_then_2.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_2.dart.outline.expect
@@ -14,11 +14,11 @@
     ;
   method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError}) → self::MyFuture<self::MyFuture::then::S>
     ;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
diff --git a/pkg/front_end/testcases/inference/future_then_2.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_2.dart.strong.expect
index 88436f1..15aa74b 100644
--- a/pkg/front_end/testcases/inference/future_then_2.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_2.dart.strong.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   self::MyFuture<dynamic> f;
diff --git a/pkg/front_end/testcases/inference/future_then_2.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_2.dart.strong.transformed.expect
index b9ddc4c..091e194 100644
--- a/pkg/front_end/testcases/inference/future_then_2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_2.dart.strong.transformed.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   self::MyFuture<dynamic> f;
diff --git a/pkg/front_end/testcases/inference/future_then_3.dart.legacy.expect b/pkg/front_end/testcases/inference/future_then_3.dart.legacy.expect
index e5f8802..2a3484c 100644
--- a/pkg/front_end/testcases/inference/future_then_3.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/future_then_3.dart.legacy.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(dynamic invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   self::MyFuture<dynamic> f;
diff --git a/pkg/front_end/testcases/inference/future_then_3.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/future_then_3.dart.legacy.transformed.expect
index a0efcbb..346e77b8 100644
--- a/pkg/front_end/testcases/inference/future_then_3.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_3.dart.legacy.transformed.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(dynamic invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   self::MyFuture<dynamic> f;
diff --git a/pkg/front_end/testcases/inference/future_then_3.dart.outline.expect b/pkg/front_end/testcases/inference/future_then_3.dart.outline.expect
index 9de8740..18f6651 100644
--- a/pkg/front_end/testcases/inference/future_then_3.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_3.dart.outline.expect
@@ -14,11 +14,11 @@
     ;
   method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError}) → self::MyFuture<self::MyFuture::then::S>
     ;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
diff --git a/pkg/front_end/testcases/inference/future_then_3.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_3.dart.strong.expect
index 4c50562..5895ddd 100644
--- a/pkg/front_end/testcases/inference/future_then_3.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_3.dart.strong.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   self::MyFuture<dynamic> f;
diff --git a/pkg/front_end/testcases/inference/future_then_3.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_3.dart.strong.transformed.expect
index 134e6da..5fcbec7 100644
--- a/pkg/front_end/testcases/inference/future_then_3.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_3.dart.strong.transformed.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   self::MyFuture<dynamic> f;
diff --git a/pkg/front_end/testcases/inference/future_then_4.dart.legacy.expect b/pkg/front_end/testcases/inference/future_then_4.dart.legacy.expect
index 4f92625..c7d577e 100644
--- a/pkg/front_end/testcases/inference/future_then_4.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/future_then_4.dart.legacy.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(dynamic invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   self::MyFuture<dynamic> f;
diff --git a/pkg/front_end/testcases/inference/future_then_4.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/future_then_4.dart.legacy.transformed.expect
index 8fca67a..c90b143 100644
--- a/pkg/front_end/testcases/inference/future_then_4.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_4.dart.legacy.transformed.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(dynamic invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   self::MyFuture<dynamic> f;
diff --git a/pkg/front_end/testcases/inference/future_then_4.dart.outline.expect b/pkg/front_end/testcases/inference/future_then_4.dart.outline.expect
index 9de8740..18f6651 100644
--- a/pkg/front_end/testcases/inference/future_then_4.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_4.dart.outline.expect
@@ -14,11 +14,11 @@
     ;
   method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError}) → self::MyFuture<self::MyFuture::then::S>
     ;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
diff --git a/pkg/front_end/testcases/inference/future_then_4.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_4.dart.strong.expect
index 271cfd6..0f07ba1 100644
--- a/pkg/front_end/testcases/inference/future_then_4.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_4.dart.strong.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   self::MyFuture<dynamic> f;
diff --git a/pkg/front_end/testcases/inference/future_then_4.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_4.dart.strong.transformed.expect
index b151541..caa8542 100644
--- a/pkg/front_end/testcases/inference/future_then_4.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_4.dart.strong.transformed.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   self::MyFuture<dynamic> f;
diff --git a/pkg/front_end/testcases/inference/future_then_5.dart.legacy.expect b/pkg/front_end/testcases/inference/future_then_5.dart.legacy.expect
index c5a9803..141e3e7 100644
--- a/pkg/front_end/testcases/inference/future_then_5.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/future_then_5.dart.legacy.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(dynamic invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   asy::Future<dynamic> f;
diff --git a/pkg/front_end/testcases/inference/future_then_5.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/future_then_5.dart.legacy.transformed.expect
index 6903fb6..33b2911 100644
--- a/pkg/front_end/testcases/inference/future_then_5.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_5.dart.legacy.transformed.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(dynamic invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   asy::Future<dynamic> f;
diff --git a/pkg/front_end/testcases/inference/future_then_5.dart.outline.expect b/pkg/front_end/testcases/inference/future_then_5.dart.outline.expect
index 9de8740..18f6651 100644
--- a/pkg/front_end/testcases/inference/future_then_5.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_5.dart.outline.expect
@@ -14,11 +14,11 @@
     ;
   method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError}) → self::MyFuture<self::MyFuture::then::S>
     ;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
diff --git a/pkg/front_end/testcases/inference/future_then_5.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_5.dart.strong.expect
index bf680d1..a09ade0 100644
--- a/pkg/front_end/testcases/inference/future_then_5.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_5.dart.strong.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   asy::Future<dynamic> f;
diff --git a/pkg/front_end/testcases/inference/future_then_5.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_5.dart.strong.transformed.expect
index b357e2c..5c16f21 100644
--- a/pkg/front_end/testcases/inference/future_then_5.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_5.dart.strong.transformed.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   asy::Future<dynamic> f;
diff --git a/pkg/front_end/testcases/inference/future_then_6.dart.legacy.expect b/pkg/front_end/testcases/inference/future_then_6.dart.legacy.expect
index c0316a3..cc6a439 100644
--- a/pkg/front_end/testcases/inference/future_then_6.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/future_then_6.dart.legacy.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(dynamic invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   asy::Future<dynamic> f;
diff --git a/pkg/front_end/testcases/inference/future_then_6.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/future_then_6.dart.legacy.transformed.expect
index fa722a5..9ad93e8 100644
--- a/pkg/front_end/testcases/inference/future_then_6.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_6.dart.legacy.transformed.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(dynamic invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   asy::Future<dynamic> f;
diff --git a/pkg/front_end/testcases/inference/future_then_6.dart.outline.expect b/pkg/front_end/testcases/inference/future_then_6.dart.outline.expect
index 9de8740..18f6651 100644
--- a/pkg/front_end/testcases/inference/future_then_6.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_6.dart.outline.expect
@@ -14,11 +14,11 @@
     ;
   method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError}) → self::MyFuture<self::MyFuture::then::S>
     ;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
diff --git a/pkg/front_end/testcases/inference/future_then_6.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_6.dart.strong.expect
index c97bd51..fc6869c 100644
--- a/pkg/front_end/testcases/inference/future_then_6.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_6.dart.strong.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   asy::Future<dynamic> f;
diff --git a/pkg/front_end/testcases/inference/future_then_6.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_6.dart.strong.transformed.expect
index 9959ff5..5025976 100644
--- a/pkg/front_end/testcases/inference/future_then_6.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_6.dart.strong.transformed.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   asy::Future<dynamic> f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional.dart.legacy.expect b/pkg/front_end/testcases/inference/future_then_conditional.dart.legacy.expect
index 695c58b..579d81d 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional.dart.legacy.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(dynamic invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   self::MyFuture<core::bool> f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional.dart.legacy.transformed.expect
index 5a9c25f..1ae82f7 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional.dart.legacy.transformed.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(dynamic invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   self::MyFuture<core::bool> f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional.dart.outline.expect b/pkg/front_end/testcases/inference/future_then_conditional.dart.outline.expect
index 9de8740..18f6651 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional.dart.outline.expect
@@ -14,11 +14,11 @@
     ;
   method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError}) → self::MyFuture<self::MyFuture::then::S>
     ;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_conditional.dart.strong.expect
index 988e124..149f271 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional.dart.strong.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   self::MyFuture<core::bool> f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional.dart.strong.transformed.expect
index b1b67d2..aafd0f203 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional.dart.strong.transformed.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   self::MyFuture<core::bool> f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.legacy.expect b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.legacy.expect
index 11dd00e..3fbb4f7 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.legacy.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(dynamic invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   self::MyFuture<core::bool> f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.legacy.transformed.expect
index 80198ea..9b1db02 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.legacy.transformed.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(dynamic invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   self::MyFuture<core::bool> f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.outline.expect b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.outline.expect
index 9de8740..18f6651 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.outline.expect
@@ -14,11 +14,11 @@
     ;
   method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError}) → self::MyFuture<self::MyFuture::then::S>
     ;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.strong.expect
index bdd4304..7c89757 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.strong.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   self::MyFuture<core::bool> f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.strong.transformed.expect
index 39be2e1..fb7974e 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.strong.transformed.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   self::MyFuture<core::bool> f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.legacy.expect b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.legacy.expect
index b07c74d..a38c5ae 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.legacy.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(dynamic invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   self::MyFuture<core::bool> f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.legacy.transformed.expect
index a8de2c5..364a78a 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.legacy.transformed.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(dynamic invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   self::MyFuture<core::bool> f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.outline.expect b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.outline.expect
index 9de8740..18f6651 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.outline.expect
@@ -14,11 +14,11 @@
     ;
   method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError}) → self::MyFuture<self::MyFuture::then::S>
     ;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.strong.expect
index e976579..fd97d69 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.strong.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   self::MyFuture<core::bool> f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.strong.transformed.expect
index b5181d4..3a4604a 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.strong.transformed.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   self::MyFuture<core::bool> f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.legacy.expect b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.legacy.expect
index c1fd07a..189b93e 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.legacy.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(dynamic invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   self::MyFuture<core::bool> f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.legacy.transformed.expect
index 0c898ad..4a5e294 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.legacy.transformed.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(dynamic invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   self::MyFuture<core::bool> f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.outline.expect b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.outline.expect
index 9de8740..18f6651 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.outline.expect
@@ -14,11 +14,11 @@
     ;
   method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError}) → self::MyFuture<self::MyFuture::then::S>
     ;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.strong.expect
index 5d36888..3d33f4a 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.strong.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   self::MyFuture<core::bool> f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.strong.transformed.expect
index 9eac461..ed935aa 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.strong.transformed.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   self::MyFuture<core::bool> f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.legacy.expect b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.legacy.expect
index 3250477..8b21e2e 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.legacy.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(dynamic invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   asy::Future<core::bool> f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.legacy.transformed.expect
index f0cff6f..e5e7c73 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.legacy.transformed.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(dynamic invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   asy::Future<core::bool> f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.outline.expect b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.outline.expect
index 9de8740..18f6651 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.outline.expect
@@ -14,11 +14,11 @@
     ;
   method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError}) → self::MyFuture<self::MyFuture::then::S>
     ;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.strong.expect
index d3d6325..b29bf54 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.strong.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   asy::Future<core::bool> f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.strong.transformed.expect
index 011d8d4..396dabd 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.strong.transformed.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   asy::Future<core::bool> f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.legacy.expect b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.legacy.expect
index ea6e7f6..d4392fe 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.legacy.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(dynamic invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   asy::Future<core::bool> f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.legacy.transformed.expect
index bee3906..fecb72e 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.legacy.transformed.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(dynamic invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   asy::Future<core::bool> f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.outline.expect b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.outline.expect
index 9de8740..18f6651 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.outline.expect
@@ -14,11 +14,11 @@
     ;
   method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError}) → self::MyFuture<self::MyFuture::then::S>
     ;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.strong.expect
index 47e0cc2..2a444d6 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.strong.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   asy::Future<core::bool> f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.strong.transformed.expect
index 1de953b..cf2964e 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.strong.transformed.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   asy::Future<core::bool> f;
diff --git a/pkg/front_end/testcases/inference/future_then_ifNull.dart.legacy.expect b/pkg/front_end/testcases/inference/future_then_ifNull.dart.legacy.expect
index f33b9d2..985e5ba 100644
--- a/pkg/front_end/testcases/inference/future_then_ifNull.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/future_then_ifNull.dart.legacy.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(dynamic invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   self::MyFuture<core::int> f;
diff --git a/pkg/front_end/testcases/inference/future_then_ifNull.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/future_then_ifNull.dart.legacy.transformed.expect
index d444655..f3c12bb 100644
--- a/pkg/front_end/testcases/inference/future_then_ifNull.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_ifNull.dart.legacy.transformed.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(dynamic invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   self::MyFuture<core::int> f;
diff --git a/pkg/front_end/testcases/inference/future_then_ifNull.dart.outline.expect b/pkg/front_end/testcases/inference/future_then_ifNull.dart.outline.expect
index 9de8740..18f6651 100644
--- a/pkg/front_end/testcases/inference/future_then_ifNull.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_ifNull.dart.outline.expect
@@ -14,11 +14,11 @@
     ;
   method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError}) → self::MyFuture<self::MyFuture::then::S>
     ;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
diff --git a/pkg/front_end/testcases/inference/future_then_ifNull.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_ifNull.dart.strong.expect
index 490af3f..fa51936 100644
--- a/pkg/front_end/testcases/inference/future_then_ifNull.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_ifNull.dart.strong.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   self::MyFuture<core::int> f;
diff --git a/pkg/front_end/testcases/inference/future_then_ifNull.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_ifNull.dart.strong.transformed.expect
index 0aea2ba..8bc362f 100644
--- a/pkg/front_end/testcases/inference/future_then_ifNull.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_ifNull.dart.strong.transformed.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   self::MyFuture<core::int> f;
diff --git a/pkg/front_end/testcases/inference/future_then_upwards.dart.legacy.expect b/pkg/front_end/testcases/inference/future_then_upwards.dart.legacy.expect
index 0a5072c..c454264 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards.dart.legacy.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(dynamic invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method main() → void {
   dynamic f = self::foo().then((dynamic _) → dynamic => 2.3);
diff --git a/pkg/front_end/testcases/inference/future_then_upwards.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/future_then_upwards.dart.legacy.transformed.expect
index 0a5072c..c454264 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards.dart.legacy.transformed.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(dynamic invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method main() → void {
   dynamic f = self::foo().then((dynamic _) → dynamic => 2.3);
diff --git a/pkg/front_end/testcases/inference/future_then_upwards.dart.outline.expect b/pkg/front_end/testcases/inference/future_then_upwards.dart.outline.expect
index f391cdd..e5a534c 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards.dart.outline.expect
@@ -14,11 +14,11 @@
     ;
   method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError}) → self::MyFuture<self::MyFuture::then::S>
     ;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
diff --git a/pkg/front_end/testcases/inference/future_then_upwards.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_upwards.dart.strong.expect
index aaa6331..0e8e4f6 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards.dart.strong.expect
@@ -22,16 +22,16 @@
     : super core::Object::•() {}
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method main() → void {
   self::MyFuture<core::double> f = self::foo().{self::MyFuture::then}<core::double>((dynamic _) → core::double => 2.3);
diff --git a/pkg/front_end/testcases/inference/future_then_upwards.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_upwards.dart.strong.transformed.expect
index aaa6331..0e8e4f6 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards.dart.strong.transformed.expect
@@ -22,16 +22,16 @@
     : super core::Object::•() {}
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method main() → void {
   self::MyFuture<core::double> f = self::foo().{self::MyFuture::then}<core::double>((dynamic _) → core::double => 2.3);
diff --git a/pkg/front_end/testcases/inference/future_then_upwards_2.dart.legacy.expect b/pkg/front_end/testcases/inference/future_then_upwards_2.dart.legacy.expect
index ef8c8a8..4c532cc 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards_2.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards_2.dart.legacy.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(dynamic invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method main() → void {
   dynamic f = self::foo().then((dynamic _) → dynamic => 2.3);
diff --git a/pkg/front_end/testcases/inference/future_then_upwards_2.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/future_then_upwards_2.dart.legacy.transformed.expect
index ef8c8a8..4c532cc 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards_2.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards_2.dart.legacy.transformed.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(dynamic invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method main() → void {
   dynamic f = self::foo().then((dynamic _) → dynamic => 2.3);
diff --git a/pkg/front_end/testcases/inference/future_then_upwards_2.dart.outline.expect b/pkg/front_end/testcases/inference/future_then_upwards_2.dart.outline.expect
index f391cdd..e5a534c 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards_2.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards_2.dart.outline.expect
@@ -14,11 +14,11 @@
     ;
   method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError}) → self::MyFuture<self::MyFuture::then::S>
     ;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
diff --git a/pkg/front_end/testcases/inference/future_then_upwards_2.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_upwards_2.dart.strong.expect
index bb9fa47..8b99590 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards_2.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards_2.dart.strong.expect
@@ -21,16 +21,16 @@
     : super core::Object::•() {}
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method main() → void {
   self::MyFuture<core::double> f = self::foo().{self::MyFuture::then}<core::double>((dynamic _) → core::double => 2.3);
diff --git a/pkg/front_end/testcases/inference/future_then_upwards_2.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_upwards_2.dart.strong.transformed.expect
index bb9fa47..8b99590 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards_2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards_2.dart.strong.transformed.expect
@@ -21,16 +21,16 @@
     : super core::Object::•() {}
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method main() → void {
   self::MyFuture<core::double> f = self::foo().{self::MyFuture::then}<core::double>((dynamic _) → core::double => 2.3);
diff --git a/pkg/front_end/testcases/inference/future_then_upwards_3.dart.legacy.expect b/pkg/front_end/testcases/inference/future_then_upwards_3.dart.legacy.expect
index 2eaea70..86abe95 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards_3.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards_3.dart.legacy.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(dynamic invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   dynamic f = self::foo().then((dynamic _) → dynamic => 2.3);
diff --git a/pkg/front_end/testcases/inference/future_then_upwards_3.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/future_then_upwards_3.dart.legacy.transformed.expect
index 2eaea70..86abe95 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards_3.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards_3.dart.legacy.transformed.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(dynamic invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   dynamic f = self::foo().then((dynamic _) → dynamic => 2.3);
diff --git a/pkg/front_end/testcases/inference/future_then_upwards_3.dart.outline.expect b/pkg/front_end/testcases/inference/future_then_upwards_3.dart.outline.expect
index a414940..9162c9b 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards_3.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards_3.dart.outline.expect
@@ -14,11 +14,11 @@
     ;
   method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError}) → self::MyFuture<self::MyFuture::then::S>
     ;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
diff --git a/pkg/front_end/testcases/inference/future_then_upwards_3.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_upwards_3.dart.strong.expect
index 8c34e2f..54ab95a 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards_3.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards_3.dart.strong.expect
@@ -21,16 +21,16 @@
     : super core::Object::•() {}
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   asy::Future<core::double> f = self::foo().{asy::Future::then}<core::double>((dynamic _) → core::double => 2.3);
diff --git a/pkg/front_end/testcases/inference/future_then_upwards_3.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_upwards_3.dart.strong.transformed.expect
index 8c34e2f..54ab95a 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards_3.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards_3.dart.strong.transformed.expect
@@ -21,16 +21,16 @@
     : super core::Object::•() {}
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method test() → void {
   asy::Future<core::double> f = self::foo().{asy::Future::then}<core::double>((dynamic _) → core::double => 2.3);
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.legacy.expect b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.legacy.expect
index 86d36c8..aed7501 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.legacy.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(dynamic invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method g1(core::bool x) → asy::Future<core::int> async {
   return x ? 42 : asy::Future::value<dynamic>(42);
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.legacy.transformed.expect
index 217f1d7..7697712 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.legacy.transformed.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(dynamic invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method g1(core::bool x) → asy::Future<core::int> /* originally async */ {
   final asy::_AsyncAwaitCompleter<core::int> :async_completer = new asy::_AsyncAwaitCompleter::•<core::int>();
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.outline.expect b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.outline.expect
index 097008a..e80eb43 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.outline.expect
@@ -14,11 +14,11 @@
     ;
   method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError}) → self::MyFuture<self::MyFuture::then::S>
     ;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.strong.expect b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.strong.expect
index 8d9149c..a5ac737 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.strong.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method g1(core::bool x) → asy::Future<core::int> async {
   return (x ?{core::Object} 42 : asy::Future::value<core::int>(42)) as{TypeError} asy::FutureOr<core::int>;
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.strong.transformed.expect
index 8a6c310..a660035 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.strong.transformed.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method g1(core::bool x) → asy::Future<core::int> /* originally async */ {
   final asy::_AsyncAwaitCompleter<core::int> :async_completer = new asy::_AsyncAwaitCompleter::•<core::int>();
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.legacy.expect b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.legacy.expect
index acf7681..b3989b2 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.legacy.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(dynamic invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method g1(core::bool x) → asy::Future<core::int> async {
   return x ? 42 : new self::MyFuture::value<dynamic>(42);
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.legacy.transformed.expect
index 7f0f5d8..8c463d9 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.legacy.transformed.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(dynamic invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method g1(core::bool x) → asy::Future<core::int> /* originally async */ {
   final asy::_AsyncAwaitCompleter<core::int> :async_completer = new asy::_AsyncAwaitCompleter::•<core::int>();
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.outline.expect b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.outline.expect
index 097008a..e80eb43 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.outline.expect
@@ -14,11 +14,11 @@
     ;
   method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError}) → self::MyFuture<self::MyFuture::then::S>
     ;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.strong.expect b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.strong.expect
index 19a56ce..5d5be70 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.strong.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method g1(core::bool x) → asy::Future<core::int> async {
   return (x ?{core::Object} 42 : new self::MyFuture::value<core::int>(42)) as{TypeError} asy::FutureOr<core::int>;
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.strong.transformed.expect
index 647922e..596a21b 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.strong.transformed.expect
@@ -12,16 +12,16 @@
     : super core::Object::•() {}
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static method g1(core::bool x) → asy::Future<core::int> /* originally async */ {
   final asy::_AsyncAwaitCompleter<core::int> :async_completer = new asy::_AsyncAwaitCompleter::•<core::int>();
diff --git a/pkg/front_end/testcases/inference/future_union_downwards.dart.legacy.expect b/pkg/front_end/testcases/inference/future_union_downwards.dart.legacy.expect
index 294666b..c309ae6 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards.dart.legacy.expect
@@ -8,20 +8,20 @@
 class MyFuture<T extends core::Object = dynamic> extends core::Object implements asy::Future<self::MyFuture::T> {
   constructor •() → self::MyFuture<self::MyFuture::T>
     : super core::Object::•() {}
-  constructor value([dynamic x = #C1]) → self::MyFuture<self::MyFuture::T>
+  constructor value([dynamic x = null]) → self::MyFuture<self::MyFuture::T>
     : super core::Object::•() {}
   method noSuchMethod(dynamic invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static field self::MyFuture<dynamic> f;
 static field asy::Future<core::int> t1 = self::f.then((dynamic _) → dynamic => asy::Future::value<dynamic>("hi"));
diff --git a/pkg/front_end/testcases/inference/future_union_downwards.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/future_union_downwards.dart.legacy.transformed.expect
index 601bae2..5fb66a8 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards.dart.legacy.transformed.expect
@@ -8,20 +8,20 @@
 class MyFuture<T extends core::Object = dynamic> extends core::Object implements asy::Future<self::MyFuture::T> {
   constructor •() → self::MyFuture<self::MyFuture::T>
     : super core::Object::•() {}
-  constructor value([dynamic x = #C1]) → self::MyFuture<self::MyFuture::T>
+  constructor value([dynamic x = null]) → self::MyFuture<self::MyFuture::T>
     : super core::Object::•() {}
   method noSuchMethod(dynamic invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static field self::MyFuture<dynamic> f;
 static field asy::Future<core::int> t1 = self::f.then((dynamic _) → dynamic => asy::Future::value<dynamic>("hi"));
diff --git a/pkg/front_end/testcases/inference/future_union_downwards.dart.outline.expect b/pkg/front_end/testcases/inference/future_union_downwards.dart.outline.expect
index f271dd4..263a94f 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards.dart.outline.expect
@@ -14,11 +14,11 @@
     ;
   method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError}) → self::MyFuture<self::MyFuture::then::S>
     ;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
diff --git a/pkg/front_end/testcases/inference/future_union_downwards.dart.strong.expect b/pkg/front_end/testcases/inference/future_union_downwards.dart.strong.expect
index ebf560b..f4aa39ea 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards.dart.strong.expect
@@ -17,20 +17,20 @@
 class MyFuture<T extends core::Object = dynamic> extends core::Object implements asy::Future<self::MyFuture::T> {
   constructor •() → self::MyFuture<self::MyFuture::T>
     : super core::Object::•() {}
-  constructor value([dynamic x = #C1]) → self::MyFuture<self::MyFuture::T>
+  constructor value([dynamic x = null]) → self::MyFuture<self::MyFuture::T>
     : super core::Object::•() {}
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static field self::MyFuture<dynamic> f;
 static field asy::Future<core::int> t1 = self::f.{self::MyFuture::then}<core::int>((dynamic _) → asy::Future<core::int> => asy::Future::value<core::int>(let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/future_union_downwards.dart:21:44: Error: The argument type 'String' can't be assigned to the parameter type 'FutureOr<int>'.
diff --git a/pkg/front_end/testcases/inference/future_union_downwards.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_union_downwards.dart.strong.transformed.expect
index f91b8b5..b7defba 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards.dart.strong.transformed.expect
@@ -17,20 +17,20 @@
 class MyFuture<T extends core::Object = dynamic> extends core::Object implements asy::Future<self::MyFuture::T> {
   constructor •() → self::MyFuture<self::MyFuture::T>
     : super core::Object::•() {}
-  constructor value([dynamic x = #C1]) → self::MyFuture<self::MyFuture::T>
+  constructor value([dynamic x = null]) → self::MyFuture<self::MyFuture::T>
     : super core::Object::•() {}
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static field self::MyFuture<dynamic> f;
 static field asy::Future<core::int> t1 = self::f.{self::MyFuture::then}<core::int>((dynamic _) → asy::Future<core::int> => asy::Future::value<core::int>(let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/future_union_downwards.dart:21:44: Error: The argument type 'String' can't be assigned to the parameter type 'FutureOr<int>'.
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.legacy.expect b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.legacy.expect
index 15875e3..a89b874 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.legacy.expect
@@ -8,20 +8,20 @@
 class MyFuture<T extends core::Object = dynamic> extends core::Object implements asy::Future<self::MyFuture::T> {
   constructor •() → self::MyFuture<self::MyFuture::T>
     : super core::Object::•() {}
-  constructor value([dynamic x = #C1]) → self::MyFuture<self::MyFuture::T>
+  constructor value([dynamic x = null]) → self::MyFuture<self::MyFuture::T>
     : super core::Object::•() {}
   method noSuchMethod(dynamic invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static field self::MyFuture<dynamic> f;
 static field asy::Future<core::int> t1 = self::f.then((dynamic _) → dynamic => new self::MyFuture::value<dynamic>("hi"));
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.legacy.transformed.expect
index 9e078ba..ec5724d 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.legacy.transformed.expect
@@ -8,20 +8,20 @@
 class MyFuture<T extends core::Object = dynamic> extends core::Object implements asy::Future<self::MyFuture::T> {
   constructor •() → self::MyFuture<self::MyFuture::T>
     : super core::Object::•() {}
-  constructor value([dynamic x = #C1]) → self::MyFuture<self::MyFuture::T>
+  constructor value([dynamic x = null]) → self::MyFuture<self::MyFuture::T>
     : super core::Object::•() {}
   method noSuchMethod(dynamic invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static field self::MyFuture<dynamic> f;
 static field asy::Future<core::int> t1 = self::f.then((dynamic _) → dynamic => new self::MyFuture::value<dynamic>("hi"));
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.outline.expect b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.outline.expect
index f271dd4..263a94f 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.outline.expect
@@ -14,11 +14,11 @@
     ;
   method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError}) → self::MyFuture<self::MyFuture::then::S>
     ;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.strong.expect b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.strong.expect
index 2fb95d6..d17cf61 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.strong.expect
@@ -8,20 +8,20 @@
 class MyFuture<T extends core::Object = dynamic> extends core::Object implements asy::Future<self::MyFuture::T> {
   constructor •() → self::MyFuture<self::MyFuture::T>
     : super core::Object::•() {}
-  constructor value([dynamic x = #C1]) → self::MyFuture<self::MyFuture::T>
+  constructor value([dynamic x = null]) → self::MyFuture<self::MyFuture::T>
     : super core::Object::•() {}
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static field self::MyFuture<dynamic> f;
 static field asy::Future<core::int> t1 = self::f.{self::MyFuture::then}<core::int>((dynamic _) → self::MyFuture<core::int> => new self::MyFuture::value<core::int>("hi"));
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.strong.transformed.expect
index e85afff..41be920 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.strong.transformed.expect
@@ -8,20 +8,20 @@
 class MyFuture<T extends core::Object = dynamic> extends core::Object implements asy::Future<self::MyFuture::T> {
   constructor •() → self::MyFuture<self::MyFuture::T>
     : super core::Object::•() {}
-  constructor value([dynamic x = #C1]) → self::MyFuture<self::MyFuture::T>
+  constructor value([dynamic x = null]) → self::MyFuture<self::MyFuture::T>
     : super core::Object::•() {}
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static field self::MyFuture<dynamic> f;
 static field asy::Future<core::int> t1 = self::f.{self::MyFuture::then}<core::int>((dynamic _) → self::MyFuture<core::int> => new self::MyFuture::value<core::int>("hi"));
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.legacy.expect b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.legacy.expect
index d0226b9..9b07131 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.legacy.expect
@@ -8,20 +8,20 @@
 class MyFuture<T extends core::Object = dynamic> extends core::Object implements asy::Future<self::MyFuture::T> {
   constructor •() → self::MyFuture<self::MyFuture::T>
     : super core::Object::•() {}
-  constructor value([dynamic x = #C1]) → self::MyFuture<self::MyFuture::T>
+  constructor value([dynamic x = null]) → self::MyFuture<self::MyFuture::T>
     : super core::Object::•() {}
   method noSuchMethod(dynamic invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static field asy::Future<dynamic> f;
 static field asy::Future<core::int> t1 = self::f.then((dynamic _) → dynamic => asy::Future::value<dynamic>("hi"));
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.legacy.transformed.expect
index bce422e..a3884a8 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.legacy.transformed.expect
@@ -8,20 +8,20 @@
 class MyFuture<T extends core::Object = dynamic> extends core::Object implements asy::Future<self::MyFuture::T> {
   constructor •() → self::MyFuture<self::MyFuture::T>
     : super core::Object::•() {}
-  constructor value([dynamic x = #C1]) → self::MyFuture<self::MyFuture::T>
+  constructor value([dynamic x = null]) → self::MyFuture<self::MyFuture::T>
     : super core::Object::•() {}
   method noSuchMethod(dynamic invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static field asy::Future<dynamic> f;
 static field asy::Future<core::int> t1 = self::f.then((dynamic _) → dynamic => asy::Future::value<dynamic>("hi"));
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.outline.expect b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.outline.expect
index 68a8d4d..da18d4d 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.outline.expect
@@ -14,11 +14,11 @@
     ;
   method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError}) → self::MyFuture<self::MyFuture::then::S>
     ;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.strong.expect b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.strong.expect
index 1d73872..2d9895a 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.strong.expect
@@ -17,20 +17,20 @@
 class MyFuture<T extends core::Object = dynamic> extends core::Object implements asy::Future<self::MyFuture::T> {
   constructor •() → self::MyFuture<self::MyFuture::T>
     : super core::Object::•() {}
-  constructor value([dynamic x = #C1]) → self::MyFuture<self::MyFuture::T>
+  constructor value([dynamic x = null]) → self::MyFuture<self::MyFuture::T>
     : super core::Object::•() {}
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static field asy::Future<dynamic> f;
 static field asy::Future<core::int> t1 = self::f.{asy::Future::then}<core::int>((dynamic _) → asy::Future<core::int> => asy::Future::value<core::int>(let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/future_union_downwards_3.dart:21:44: Error: The argument type 'String' can't be assigned to the parameter type 'FutureOr<int>'.
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.strong.transformed.expect
index 1f0ddeb..7c40213 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.strong.transformed.expect
@@ -17,20 +17,20 @@
 class MyFuture<T extends core::Object = dynamic> extends core::Object implements asy::Future<self::MyFuture::T> {
   constructor •() → self::MyFuture<self::MyFuture::T>
     : super core::Object::•() {}
-  constructor value([dynamic x = #C1]) → self::MyFuture<self::MyFuture::T>
+  constructor value([dynamic x = null]) → self::MyFuture<self::MyFuture::T>
     : super core::Object::•() {}
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static field asy::Future<dynamic> f;
 static field asy::Future<core::int> t1 = self::f.{asy::Future::then}<core::int>((dynamic _) → asy::Future<core::int> => asy::Future::value<core::int>(let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/future_union_downwards_3.dart:21:44: Error: The argument type 'String' can't be assigned to the parameter type 'FutureOr<int>'.
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.legacy.expect b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.legacy.expect
index 0d1c3c9..b27e6d9 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.legacy.expect
@@ -8,20 +8,20 @@
 class MyFuture<T extends core::Object = dynamic> extends core::Object implements asy::Future<self::MyFuture::T> {
   constructor •() → self::MyFuture<self::MyFuture::T>
     : super core::Object::•() {}
-  constructor value([dynamic x = #C1]) → self::MyFuture<self::MyFuture::T>
+  constructor value([dynamic x = null]) → self::MyFuture<self::MyFuture::T>
     : super core::Object::•() {}
   method noSuchMethod(dynamic invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static field asy::Future<dynamic> f;
 static field asy::Future<core::int> t1 = self::f.then((dynamic _) → dynamic => new self::MyFuture::value<dynamic>("hi"));
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.legacy.transformed.expect
index cb70e42..ca29563 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.legacy.transformed.expect
@@ -8,20 +8,20 @@
 class MyFuture<T extends core::Object = dynamic> extends core::Object implements asy::Future<self::MyFuture::T> {
   constructor •() → self::MyFuture<self::MyFuture::T>
     : super core::Object::•() {}
-  constructor value([dynamic x = #C1]) → self::MyFuture<self::MyFuture::T>
+  constructor value([dynamic x = null]) → self::MyFuture<self::MyFuture::T>
     : super core::Object::•() {}
   method noSuchMethod(dynamic invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static field asy::Future<dynamic> f;
 static field asy::Future<core::int> t1 = self::f.then((dynamic _) → dynamic => new self::MyFuture::value<dynamic>("hi"));
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.outline.expect b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.outline.expect
index 68a8d4d..da18d4d 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.outline.expect
@@ -14,11 +14,11 @@
     ;
   method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError}) → self::MyFuture<self::MyFuture::then::S>
     ;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.strong.expect b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.strong.expect
index a2230ec..0de77a6 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.strong.expect
@@ -8,20 +8,20 @@
 class MyFuture<T extends core::Object = dynamic> extends core::Object implements asy::Future<self::MyFuture::T> {
   constructor •() → self::MyFuture<self::MyFuture::T>
     : super core::Object::•() {}
-  constructor value([dynamic x = #C1]) → self::MyFuture<self::MyFuture::T>
+  constructor value([dynamic x = null]) → self::MyFuture<self::MyFuture::T>
     : super core::Object::•() {}
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static field asy::Future<dynamic> f;
 static field asy::Future<core::int> t1 = self::f.{asy::Future::then}<core::int>((dynamic _) → self::MyFuture<core::int> => new self::MyFuture::value<core::int>("hi"));
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.strong.transformed.expect
index 914f0e2..028521e 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.strong.transformed.expect
@@ -8,20 +8,20 @@
 class MyFuture<T extends core::Object = dynamic> extends core::Object implements asy::Future<self::MyFuture::T> {
   constructor •() → self::MyFuture<self::MyFuture::T>
     : super core::Object::•() {}
-  constructor value([dynamic x = #C1]) → self::MyFuture<self::MyFuture::T>
+  constructor value([dynamic x = null]) → self::MyFuture<self::MyFuture::T>
     : super core::Object::•() {}
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = #C1}) → self::MyFuture<self::MyFuture::then::S>
+  method then<S extends core::Object = dynamic>((self::MyFuture::T) → asy::FutureOr<self::MyFuture::then::S> f, {core::Function onError = null}) → self::MyFuture<self::MyFuture::then::S>
     return null;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) → core::bool test = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#catchError, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#test: test}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → asy::FutureOr<dynamic> action) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Future<self::MyFuture::T>;
-  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = #C1}) → asy::Future<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C9: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#whenComplete, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Future<self::MyFuture::T>;
+  no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () → asy::FutureOr<self::MyFuture::T> onTimeout = null}) → asy::Future<self::MyFuture::T>
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#timeout, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#onTimeout: onTimeout}))) as{TypeError} asy::Future<self::MyFuture::T>;
   no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::MyFuture::T>
-    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol, dynamic>(#C7))) as{TypeError} asy::Stream<self::MyFuture::T>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#asStream, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static field asy::Future<dynamic> f;
 static field asy::Future<core::int> t1 = self::f.{asy::Future::then}<core::int>((dynamic _) → self::MyFuture<core::int> => new self::MyFuture::value<core::int>("hi"));
diff --git a/pkg/front_end/testcases/inference/generic_methods_basic_downward_inference.dart.legacy.expect b/pkg/front_end/testcases/inference/generic_methods_basic_downward_inference.dart.legacy.expect
index 880d3f4..fe1c799 100644
--- a/pkg/front_end/testcases/inference/generic_methods_basic_downward_inference.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_basic_downward_inference.dart.legacy.expect
@@ -6,5 +6,5 @@
   return null;
 static method main() → dynamic {
   core::String x = self::f<dynamic, dynamic>(42);
-  core::String y = (#C1).call(42);
+  core::String y = self::f.call(42);
 }
diff --git a/pkg/front_end/testcases/inference/generic_methods_basic_downward_inference.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/generic_methods_basic_downward_inference.dart.legacy.transformed.expect
index 880d3f4..fe1c799 100644
--- a/pkg/front_end/testcases/inference/generic_methods_basic_downward_inference.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_basic_downward_inference.dart.legacy.transformed.expect
@@ -6,5 +6,5 @@
   return null;
 static method main() → dynamic {
   core::String x = self::f<dynamic, dynamic>(42);
-  core::String y = (#C1).call(42);
+  core::String y = self::f.call(42);
 }
diff --git a/pkg/front_end/testcases/inference/generic_methods_basic_downward_inference.dart.strong.expect b/pkg/front_end/testcases/inference/generic_methods_basic_downward_inference.dart.strong.expect
index cd72a40..b410886 100644
--- a/pkg/front_end/testcases/inference/generic_methods_basic_downward_inference.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_basic_downward_inference.dart.strong.expect
@@ -6,5 +6,5 @@
   return null;
 static method main() → dynamic {
   core::String x = self::f<core::int, core::String>(42);
-  core::String y = (#C1).call<core::int, core::String>(42);
+  core::String y = self::f.call<core::int, core::String>(42);
 }
diff --git a/pkg/front_end/testcases/inference/generic_methods_basic_downward_inference.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/generic_methods_basic_downward_inference.dart.strong.transformed.expect
index cd72a40..b410886 100644
--- a/pkg/front_end/testcases/inference/generic_methods_basic_downward_inference.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_basic_downward_inference.dart.strong.transformed.expect
@@ -6,5 +6,5 @@
   return null;
 static method main() → dynamic {
   core::String x = self::f<core::int, core::String>(42);
-  core::String y = (#C1).call<core::int, core::String>(42);
+  core::String y = self::f.call<core::int, core::String>(42);
 }
diff --git a/pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart.legacy.expect b/pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart.legacy.expect
index b8348f5..4b8fab7 100644
--- a/pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart.legacy.expect
@@ -1,6 +1,7 @@
 library test;
 import self as self;
 import "dart:core" as core;
+import "dart:math" as math;
 
 import "dart:math" as math;
 import "dart:math";
@@ -13,34 +14,34 @@
     return null;
 }
 static method test() → dynamic {
-  self::takeIII(#C1);
-  self::takeDDD(#C1);
-  self::takeNNN(#C1);
-  self::takeIDN(#C1);
-  self::takeDIN(#C1);
-  self::takeIIN(#C1);
-  self::takeDDN(#C1);
-  self::takeIIO(#C1);
-  self::takeDDO(#C1);
-  self::takeOOI(#C1);
-  self::takeIDI(#C1);
-  self::takeDID(#C1);
-  self::takeOON(#C1);
-  self::takeOOO(#C1);
-  self::takeIII(#C2);
-  self::takeDDD(#C2);
-  self::takeNNN(#C2);
-  self::takeIDN(#C2);
-  self::takeDIN(#C2);
-  self::takeIIN(#C2);
-  self::takeDDN(#C2);
-  self::takeIIO(#C2);
-  self::takeDDO(#C2);
-  self::takeOOI(#C2);
-  self::takeIDI(#C2);
-  self::takeDID(#C2);
-  self::takeOON(#C2);
-  self::takeOOO(#C2);
+  self::takeIII(math::max);
+  self::takeDDD(math::max);
+  self::takeNNN(math::max);
+  self::takeIDN(math::max);
+  self::takeDIN(math::max);
+  self::takeIIN(math::max);
+  self::takeDDN(math::max);
+  self::takeIIO(math::max);
+  self::takeDDO(math::max);
+  self::takeOOI(math::max);
+  self::takeIDI(math::max);
+  self::takeDID(math::max);
+  self::takeOON(math::max);
+  self::takeOOO(math::max);
+  self::takeIII(math::min);
+  self::takeDDD(math::min);
+  self::takeNNN(math::min);
+  self::takeIDN(math::min);
+  self::takeDIN(math::min);
+  self::takeIIN(math::min);
+  self::takeDDN(math::min);
+  self::takeIIO(math::min);
+  self::takeDDO(math::min);
+  self::takeOOI(math::min);
+  self::takeIDI(math::min);
+  self::takeDID(math::min);
+  self::takeOON(math::min);
+  self::takeOOO(math::min);
   self::takeIII(new self::C::•().m);
   self::takeDDD(new self::C::•().m);
   self::takeNNN(new self::C::•().m);
diff --git a/pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart.legacy.transformed.expect
index b8348f5..4b8fab7 100644
--- a/pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart.legacy.transformed.expect
@@ -1,6 +1,7 @@
 library test;
 import self as self;
 import "dart:core" as core;
+import "dart:math" as math;
 
 import "dart:math" as math;
 import "dart:math";
@@ -13,34 +14,34 @@
     return null;
 }
 static method test() → dynamic {
-  self::takeIII(#C1);
-  self::takeDDD(#C1);
-  self::takeNNN(#C1);
-  self::takeIDN(#C1);
-  self::takeDIN(#C1);
-  self::takeIIN(#C1);
-  self::takeDDN(#C1);
-  self::takeIIO(#C1);
-  self::takeDDO(#C1);
-  self::takeOOI(#C1);
-  self::takeIDI(#C1);
-  self::takeDID(#C1);
-  self::takeOON(#C1);
-  self::takeOOO(#C1);
-  self::takeIII(#C2);
-  self::takeDDD(#C2);
-  self::takeNNN(#C2);
-  self::takeIDN(#C2);
-  self::takeDIN(#C2);
-  self::takeIIN(#C2);
-  self::takeDDN(#C2);
-  self::takeIIO(#C2);
-  self::takeDDO(#C2);
-  self::takeOOI(#C2);
-  self::takeIDI(#C2);
-  self::takeDID(#C2);
-  self::takeOON(#C2);
-  self::takeOOO(#C2);
+  self::takeIII(math::max);
+  self::takeDDD(math::max);
+  self::takeNNN(math::max);
+  self::takeIDN(math::max);
+  self::takeDIN(math::max);
+  self::takeIIN(math::max);
+  self::takeDDN(math::max);
+  self::takeIIO(math::max);
+  self::takeDDO(math::max);
+  self::takeOOI(math::max);
+  self::takeIDI(math::max);
+  self::takeDID(math::max);
+  self::takeOON(math::max);
+  self::takeOOO(math::max);
+  self::takeIII(math::min);
+  self::takeDDD(math::min);
+  self::takeNNN(math::min);
+  self::takeIDN(math::min);
+  self::takeDIN(math::min);
+  self::takeIIN(math::min);
+  self::takeDDN(math::min);
+  self::takeIIO(math::min);
+  self::takeDDO(math::min);
+  self::takeOOI(math::min);
+  self::takeIDI(math::min);
+  self::takeDID(math::min);
+  self::takeOON(math::min);
+  self::takeOOO(math::min);
   self::takeIII(new self::C::•().m);
   self::takeDDD(new self::C::•().m);
   self::takeNNN(new self::C::•().m);
diff --git a/pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart.strong.expect b/pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart.strong.expect
index 93f00a2..599ce81 100644
--- a/pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart.strong.expect
@@ -34,6 +34,7 @@
 //
 import self as self;
 import "dart:core" as core;
+import "dart:math" as math;
 
 import "dart:math" as math;
 import "dart:math";
@@ -46,46 +47,46 @@
     return null;
 }
 static method test() → dynamic {
-  self::takeIII(#C1<core::int>);
-  self::takeDDD(#C1<core::double>);
-  self::takeNNN(#C1<core::num>);
-  self::takeIDN(#C1<core::num>);
-  self::takeDIN(#C1<core::num>);
-  self::takeIIN(#C1<core::int>);
-  self::takeDDN(#C1<core::double>);
-  self::takeIIO(#C1<core::int>);
-  self::takeDDO(#C1<core::double>);
-  self::takeOOI((#C1<core::Object>) as{TypeError} (core::Object, core::Object) → core::int);
+  self::takeIII(math::max<core::int>);
+  self::takeDDD(math::max<core::double>);
+  self::takeNNN(math::max<core::num>);
+  self::takeIDN(math::max<core::num>);
+  self::takeDIN(math::max<core::num>);
+  self::takeIIN(math::max<core::int>);
+  self::takeDDN(math::max<core::double>);
+  self::takeIIO(math::max<core::int>);
+  self::takeDDO(math::max<core::double>);
+  self::takeOOI((math::max<core::Object>) as{TypeError} (core::Object, core::Object) → core::int);
   self::takeIDI(let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart:28:73: Error: The argument type 'num Function(num, num)' can't be assigned to the parameter type 'int Function(double, int)'.
 Try changing the type of the parameter, or casting the argument to 'int Function(double, int)'.
       /*error:COULD_NOT_INFER,error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ math.max);
-                                                                        ^" in (#C1<core::num>) as{TypeError} (core::double, core::int) → core::int);
+                                                                        ^" in (math::max<core::num>) as{TypeError} (core::double, core::int) → core::int);
   self::takeDID(let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart:30:73: Error: The argument type 'num Function(num, num)' can't be assigned to the parameter type 'double Function(int, double)'.
 Try changing the type of the parameter, or casting the argument to 'double Function(int, double)'.
       /*error:COULD_NOT_INFER,error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ math.max);
-                                                                        ^" in (#C1<core::num>) as{TypeError} (core::int, core::double) → core::double);
-  self::takeOON((#C1<core::Object>) as{TypeError} (core::Object, core::Object) → core::num);
-  self::takeOOO((#C1<core::Object>) as{TypeError} (core::Object, core::Object) → core::num);
-  self::takeIII(#C2<core::int>);
-  self::takeDDD(#C2<core::double>);
-  self::takeNNN(#C2<core::num>);
-  self::takeIDN(#C2<core::num>);
-  self::takeDIN(#C2<core::num>);
-  self::takeIIN(#C2<core::int>);
-  self::takeDDN(#C2<core::double>);
-  self::takeIIO(#C2<core::int>);
-  self::takeDDO(#C2<core::double>);
-  self::takeOOI((#C2<core::Object>) as{TypeError} (core::Object, core::Object) → core::int);
+                                                                        ^" in (math::max<core::num>) as{TypeError} (core::int, core::double) → core::double);
+  self::takeOON((math::max<core::Object>) as{TypeError} (core::Object, core::Object) → core::num);
+  self::takeOOO((math::max<core::Object>) as{TypeError} (core::Object, core::Object) → core::num);
+  self::takeIII(math::min<core::int>);
+  self::takeDDD(math::min<core::double>);
+  self::takeNNN(math::min<core::num>);
+  self::takeIDN(math::min<core::num>);
+  self::takeDIN(math::min<core::num>);
+  self::takeIIN(math::min<core::int>);
+  self::takeDDN(math::min<core::double>);
+  self::takeIIO(math::min<core::int>);
+  self::takeDDO(math::min<core::double>);
+  self::takeOOI((math::min<core::Object>) as{TypeError} (core::Object, core::Object) → core::int);
   self::takeIDI(let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart:46:72: Error: The argument type 'num Function(num, num)' can't be assigned to the parameter type 'int Function(double, int)'.
 Try changing the type of the parameter, or casting the argument to 'int Function(double, int)'.
   takeIDI(/*error:COULD_NOT_INFER,error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ min);
-                                                                       ^" in (#C2<core::num>) as{TypeError} (core::double, core::int) → core::int);
+                                                                       ^" in (math::min<core::num>) as{TypeError} (core::double, core::int) → core::int);
   self::takeDID(let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart:47:72: Error: The argument type 'num Function(num, num)' can't be assigned to the parameter type 'double Function(int, double)'.
 Try changing the type of the parameter, or casting the argument to 'double Function(int, double)'.
   takeDID(/*error:COULD_NOT_INFER,error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ min);
-                                                                       ^" in (#C2<core::num>) as{TypeError} (core::int, core::double) → core::double);
-  self::takeOON((#C2<core::Object>) as{TypeError} (core::Object, core::Object) → core::num);
-  self::takeOOO((#C2<core::Object>) as{TypeError} (core::Object, core::Object) → core::num);
+                                                                       ^" in (math::min<core::num>) as{TypeError} (core::int, core::double) → core::double);
+  self::takeOON((math::min<core::Object>) as{TypeError} (core::Object, core::Object) → core::num);
+  self::takeOOO((math::min<core::Object>) as{TypeError} (core::Object, core::Object) → core::num);
   self::takeIII(new self::C::•().{self::C::m}<core::int>);
   self::takeDDD(new self::C::•().{self::C::m}<core::double>);
   self::takeNNN(new self::C::•().{self::C::m}<core::num>);
diff --git a/pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart.strong.transformed.expect
index 93f00a2..599ce81 100644
--- a/pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart.strong.transformed.expect
@@ -34,6 +34,7 @@
 //
 import self as self;
 import "dart:core" as core;
+import "dart:math" as math;
 
 import "dart:math" as math;
 import "dart:math";
@@ -46,46 +47,46 @@
     return null;
 }
 static method test() → dynamic {
-  self::takeIII(#C1<core::int>);
-  self::takeDDD(#C1<core::double>);
-  self::takeNNN(#C1<core::num>);
-  self::takeIDN(#C1<core::num>);
-  self::takeDIN(#C1<core::num>);
-  self::takeIIN(#C1<core::int>);
-  self::takeDDN(#C1<core::double>);
-  self::takeIIO(#C1<core::int>);
-  self::takeDDO(#C1<core::double>);
-  self::takeOOI((#C1<core::Object>) as{TypeError} (core::Object, core::Object) → core::int);
+  self::takeIII(math::max<core::int>);
+  self::takeDDD(math::max<core::double>);
+  self::takeNNN(math::max<core::num>);
+  self::takeIDN(math::max<core::num>);
+  self::takeDIN(math::max<core::num>);
+  self::takeIIN(math::max<core::int>);
+  self::takeDDN(math::max<core::double>);
+  self::takeIIO(math::max<core::int>);
+  self::takeDDO(math::max<core::double>);
+  self::takeOOI((math::max<core::Object>) as{TypeError} (core::Object, core::Object) → core::int);
   self::takeIDI(let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart:28:73: Error: The argument type 'num Function(num, num)' can't be assigned to the parameter type 'int Function(double, int)'.
 Try changing the type of the parameter, or casting the argument to 'int Function(double, int)'.
       /*error:COULD_NOT_INFER,error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ math.max);
-                                                                        ^" in (#C1<core::num>) as{TypeError} (core::double, core::int) → core::int);
+                                                                        ^" in (math::max<core::num>) as{TypeError} (core::double, core::int) → core::int);
   self::takeDID(let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart:30:73: Error: The argument type 'num Function(num, num)' can't be assigned to the parameter type 'double Function(int, double)'.
 Try changing the type of the parameter, or casting the argument to 'double Function(int, double)'.
       /*error:COULD_NOT_INFER,error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ math.max);
-                                                                        ^" in (#C1<core::num>) as{TypeError} (core::int, core::double) → core::double);
-  self::takeOON((#C1<core::Object>) as{TypeError} (core::Object, core::Object) → core::num);
-  self::takeOOO((#C1<core::Object>) as{TypeError} (core::Object, core::Object) → core::num);
-  self::takeIII(#C2<core::int>);
-  self::takeDDD(#C2<core::double>);
-  self::takeNNN(#C2<core::num>);
-  self::takeIDN(#C2<core::num>);
-  self::takeDIN(#C2<core::num>);
-  self::takeIIN(#C2<core::int>);
-  self::takeDDN(#C2<core::double>);
-  self::takeIIO(#C2<core::int>);
-  self::takeDDO(#C2<core::double>);
-  self::takeOOI((#C2<core::Object>) as{TypeError} (core::Object, core::Object) → core::int);
+                                                                        ^" in (math::max<core::num>) as{TypeError} (core::int, core::double) → core::double);
+  self::takeOON((math::max<core::Object>) as{TypeError} (core::Object, core::Object) → core::num);
+  self::takeOOO((math::max<core::Object>) as{TypeError} (core::Object, core::Object) → core::num);
+  self::takeIII(math::min<core::int>);
+  self::takeDDD(math::min<core::double>);
+  self::takeNNN(math::min<core::num>);
+  self::takeIDN(math::min<core::num>);
+  self::takeDIN(math::min<core::num>);
+  self::takeIIN(math::min<core::int>);
+  self::takeDDN(math::min<core::double>);
+  self::takeIIO(math::min<core::int>);
+  self::takeDDO(math::min<core::double>);
+  self::takeOOI((math::min<core::Object>) as{TypeError} (core::Object, core::Object) → core::int);
   self::takeIDI(let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart:46:72: Error: The argument type 'num Function(num, num)' can't be assigned to the parameter type 'int Function(double, int)'.
 Try changing the type of the parameter, or casting the argument to 'int Function(double, int)'.
   takeIDI(/*error:COULD_NOT_INFER,error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ min);
-                                                                       ^" in (#C2<core::num>) as{TypeError} (core::double, core::int) → core::int);
+                                                                       ^" in (math::min<core::num>) as{TypeError} (core::double, core::int) → core::int);
   self::takeDID(let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart:47:72: Error: The argument type 'num Function(num, num)' can't be assigned to the parameter type 'double Function(int, double)'.
 Try changing the type of the parameter, or casting the argument to 'double Function(int, double)'.
   takeDID(/*error:COULD_NOT_INFER,error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ min);
-                                                                       ^" in (#C2<core::num>) as{TypeError} (core::int, core::double) → core::double);
-  self::takeOON((#C2<core::Object>) as{TypeError} (core::Object, core::Object) → core::num);
-  self::takeOOO((#C2<core::Object>) as{TypeError} (core::Object, core::Object) → core::num);
+                                                                       ^" in (math::min<core::num>) as{TypeError} (core::int, core::double) → core::double);
+  self::takeOON((math::min<core::Object>) as{TypeError} (core::Object, core::Object) → core::num);
+  self::takeOOO((math::min<core::Object>) as{TypeError} (core::Object, core::Object) → core::num);
   self::takeIII(new self::C::•().{self::C::m}<core::int>);
   self::takeDDD(new self::C::•().{self::C::m}<core::double>);
   self::takeNNN(new self::C::•().{self::C::m}<core::num>);
diff --git a/pkg/front_end/testcases/inference/generic_methods_infer_js_builtin.dart.legacy.expect b/pkg/front_end/testcases/inference/generic_methods_infer_js_builtin.dart.legacy.expect
index 9042102..24d0db0 100644
--- a/pkg/front_end/testcases/inference/generic_methods_infer_js_builtin.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_infer_js_builtin.dart.legacy.expect
@@ -20,8 +20,8 @@
 import "dart:_foreign_helper";
 
 static method main() → dynamic {
-  core::String x = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 32, #C2, core::List::unmodifiable<dynamic>(<dynamic>["int", "42"]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
-  dynamic y = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 32, #C2, core::List::unmodifiable<dynamic>(<dynamic>["String", "\"hello\""]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+  core::String x = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#JS, 32, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>["int", "42"]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+  dynamic y = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#JS, 32, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>["String", "\"hello\""]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   y = "world";
   y = 42;
 }
diff --git a/pkg/front_end/testcases/inference/generic_methods_infer_js_builtin.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/generic_methods_infer_js_builtin.dart.legacy.transformed.expect
index 9042102..24d0db0 100644
--- a/pkg/front_end/testcases/inference/generic_methods_infer_js_builtin.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_infer_js_builtin.dart.legacy.transformed.expect
@@ -20,8 +20,8 @@
 import "dart:_foreign_helper";
 
 static method main() → dynamic {
-  core::String x = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 32, #C2, core::List::unmodifiable<dynamic>(<dynamic>["int", "42"]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
-  dynamic y = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 32, #C2, core::List::unmodifiable<dynamic>(<dynamic>["String", "\"hello\""]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+  core::String x = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#JS, 32, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>["int", "42"]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+  dynamic y = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#JS, 32, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>["String", "\"hello\""]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   y = "world";
   y = 42;
 }
diff --git a/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart.legacy.expect b/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart.legacy.expect
index 2433115..b8c72dc 100644
--- a/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart.legacy.expect
@@ -8,7 +8,7 @@
 static method make(core::int x) → asy::Future<core::int>
   return asy::Future::•<dynamic>(() → dynamic => x);
 static method test() → dynamic {
-  core::Iterable<asy::Future<core::int>> list = <core::int>[1, 2, 3].map(#C1);
+  core::Iterable<asy::Future<core::int>> list = <core::int>[1, 2, 3].map(self::make);
   asy::Future<core::List<core::int>> results = asy::Future::wait<dynamic>(list);
   asy::Future<core::String> results2 = results.then((core::List<core::int> list) → dynamic => list.fold("", (dynamic x, dynamic y) → dynamic => x.+(y.toString())));
   asy::Future<core::String> results3 = results.then((core::List<core::int> list) → dynamic => list.fold("", (core::String x, dynamic y) → dynamic => x.+(y.toString())));
diff --git a/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart.legacy.transformed.expect
index 2433115..b8c72dc 100644
--- a/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart.legacy.transformed.expect
@@ -8,7 +8,7 @@
 static method make(core::int x) → asy::Future<core::int>
   return asy::Future::•<dynamic>(() → dynamic => x);
 static method test() → dynamic {
-  core::Iterable<asy::Future<core::int>> list = <core::int>[1, 2, 3].map(#C1);
+  core::Iterable<asy::Future<core::int>> list = <core::int>[1, 2, 3].map(self::make);
   asy::Future<core::List<core::int>> results = asy::Future::wait<dynamic>(list);
   asy::Future<core::String> results2 = results.then((core::List<core::int> list) → dynamic => list.fold("", (dynamic x, dynamic y) → dynamic => x.+(y.toString())));
   asy::Future<core::String> results3 = results.then((core::List<core::int> list) → dynamic => list.fold("", (core::String x, dynamic y) → dynamic => x.+(y.toString())));
diff --git a/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart.strong.expect b/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart.strong.expect
index 7879329..6181d32 100644
--- a/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart.strong.expect
@@ -23,7 +23,7 @@
 static method make(core::int x) → asy::Future<core::int>
   return asy::Future::•<core::int>(() → core::int => x);
 static method test() → dynamic {
-  core::Iterable<asy::Future<core::int>> list = <core::int>[1, 2, 3].{core::Iterable::map}<asy::Future<core::int>>(#C1);
+  core::Iterable<asy::Future<core::int>> list = <core::int>[1, 2, 3].{core::Iterable::map}<asy::Future<core::int>>(self::make);
   asy::Future<core::List<core::int>> results = asy::Future::wait<core::int>(list);
   asy::Future<core::String> results2 = results.{asy::Future::then}<core::String>((core::List<core::int> list) → asy::FutureOr<core::String> => list.{core::Iterable::fold}<asy::FutureOr<core::String>>("", (asy::FutureOr<core::String> x, core::int y) → asy::FutureOr<core::String> => invalid-expression "pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart:23:120: Error: The method '+' isn't defined for the class 'FutureOr<String>'.
  - 'FutureOr' is from 'dart:async'.
diff --git a/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart.strong.transformed.expect
index 7879329..6181d32 100644
--- a/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart.strong.transformed.expect
@@ -23,7 +23,7 @@
 static method make(core::int x) → asy::Future<core::int>
   return asy::Future::•<core::int>(() → core::int => x);
 static method test() → dynamic {
-  core::Iterable<asy::Future<core::int>> list = <core::int>[1, 2, 3].{core::Iterable::map}<asy::Future<core::int>>(#C1);
+  core::Iterable<asy::Future<core::int>> list = <core::int>[1, 2, 3].{core::Iterable::map}<asy::Future<core::int>>(self::make);
   asy::Future<core::List<core::int>> results = asy::Future::wait<core::int>(list);
   asy::Future<core::String> results2 = results.{asy::Future::then}<core::String>((core::List<core::int> list) → asy::FutureOr<core::String> => list.{core::Iterable::fold}<asy::FutureOr<core::String>>("", (asy::FutureOr<core::String> x, core::int y) → asy::FutureOr<core::String> => invalid-expression "pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart:23:120: Error: The method '+' isn't defined for the class 'FutureOr<String>'.
  - 'FutureOr' is from 'dart:async'.
diff --git a/pkg/front_end/testcases/inference/generic_methods_nested_generic_instantiation.dart.strong.expect b/pkg/front_end/testcases/inference/generic_methods_nested_generic_instantiation.dart.strong.expect
index b711dbc..260f1f1 100644
--- a/pkg/front_end/testcases/inference/generic_methods_nested_generic_instantiation.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_nested_generic_instantiation.dart.strong.expect
@@ -1,6 +1,7 @@
 library test;
 import self as self;
 import "dart:core" as core;
+import "dart:math" as math;
 
 import "dart:math" as math;
 
@@ -19,6 +20,6 @@
 static method main() → dynamic {
   core::List<self::Trace> traces = <self::Trace>[];
   core::int longest = traces.{core::Iterable::map}<core::int>((self::Trace trace) → core::int {
-    return trace.{self::Trace::frames}.{core::Iterable::map}<core::int>((self::Frame frame) → core::int => frame.{self::Frame::location}.{core::String::length}).{core::Iterable::fold}<core::int>(0, #C1<core::int>);
-  }).{core::Iterable::fold}<core::int>(0, #C1<core::int>);
+    return trace.{self::Trace::frames}.{core::Iterable::map}<core::int>((self::Frame frame) → core::int => frame.{self::Frame::location}.{core::String::length}).{core::Iterable::fold}<core::int>(0, math::max<core::int>);
+  }).{core::Iterable::fold}<core::int>(0, math::max<core::int>);
 }
diff --git a/pkg/front_end/testcases/inference/generic_methods_nested_generic_instantiation.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/generic_methods_nested_generic_instantiation.dart.strong.transformed.expect
index b711dbc..260f1f1 100644
--- a/pkg/front_end/testcases/inference/generic_methods_nested_generic_instantiation.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_nested_generic_instantiation.dart.strong.transformed.expect
@@ -1,6 +1,7 @@
 library test;
 import self as self;
 import "dart:core" as core;
+import "dart:math" as math;
 
 import "dart:math" as math;
 
@@ -19,6 +20,6 @@
 static method main() → dynamic {
   core::List<self::Trace> traces = <self::Trace>[];
   core::int longest = traces.{core::Iterable::map}<core::int>((self::Trace trace) → core::int {
-    return trace.{self::Trace::frames}.{core::Iterable::map}<core::int>((self::Frame frame) → core::int => frame.{self::Frame::location}.{core::String::length}).{core::Iterable::fold}<core::int>(0, #C1<core::int>);
-  }).{core::Iterable::fold}<core::int>(0, #C1<core::int>);
+    return trace.{self::Trace::frames}.{core::Iterable::map}<core::int>((self::Frame frame) → core::int => frame.{self::Frame::location}.{core::String::length}).{core::Iterable::fold}<core::int>(0, math::max<core::int>);
+  }).{core::Iterable::fold}<core::int>(0, math::max<core::int>);
 }
diff --git a/pkg/front_end/testcases/inference/greatest_closure_multiple_params.dart.legacy.expect b/pkg/front_end/testcases/inference/greatest_closure_multiple_params.dart.legacy.expect
index 6b7ae6c..690aad1 100644
--- a/pkg/front_end/testcases/inference/greatest_closure_multiple_params.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/greatest_closure_multiple_params.dart.legacy.expect
@@ -6,8 +6,8 @@
   synthetic constructor •() → self::C<self::C::E>
     : super core::Object::•()
     ;
-  method sort([(self::C::E, self::C::E) → core::int compare = #C1]) → void {
-    self::C::sort2<dynamic>(this, let final dynamic #t1 = compare in #t1.==(null) ? #C2 : #t1);
+  method sort([(self::C::E, self::C::E) → core::int compare = null]) → void {
+    self::C::sort2<dynamic>(this, let final dynamic #t1 = compare in #t1.==(null) ? self::C::_compareAny : #t1);
   }
   static method _compareAny(dynamic a, dynamic b) → core::int {
     throw "unimplemented";
diff --git a/pkg/front_end/testcases/inference/greatest_closure_multiple_params.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/greatest_closure_multiple_params.dart.legacy.transformed.expect
index 6b7ae6c..690aad1 100644
--- a/pkg/front_end/testcases/inference/greatest_closure_multiple_params.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/greatest_closure_multiple_params.dart.legacy.transformed.expect
@@ -6,8 +6,8 @@
   synthetic constructor •() → self::C<self::C::E>
     : super core::Object::•()
     ;
-  method sort([(self::C::E, self::C::E) → core::int compare = #C1]) → void {
-    self::C::sort2<dynamic>(this, let final dynamic #t1 = compare in #t1.==(null) ? #C2 : #t1);
+  method sort([(self::C::E, self::C::E) → core::int compare = null]) → void {
+    self::C::sort2<dynamic>(this, let final dynamic #t1 = compare in #t1.==(null) ? self::C::_compareAny : #t1);
   }
   static method _compareAny(dynamic a, dynamic b) → core::int {
     throw "unimplemented";
diff --git a/pkg/front_end/testcases/inference/greatest_closure_multiple_params.dart.strong.expect b/pkg/front_end/testcases/inference/greatest_closure_multiple_params.dart.strong.expect
index 682f760..69d3ccf 100644
--- a/pkg/front_end/testcases/inference/greatest_closure_multiple_params.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/greatest_closure_multiple_params.dart.strong.expect
@@ -6,8 +6,8 @@
   synthetic constructor •() → self::C<self::C::E>
     : super core::Object::•()
     ;
-  method sort([(self::C::E, self::C::E) → core::int compare = #C1]) → void {
-    self::C::sort2<self::C::E>(this, let final (self::C::E, self::C::E) → core::int #t1 = compare in #t1.==(null) ?{(self::C::E, self::C::E) → core::int} #C2 : #t1);
+  method sort([(self::C::E, self::C::E) → core::int compare = null]) → void {
+    self::C::sort2<self::C::E>(this, let final (self::C::E, self::C::E) → core::int #t1 = compare in #t1.==(null) ?{(self::C::E, self::C::E) → core::int} self::C::_compareAny : #t1);
   }
   static method _compareAny(dynamic a, dynamic b) → core::int {
     throw "unimplemented";
diff --git a/pkg/front_end/testcases/inference/greatest_closure_multiple_params.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/greatest_closure_multiple_params.dart.strong.transformed.expect
index 682f760..69d3ccf 100644
--- a/pkg/front_end/testcases/inference/greatest_closure_multiple_params.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/greatest_closure_multiple_params.dart.strong.transformed.expect
@@ -6,8 +6,8 @@
   synthetic constructor •() → self::C<self::C::E>
     : super core::Object::•()
     ;
-  method sort([(self::C::E, self::C::E) → core::int compare = #C1]) → void {
-    self::C::sort2<self::C::E>(this, let final (self::C::E, self::C::E) → core::int #t1 = compare in #t1.==(null) ?{(self::C::E, self::C::E) → core::int} #C2 : #t1);
+  method sort([(self::C::E, self::C::E) → core::int compare = null]) → void {
+    self::C::sort2<self::C::E>(this, let final (self::C::E, self::C::E) → core::int #t1 = compare in #t1.==(null) ?{(self::C::E, self::C::E) → core::int} self::C::_compareAny : #t1);
   }
   static method _compareAny(dynamic a, dynamic b) → core::int {
     throw "unimplemented";
diff --git a/pkg/front_end/testcases/inference/infer_consts_transitively_2.dart.legacy.expect b/pkg/front_end/testcases/inference/infer_consts_transitively_2.dart.legacy.expect
index 1c3a024..80d04c7 100644
--- a/pkg/front_end/testcases/inference/infer_consts_transitively_2.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/infer_consts_transitively_2.dart.legacy.expect
@@ -1,32 +1,34 @@
 library test;
 import self as self;
 import "dart:core" as core;
+import "infer_consts_transitively_2_a.dart" as inf;
 
 import "org-dartlang-testcase:///infer_consts_transitively_2_a.dart";
 
-static const field dynamic m1 = #C1;
-static const field dynamic m2 = #C1;
+static const field dynamic m1 = inf::a1;
+static const field dynamic m2 = inf::a2;
 static method foo() → dynamic {
   core::int i;
-  i = #C1;
+  i = self::m1;
 }
 static method main() → dynamic {}
 
 library;
-import self as self2;
+import self as inf;
+import "infer_consts_transitively_2.dart" as self;
+import "infer_consts_transitively_2_b.dart" as inf2;
 
 import "org-dartlang-testcase:///infer_consts_transitively_2.dart";
 import "org-dartlang-testcase:///infer_consts_transitively_2_b.dart";
 
-static const field dynamic a1 = #C1;
-static const field dynamic a2 = #C1;
+static const field dynamic a1 = self::m2;
+static const field dynamic a2 = inf2::b1;
 static method main() → dynamic {}
 
 library;
-import self as self3;
-import "dart:core" as core;
+import self as inf2;
 
-static const field dynamic b1 = #C1;
+static const field dynamic b1 = 2;
 static method main() → dynamic {
-  #C1;
+  inf2::b1;
 }
diff --git a/pkg/front_end/testcases/inference/infer_consts_transitively_2.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/infer_consts_transitively_2.dart.legacy.transformed.expect
index 1c3a024..80d04c7 100644
--- a/pkg/front_end/testcases/inference/infer_consts_transitively_2.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_consts_transitively_2.dart.legacy.transformed.expect
@@ -1,32 +1,34 @@
 library test;
 import self as self;
 import "dart:core" as core;
+import "infer_consts_transitively_2_a.dart" as inf;
 
 import "org-dartlang-testcase:///infer_consts_transitively_2_a.dart";
 
-static const field dynamic m1 = #C1;
-static const field dynamic m2 = #C1;
+static const field dynamic m1 = inf::a1;
+static const field dynamic m2 = inf::a2;
 static method foo() → dynamic {
   core::int i;
-  i = #C1;
+  i = self::m1;
 }
 static method main() → dynamic {}
 
 library;
-import self as self2;
+import self as inf;
+import "infer_consts_transitively_2.dart" as self;
+import "infer_consts_transitively_2_b.dart" as inf2;
 
 import "org-dartlang-testcase:///infer_consts_transitively_2.dart";
 import "org-dartlang-testcase:///infer_consts_transitively_2_b.dart";
 
-static const field dynamic a1 = #C1;
-static const field dynamic a2 = #C1;
+static const field dynamic a1 = self::m2;
+static const field dynamic a2 = inf2::b1;
 static method main() → dynamic {}
 
 library;
-import self as self3;
-import "dart:core" as core;
+import self as inf2;
 
-static const field dynamic b1 = #C1;
+static const field dynamic b1 = 2;
 static method main() → dynamic {
-  #C1;
+  inf2::b1;
 }
diff --git a/pkg/front_end/testcases/inference/infer_consts_transitively_2.dart.strong.expect b/pkg/front_end/testcases/inference/infer_consts_transitively_2.dart.strong.expect
index 4c665e4..d434a70 100644
--- a/pkg/front_end/testcases/inference/infer_consts_transitively_2.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_consts_transitively_2.dart.strong.expect
@@ -1,33 +1,36 @@
 library test;
 import self as self;
 import "dart:core" as core;
+import "infer_consts_transitively_2_a.dart" as inf;
 
 import "org-dartlang-testcase:///infer_consts_transitively_2_a.dart";
 
-static const field core::int m1 = #C1;
-static const field core::int m2 = #C1;
+static const field core::int m1 = inf::a1;
+static const field core::int m2 = inf::a2;
 static method foo() → dynamic {
   core::int i;
-  i = #C1;
+  i = self::m1;
 }
 static method main() → dynamic {}
 
 library;
-import self as self2;
+import self as inf;
 import "dart:core" as core;
+import "infer_consts_transitively_2.dart" as self;
+import "infer_consts_transitively_2_b.dart" as inf2;
 
 import "org-dartlang-testcase:///infer_consts_transitively_2.dart";
 import "org-dartlang-testcase:///infer_consts_transitively_2_b.dart";
 
-static const field core::int a1 = #C1;
-static const field core::int a2 = #C1;
+static const field core::int a1 = self::m2;
+static const field core::int a2 = inf2::b1;
 static method main() → dynamic {}
 
 library;
-import self as self3;
+import self as inf2;
 import "dart:core" as core;
 
-static const field core::int b1 = #C1;
+static const field core::int b1 = 2;
 static method main() → dynamic {
-  #C1;
+  inf2::b1;
 }
diff --git a/pkg/front_end/testcases/inference/infer_consts_transitively_2.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_consts_transitively_2.dart.strong.transformed.expect
index 4c665e4..d434a70 100644
--- a/pkg/front_end/testcases/inference/infer_consts_transitively_2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_consts_transitively_2.dart.strong.transformed.expect
@@ -1,33 +1,36 @@
 library test;
 import self as self;
 import "dart:core" as core;
+import "infer_consts_transitively_2_a.dart" as inf;
 
 import "org-dartlang-testcase:///infer_consts_transitively_2_a.dart";
 
-static const field core::int m1 = #C1;
-static const field core::int m2 = #C1;
+static const field core::int m1 = inf::a1;
+static const field core::int m2 = inf::a2;
 static method foo() → dynamic {
   core::int i;
-  i = #C1;
+  i = self::m1;
 }
 static method main() → dynamic {}
 
 library;
-import self as self2;
+import self as inf;
 import "dart:core" as core;
+import "infer_consts_transitively_2.dart" as self;
+import "infer_consts_transitively_2_b.dart" as inf2;
 
 import "org-dartlang-testcase:///infer_consts_transitively_2.dart";
 import "org-dartlang-testcase:///infer_consts_transitively_2_b.dart";
 
-static const field core::int a1 = #C1;
-static const field core::int a2 = #C1;
+static const field core::int a1 = self::m2;
+static const field core::int a2 = inf2::b1;
 static method main() → dynamic {}
 
 library;
-import self as self3;
+import self as inf2;
 import "dart:core" as core;
 
-static const field core::int b1 = #C1;
+static const field core::int b1 = 2;
 static method main() → dynamic {
-  #C1;
+  inf2::b1;
 }
diff --git a/pkg/front_end/testcases/inference/infer_consts_transitively_2_a.dart.legacy.expect b/pkg/front_end/testcases/inference/infer_consts_transitively_2_a.dart.legacy.expect
index f731106..6fa0ac1 100644
--- a/pkg/front_end/testcases/inference/infer_consts_transitively_2_a.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/infer_consts_transitively_2_a.dart.legacy.expect
@@ -1,32 +1,34 @@
 library;
 import self as self;
+import "infer_consts_transitively_2.dart" as test;
+import "infer_consts_transitively_2_b.dart" as inf;
 
 import "org-dartlang-testcase:///infer_consts_transitively_2.dart";
 import "org-dartlang-testcase:///infer_consts_transitively_2_b.dart";
 
-static const field dynamic a1 = #C1;
-static const field dynamic a2 = #C1;
+static const field dynamic a1 = test::m2;
+static const field dynamic a2 = inf::b1;
 static method main() → dynamic {}
 
 library test;
-import self as self2;
+import self as test;
 import "dart:core" as core;
+import "infer_consts_transitively_2_a.dart" as self;
 
 import "org-dartlang-testcase:///infer_consts_transitively_2_a.dart";
 
-static const field dynamic m1 = #C1;
-static const field dynamic m2 = #C1;
+static const field dynamic m1 = self::a1;
+static const field dynamic m2 = self::a2;
 static method foo() → dynamic {
   core::int i;
-  i = #C1;
+  i = test::m1;
 }
 static method main() → dynamic {}
 
 library;
-import self as self3;
-import "dart:core" as core;
+import self as inf;
 
-static const field dynamic b1 = #C1;
+static const field dynamic b1 = 2;
 static method main() → dynamic {
-  #C1;
+  inf::b1;
 }
diff --git a/pkg/front_end/testcases/inference/infer_consts_transitively_2_a.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/infer_consts_transitively_2_a.dart.legacy.transformed.expect
index f731106..6fa0ac1 100644
--- a/pkg/front_end/testcases/inference/infer_consts_transitively_2_a.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_consts_transitively_2_a.dart.legacy.transformed.expect
@@ -1,32 +1,34 @@
 library;
 import self as self;
+import "infer_consts_transitively_2.dart" as test;
+import "infer_consts_transitively_2_b.dart" as inf;
 
 import "org-dartlang-testcase:///infer_consts_transitively_2.dart";
 import "org-dartlang-testcase:///infer_consts_transitively_2_b.dart";
 
-static const field dynamic a1 = #C1;
-static const field dynamic a2 = #C1;
+static const field dynamic a1 = test::m2;
+static const field dynamic a2 = inf::b1;
 static method main() → dynamic {}
 
 library test;
-import self as self2;
+import self as test;
 import "dart:core" as core;
+import "infer_consts_transitively_2_a.dart" as self;
 
 import "org-dartlang-testcase:///infer_consts_transitively_2_a.dart";
 
-static const field dynamic m1 = #C1;
-static const field dynamic m2 = #C1;
+static const field dynamic m1 = self::a1;
+static const field dynamic m2 = self::a2;
 static method foo() → dynamic {
   core::int i;
-  i = #C1;
+  i = test::m1;
 }
 static method main() → dynamic {}
 
 library;
-import self as self3;
-import "dart:core" as core;
+import self as inf;
 
-static const field dynamic b1 = #C1;
+static const field dynamic b1 = 2;
 static method main() → dynamic {
-  #C1;
+  inf::b1;
 }
diff --git a/pkg/front_end/testcases/inference/infer_consts_transitively_2_a.dart.strong.expect b/pkg/front_end/testcases/inference/infer_consts_transitively_2_a.dart.strong.expect
index 9bb3a83..f548afe 100644
--- a/pkg/front_end/testcases/inference/infer_consts_transitively_2_a.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_consts_transitively_2_a.dart.strong.expect
@@ -1,33 +1,36 @@
 library;
 import self as self;
 import "dart:core" as core;
+import "infer_consts_transitively_2.dart" as test;
+import "infer_consts_transitively_2_b.dart" as inf;
 
 import "org-dartlang-testcase:///infer_consts_transitively_2.dart";
 import "org-dartlang-testcase:///infer_consts_transitively_2_b.dart";
 
-static const field core::int a1 = #C1;
-static const field core::int a2 = #C1;
+static const field core::int a1 = test::m2;
+static const field core::int a2 = inf::b1;
 static method main() → dynamic {}
 
 library test;
-import self as self2;
+import self as test;
 import "dart:core" as core;
+import "infer_consts_transitively_2_a.dart" as self;
 
 import "org-dartlang-testcase:///infer_consts_transitively_2_a.dart";
 
-static const field core::int m1 = #C1;
-static const field core::int m2 = #C1;
+static const field core::int m1 = self::a1;
+static const field core::int m2 = self::a2;
 static method foo() → dynamic {
   core::int i;
-  i = #C1;
+  i = test::m1;
 }
 static method main() → dynamic {}
 
 library;
-import self as self3;
+import self as inf;
 import "dart:core" as core;
 
-static const field core::int b1 = #C1;
+static const field core::int b1 = 2;
 static method main() → dynamic {
-  #C1;
+  inf::b1;
 }
diff --git a/pkg/front_end/testcases/inference/infer_consts_transitively_2_a.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_consts_transitively_2_a.dart.strong.transformed.expect
index 9bb3a83..f548afe 100644
--- a/pkg/front_end/testcases/inference/infer_consts_transitively_2_a.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_consts_transitively_2_a.dart.strong.transformed.expect
@@ -1,33 +1,36 @@
 library;
 import self as self;
 import "dart:core" as core;
+import "infer_consts_transitively_2.dart" as test;
+import "infer_consts_transitively_2_b.dart" as inf;
 
 import "org-dartlang-testcase:///infer_consts_transitively_2.dart";
 import "org-dartlang-testcase:///infer_consts_transitively_2_b.dart";
 
-static const field core::int a1 = #C1;
-static const field core::int a2 = #C1;
+static const field core::int a1 = test::m2;
+static const field core::int a2 = inf::b1;
 static method main() → dynamic {}
 
 library test;
-import self as self2;
+import self as test;
 import "dart:core" as core;
+import "infer_consts_transitively_2_a.dart" as self;
 
 import "org-dartlang-testcase:///infer_consts_transitively_2_a.dart";
 
-static const field core::int m1 = #C1;
-static const field core::int m2 = #C1;
+static const field core::int m1 = self::a1;
+static const field core::int m2 = self::a2;
 static method foo() → dynamic {
   core::int i;
-  i = #C1;
+  i = test::m1;
 }
 static method main() → dynamic {}
 
 library;
-import self as self3;
+import self as inf;
 import "dart:core" as core;
 
-static const field core::int b1 = #C1;
+static const field core::int b1 = 2;
 static method main() → dynamic {
-  #C1;
+  inf::b1;
 }
diff --git a/pkg/front_end/testcases/inference/infer_consts_transitively_2_b.dart.legacy.expect b/pkg/front_end/testcases/inference/infer_consts_transitively_2_b.dart.legacy.expect
index fc64344..335fe8e 100644
--- a/pkg/front_end/testcases/inference/infer_consts_transitively_2_b.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/infer_consts_transitively_2_b.dart.legacy.expect
@@ -1,8 +1,7 @@
 library;
 import self as self;
-import "dart:core" as core;
 
-static const field dynamic b1 = #C1;
+static const field dynamic b1 = 2;
 static method main() → dynamic {
-  #C1;
+  self::b1;
 }
diff --git a/pkg/front_end/testcases/inference/infer_consts_transitively_2_b.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/infer_consts_transitively_2_b.dart.legacy.transformed.expect
index fc64344..335fe8e 100644
--- a/pkg/front_end/testcases/inference/infer_consts_transitively_2_b.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_consts_transitively_2_b.dart.legacy.transformed.expect
@@ -1,8 +1,7 @@
 library;
 import self as self;
-import "dart:core" as core;
 
-static const field dynamic b1 = #C1;
+static const field dynamic b1 = 2;
 static method main() → dynamic {
-  #C1;
+  self::b1;
 }
diff --git a/pkg/front_end/testcases/inference/infer_consts_transitively_2_b.dart.strong.expect b/pkg/front_end/testcases/inference/infer_consts_transitively_2_b.dart.strong.expect
index a660ffa..b60ae23 100644
--- a/pkg/front_end/testcases/inference/infer_consts_transitively_2_b.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_consts_transitively_2_b.dart.strong.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-static const field core::int b1 = #C1;
+static const field core::int b1 = 2;
 static method main() → dynamic {
-  #C1;
+  self::b1;
 }
diff --git a/pkg/front_end/testcases/inference/infer_consts_transitively_2_b.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_consts_transitively_2_b.dart.strong.transformed.expect
index a660ffa..b60ae23 100644
--- a/pkg/front_end/testcases/inference/infer_consts_transitively_2_b.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_consts_transitively_2_b.dart.strong.transformed.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-static const field core::int b1 = #C1;
+static const field core::int b1 = 2;
 static method main() → dynamic {
-  #C1;
+  self::b1;
 }
diff --git a/pkg/front_end/testcases/inference/infer_consts_transitively_b.dart.legacy.expect b/pkg/front_end/testcases/inference/infer_consts_transitively_b.dart.legacy.expect
index fc64344..335fe8e 100644
--- a/pkg/front_end/testcases/inference/infer_consts_transitively_b.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/infer_consts_transitively_b.dart.legacy.expect
@@ -1,8 +1,7 @@
 library;
 import self as self;
-import "dart:core" as core;
 
-static const field dynamic b1 = #C1;
+static const field dynamic b1 = 2;
 static method main() → dynamic {
-  #C1;
+  self::b1;
 }
diff --git a/pkg/front_end/testcases/inference/infer_consts_transitively_b.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/infer_consts_transitively_b.dart.legacy.transformed.expect
index fc64344..335fe8e 100644
--- a/pkg/front_end/testcases/inference/infer_consts_transitively_b.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_consts_transitively_b.dart.legacy.transformed.expect
@@ -1,8 +1,7 @@
 library;
 import self as self;
-import "dart:core" as core;
 
-static const field dynamic b1 = #C1;
+static const field dynamic b1 = 2;
 static method main() → dynamic {
-  #C1;
+  self::b1;
 }
diff --git a/pkg/front_end/testcases/inference/infer_consts_transitively_b.dart.strong.expect b/pkg/front_end/testcases/inference/infer_consts_transitively_b.dart.strong.expect
index a660ffa..b60ae23 100644
--- a/pkg/front_end/testcases/inference/infer_consts_transitively_b.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_consts_transitively_b.dart.strong.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-static const field core::int b1 = #C1;
+static const field core::int b1 = 2;
 static method main() → dynamic {
-  #C1;
+  self::b1;
 }
diff --git a/pkg/front_end/testcases/inference/infer_consts_transitively_b.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_consts_transitively_b.dart.strong.transformed.expect
index a660ffa..b60ae23 100644
--- a/pkg/front_end/testcases/inference/infer_consts_transitively_b.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_consts_transitively_b.dart.strong.transformed.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-static const field core::int b1 = #C1;
+static const field core::int b1 = 2;
 static method main() → dynamic {
-  #C1;
+  self::b1;
 }
diff --git a/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.legacy.expect b/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.legacy.expect
index cc0c2cb..7004d74 100644
--- a/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.legacy.expect
@@ -27,9 +27,9 @@
     ;
 }
 static field dynamic a = new self::A::•();
-static field dynamic b = new self::B::•(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 33, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))));
-static field dynamic c1 = <dynamic>[throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 33, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)))];
-static field dynamic c2 = #C3;
+static field dynamic b = new self::B::•(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#x, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
+static field dynamic c1 = <dynamic>[throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#x, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))];
+static field dynamic c2 = const <dynamic>[];
 static field dynamic d = <dynamic, dynamic>{"a": "b"};
 static field dynamic e = let final dynamic #t1 = new self::A::•() in let final dynamic #t2 = #t1.x = 3 in #t1;
 static field dynamic f = 2.+(3);
diff --git a/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.legacy.transformed.expect
index cc0c2cb..7004d74 100644
--- a/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.legacy.transformed.expect
@@ -27,9 +27,9 @@
     ;
 }
 static field dynamic a = new self::A::•();
-static field dynamic b = new self::B::•(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 33, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))));
-static field dynamic c1 = <dynamic>[throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 33, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)))];
-static field dynamic c2 = #C3;
+static field dynamic b = new self::B::•(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#x, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
+static field dynamic c1 = <dynamic>[throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#x, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))];
+static field dynamic c2 = const <dynamic>[];
 static field dynamic d = <dynamic, dynamic>{"a": "b"};
 static field dynamic e = let final dynamic #t1 = new self::A::•() in let final dynamic #t2 = #t1.x = 3 in #t1;
 static field dynamic f = 2.+(3);
diff --git a/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.strong.expect b/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.strong.expect
index 6814aa5..4002d85 100644
--- a/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.strong.expect
@@ -108,7 +108,7 @@
 static field core::List<dynamic> c1 = <dynamic>[invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:21:34: Error: Getter not found: 'x'.
   /*error:UNDEFINED_IDENTIFIER*/ x
                                  ^"];
-static field core::List<dynamic> c2 = #C1;
+static field core::List<dynamic> c2 = const <dynamic>[];
 static field core::Map<dynamic, dynamic> d = <dynamic, dynamic>{"a": "b"};
 static field self::A e = let final self::A #t1 = new self::A::•() in let final dynamic #t2 = #t1.{self::A::x} = 3 in #t1;
 static field core::int f = 2.{core::num::+}(3);
diff --git a/pkg/front_end/testcases/inference/infer_generic_method_type_named.dart.legacy.expect b/pkg/front_end/testcases/inference/infer_generic_method_type_named.dart.legacy.expect
index 2db32b7..75d1692 100644
--- a/pkg/front_end/testcases/inference/infer_generic_method_type_named.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/infer_generic_method_type_named.dart.legacy.expect
@@ -6,7 +6,7 @@
   synthetic constructor •() → self::C
     : super core::Object::•()
     ;
-  method m<T extends core::Object = dynamic>(core::int a, {core::String b = #C1, self::C::m::T c = #C1}) → self::C::m::T
+  method m<T extends core::Object = dynamic>(core::int a, {core::String b = null, self::C::m::T c = null}) → self::C::m::T
     return null;
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/inference/infer_generic_method_type_named.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/infer_generic_method_type_named.dart.legacy.transformed.expect
index 2db32b7..75d1692 100644
--- a/pkg/front_end/testcases/inference/infer_generic_method_type_named.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_generic_method_type_named.dart.legacy.transformed.expect
@@ -6,7 +6,7 @@
   synthetic constructor •() → self::C
     : super core::Object::•()
     ;
-  method m<T extends core::Object = dynamic>(core::int a, {core::String b = #C1, self::C::m::T c = #C1}) → self::C::m::T
+  method m<T extends core::Object = dynamic>(core::int a, {core::String b = null, self::C::m::T c = null}) → self::C::m::T
     return null;
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/inference/infer_generic_method_type_named.dart.strong.expect b/pkg/front_end/testcases/inference/infer_generic_method_type_named.dart.strong.expect
index 225e611..5346e26 100644
--- a/pkg/front_end/testcases/inference/infer_generic_method_type_named.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_generic_method_type_named.dart.strong.expect
@@ -6,7 +6,7 @@
   synthetic constructor •() → self::C
     : super core::Object::•()
     ;
-  method m<T extends core::Object = dynamic>(core::int a, {core::String b = #C1, self::C::m::T c = #C1}) → self::C::m::T
+  method m<T extends core::Object = dynamic>(core::int a, {core::String b = null, self::C::m::T c = null}) → self::C::m::T
     return null;
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/inference/infer_generic_method_type_named.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_generic_method_type_named.dart.strong.transformed.expect
index 225e611..5346e26 100644
--- a/pkg/front_end/testcases/inference/infer_generic_method_type_named.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_generic_method_type_named.dart.strong.transformed.expect
@@ -6,7 +6,7 @@
   synthetic constructor •() → self::C
     : super core::Object::•()
     ;
-  method m<T extends core::Object = dynamic>(core::int a, {core::String b = #C1, self::C::m::T c = #C1}) → self::C::m::T
+  method m<T extends core::Object = dynamic>(core::int a, {core::String b = null, self::C::m::T c = null}) → self::C::m::T
     return null;
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/inference/infer_generic_method_type_positional.dart.legacy.expect b/pkg/front_end/testcases/inference/infer_generic_method_type_positional.dart.legacy.expect
index b490bba..550bac7 100644
--- a/pkg/front_end/testcases/inference/infer_generic_method_type_positional.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/infer_generic_method_type_positional.dart.legacy.expect
@@ -6,7 +6,7 @@
   synthetic constructor •() → self::C
     : super core::Object::•()
     ;
-  method m<T extends core::Object = dynamic>(core::int a, [self::C::m::T b = #C1]) → self::C::m::T
+  method m<T extends core::Object = dynamic>(core::int a, [self::C::m::T b = null]) → self::C::m::T
     return null;
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/inference/infer_generic_method_type_positional.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/infer_generic_method_type_positional.dart.legacy.transformed.expect
index b490bba..550bac7 100644
--- a/pkg/front_end/testcases/inference/infer_generic_method_type_positional.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_generic_method_type_positional.dart.legacy.transformed.expect
@@ -6,7 +6,7 @@
   synthetic constructor •() → self::C
     : super core::Object::•()
     ;
-  method m<T extends core::Object = dynamic>(core::int a, [self::C::m::T b = #C1]) → self::C::m::T
+  method m<T extends core::Object = dynamic>(core::int a, [self::C::m::T b = null]) → self::C::m::T
     return null;
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/inference/infer_generic_method_type_positional.dart.strong.expect b/pkg/front_end/testcases/inference/infer_generic_method_type_positional.dart.strong.expect
index 56157c3..07c895a 100644
--- a/pkg/front_end/testcases/inference/infer_generic_method_type_positional.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_generic_method_type_positional.dart.strong.expect
@@ -6,7 +6,7 @@
   synthetic constructor •() → self::C
     : super core::Object::•()
     ;
-  method m<T extends core::Object = dynamic>(core::int a, [self::C::m::T b = #C1]) → self::C::m::T
+  method m<T extends core::Object = dynamic>(core::int a, [self::C::m::T b = null]) → self::C::m::T
     return null;
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/inference/infer_generic_method_type_positional.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_generic_method_type_positional.dart.strong.transformed.expect
index 56157c3..07c895a 100644
--- a/pkg/front_end/testcases/inference/infer_generic_method_type_positional.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_generic_method_type_positional.dart.strong.transformed.expect
@@ -6,7 +6,7 @@
   synthetic constructor •() → self::C
     : super core::Object::•()
     ;
-  method m<T extends core::Object = dynamic>(core::int a, [self::C::m::T b = #C1]) → self::C::m::T
+  method m<T extends core::Object = dynamic>(core::int a, [self::C::m::T b = null]) → self::C::m::T
     return null;
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/inference/infer_generic_method_type_positional2.dart.legacy.expect b/pkg/front_end/testcases/inference/infer_generic_method_type_positional2.dart.legacy.expect
index 291e297..cca0705 100644
--- a/pkg/front_end/testcases/inference/infer_generic_method_type_positional2.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/infer_generic_method_type_positional2.dart.legacy.expect
@@ -6,7 +6,7 @@
   synthetic constructor •() → self::C
     : super core::Object::•()
     ;
-  method m<T extends core::Object = dynamic>(core::int a, [core::String b = #C1, self::C::m::T c = #C1]) → self::C::m::T
+  method m<T extends core::Object = dynamic>(core::int a, [core::String b = null, self::C::m::T c = null]) → self::C::m::T
     return null;
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/inference/infer_generic_method_type_positional2.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/infer_generic_method_type_positional2.dart.legacy.transformed.expect
index 291e297..cca0705 100644
--- a/pkg/front_end/testcases/inference/infer_generic_method_type_positional2.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_generic_method_type_positional2.dart.legacy.transformed.expect
@@ -6,7 +6,7 @@
   synthetic constructor •() → self::C
     : super core::Object::•()
     ;
-  method m<T extends core::Object = dynamic>(core::int a, [core::String b = #C1, self::C::m::T c = #C1]) → self::C::m::T
+  method m<T extends core::Object = dynamic>(core::int a, [core::String b = null, self::C::m::T c = null]) → self::C::m::T
     return null;
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/inference/infer_generic_method_type_positional2.dart.strong.expect b/pkg/front_end/testcases/inference/infer_generic_method_type_positional2.dart.strong.expect
index e0f264d..2eacb46 100644
--- a/pkg/front_end/testcases/inference/infer_generic_method_type_positional2.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_generic_method_type_positional2.dart.strong.expect
@@ -6,7 +6,7 @@
   synthetic constructor •() → self::C
     : super core::Object::•()
     ;
-  method m<T extends core::Object = dynamic>(core::int a, [core::String b = #C1, self::C::m::T c = #C1]) → self::C::m::T
+  method m<T extends core::Object = dynamic>(core::int a, [core::String b = null, self::C::m::T c = null]) → self::C::m::T
     return null;
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/inference/infer_generic_method_type_positional2.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_generic_method_type_positional2.dart.strong.transformed.expect
index e0f264d..2eacb46 100644
--- a/pkg/front_end/testcases/inference/infer_generic_method_type_positional2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_generic_method_type_positional2.dart.strong.transformed.expect
@@ -6,7 +6,7 @@
   synthetic constructor •() → self::C
     : super core::Object::•()
     ;
-  method m<T extends core::Object = dynamic>(core::int a, [core::String b = #C1, self::C::m::T c = #C1]) → self::C::m::T
+  method m<T extends core::Object = dynamic>(core::int a, [core::String b = null, self::C::m::T c = null]) → self::C::m::T
     return null;
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/inference/infer_local_function_referenced_before_declaration.dart.legacy.expect b/pkg/front_end/testcases/inference/infer_local_function_referenced_before_declaration.dart.legacy.expect
index 6c9df39..a11e748 100644
--- a/pkg/front_end/testcases/inference/infer_local_function_referenced_before_declaration.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/infer_local_function_referenced_before_declaration.dart.legacy.expect
@@ -18,7 +18,7 @@
 
 static method test() → dynamic {
   function f() → dynamic
-    return throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 32, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#g, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   {
     invalid-expression "pkg/front_end/testcases/inference/infer_local_function_referenced_before_declaration.dart:14:3: Error: Can't declare 'g' because it was already used in this scope.
   g() => 0;
diff --git a/pkg/front_end/testcases/inference/infer_local_function_referenced_before_declaration.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/infer_local_function_referenced_before_declaration.dart.legacy.transformed.expect
index 6c9df39..a11e748 100644
--- a/pkg/front_end/testcases/inference/infer_local_function_referenced_before_declaration.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_local_function_referenced_before_declaration.dart.legacy.transformed.expect
@@ -18,7 +18,7 @@
 
 static method test() → dynamic {
   function f() → dynamic
-    return throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 32, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#g, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   {
     invalid-expression "pkg/front_end/testcases/inference/infer_local_function_referenced_before_declaration.dart:14:3: Error: Can't declare 'g' because it was already used in this scope.
   g() => 0;
diff --git a/pkg/front_end/testcases/inference/infer_method_missing_params.dart.legacy.expect b/pkg/front_end/testcases/inference/infer_method_missing_params.dart.legacy.expect
index 3aa34a7..5337a40 100644
--- a/pkg/front_end/testcases/inference/infer_method_missing_params.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/infer_method_missing_params.dart.legacy.expect
@@ -17,8 +17,8 @@
     : super core::Object::•()
     ;
   abstract method f(core::int x, core::int y) → core::int;
-  abstract method g(core::int x, [core::int y = #C1]) → core::int;
-  abstract method h(core::int x, {core::int y = #C1}) → core::int;
+  abstract method g(core::int x, [core::int y = null]) → core::int;
+  abstract method h(core::int x, {core::int y = null}) → core::int;
 }
 abstract class B extends core::Object {
   synthetic constructor •() → self::B
@@ -33,7 +33,7 @@
     : super core::Object::•()
     ;
   abstract method f(dynamic x, dynamic y) → dynamic;
-  abstract method g(dynamic x, [dynamic y = #C1]) → dynamic;
-  abstract method h(dynamic x, {dynamic y = #C1}) → dynamic;
+  abstract method g(dynamic x, [dynamic y = null]) → dynamic;
+  abstract method h(dynamic x, {dynamic y = null}) → dynamic;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_method_missing_params.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/infer_method_missing_params.dart.legacy.transformed.expect
index 3aa34a7..5337a40 100644
--- a/pkg/front_end/testcases/inference/infer_method_missing_params.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_method_missing_params.dart.legacy.transformed.expect
@@ -17,8 +17,8 @@
     : super core::Object::•()
     ;
   abstract method f(core::int x, core::int y) → core::int;
-  abstract method g(core::int x, [core::int y = #C1]) → core::int;
-  abstract method h(core::int x, {core::int y = #C1}) → core::int;
+  abstract method g(core::int x, [core::int y = null]) → core::int;
+  abstract method h(core::int x, {core::int y = null}) → core::int;
 }
 abstract class B extends core::Object {
   synthetic constructor •() → self::B
@@ -33,7 +33,7 @@
     : super core::Object::•()
     ;
   abstract method f(dynamic x, dynamic y) → dynamic;
-  abstract method g(dynamic x, [dynamic y = #C1]) → dynamic;
-  abstract method h(dynamic x, {dynamic y = #C1}) → dynamic;
+  abstract method g(dynamic x, [dynamic y = null]) → dynamic;
+  abstract method h(dynamic x, {dynamic y = null}) → dynamic;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_method_missing_params.dart.strong.expect b/pkg/front_end/testcases/inference/infer_method_missing_params.dart.strong.expect
index 068268c..f4717a8 100644
--- a/pkg/front_end/testcases/inference/infer_method_missing_params.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_method_missing_params.dart.strong.expect
@@ -32,8 +32,8 @@
     : super core::Object::•()
     ;
   abstract method f(core::int x, core::int y) → core::int;
-  abstract method g(core::int x, [core::int y = #C1]) → core::int;
-  abstract method h(core::int x, {core::int y = #C1}) → core::int;
+  abstract method g(core::int x, [core::int y = null]) → core::int;
+  abstract method h(core::int x, {core::int y = null}) → core::int;
 }
 abstract class B extends core::Object {
   synthetic constructor •() → self::B
@@ -48,7 +48,7 @@
     : super core::Object::•()
     ;
   abstract method f(core::int x, dynamic y) → core::int;
-  abstract method g(core::int x, [dynamic y = #C1]) → core::int;
-  abstract method h(core::int x, {dynamic y = #C1}) → core::int;
+  abstract method g(core::int x, [dynamic y = null]) → core::int;
+  abstract method h(core::int x, {dynamic y = null}) → core::int;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_statics_transitively2.dart.legacy.expect b/pkg/front_end/testcases/inference/infer_statics_transitively2.dart.legacy.expect
index 4bc4950..7ebf828 100644
--- a/pkg/front_end/testcases/inference/infer_statics_transitively2.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/infer_statics_transitively2.dart.legacy.expect
@@ -2,9 +2,9 @@
 import self as self;
 import "dart:core" as core;
 
-static const field dynamic x1 = #C1;
+static const field dynamic x1 = 1;
 static final field dynamic x2 = 1;
-static final field dynamic y1 = #C1;
+static final field dynamic y1 = self::x1;
 static final field dynamic y2 = self::x2;
 static method foo() → dynamic {
   core::int i;
diff --git a/pkg/front_end/testcases/inference/infer_statics_transitively2.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/infer_statics_transitively2.dart.legacy.transformed.expect
index 4bc4950..7ebf828 100644
--- a/pkg/front_end/testcases/inference/infer_statics_transitively2.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_statics_transitively2.dart.legacy.transformed.expect
@@ -2,9 +2,9 @@
 import self as self;
 import "dart:core" as core;
 
-static const field dynamic x1 = #C1;
+static const field dynamic x1 = 1;
 static final field dynamic x2 = 1;
-static final field dynamic y1 = #C1;
+static final field dynamic y1 = self::x1;
 static final field dynamic y2 = self::x2;
 static method foo() → dynamic {
   core::int i;
diff --git a/pkg/front_end/testcases/inference/infer_statics_transitively2.dart.strong.expect b/pkg/front_end/testcases/inference/infer_statics_transitively2.dart.strong.expect
index a097050..3a215e1 100644
--- a/pkg/front_end/testcases/inference/infer_statics_transitively2.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_statics_transitively2.dart.strong.expect
@@ -2,9 +2,9 @@
 import self as self;
 import "dart:core" as core;
 
-static const field core::int x1 = #C1;
+static const field core::int x1 = 1;
 static final field core::int x2 = 1;
-static final field core::int y1 = #C1;
+static final field core::int y1 = self::x1;
 static final field core::int y2 = self::x2;
 static method foo() → dynamic {
   core::int i;
diff --git a/pkg/front_end/testcases/inference/infer_statics_transitively2.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_statics_transitively2.dart.strong.transformed.expect
index a097050..3a215e1 100644
--- a/pkg/front_end/testcases/inference/infer_statics_transitively2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_statics_transitively2.dart.strong.transformed.expect
@@ -2,9 +2,9 @@
 import self as self;
 import "dart:core" as core;
 
-static const field core::int x1 = #C1;
+static const field core::int x1 = 1;
 static final field core::int x2 = 1;
-static final field core::int y1 = #C1;
+static final field core::int y1 = self::x1;
 static final field core::int y2 = self::x2;
 static method foo() → dynamic {
   core::int i;
diff --git a/pkg/front_end/testcases/inference/infer_statics_transitively3.dart.legacy.expect b/pkg/front_end/testcases/inference/infer_statics_transitively3.dart.legacy.expect
index d091eeb..b5b71b0 100644
--- a/pkg/front_end/testcases/inference/infer_statics_transitively3.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/infer_statics_transitively3.dart.legacy.expect
@@ -1,35 +1,36 @@
 library test;
 import self as self;
 import "dart:core" as core;
+import "infer_statics_transitively3_a.dart" as inf;
 
 import "org-dartlang-testcase:///infer_statics_transitively3_a.dart";
 import "org-dartlang-testcase:///infer_statics_transitively3_a.dart" as p;
 
-static const field dynamic t1 = #C1;
-static const field dynamic t2 = #C1;
-static const field dynamic t3 = #C2;
-static const field dynamic t4 = #C3;
-static const field dynamic t5 = #C4;
-static const field dynamic t6 = #C4;
+static const field dynamic t1 = 1;
+static const field dynamic t2 = self::t1;
+static const field dynamic t3 = inf::a1;
+static const field dynamic t4 = inf::a2;
+static const field dynamic t5 = inf::A::a3;
+static const field dynamic t6 = inf::A::a3;
 static method foo() → dynamic {
   core::int i;
-  i = #C1;
-  i = #C1;
-  i = #C2;
-  i = #C3;
+  i = self::t1;
+  i = self::t2;
+  i = self::t3;
+  i = self::t4;
 }
 static method main() → dynamic {}
 
 library;
-import self as self2;
+import self as inf;
 import "dart:core" as core;
 
 class A extends core::Object {
-  static const field dynamic a3 = #C4;
-  synthetic constructor •() → self2::A
+  static const field dynamic a3 = null;
+  synthetic constructor •() → inf::A
     : super core::Object::•()
     ;
 }
-static const field dynamic a1 = #C2;
-static const field dynamic a2 = #C3;
+static const field dynamic a1 = 3;
+static const field dynamic a2 = 4;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_statics_transitively3.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/infer_statics_transitively3.dart.legacy.transformed.expect
index d091eeb..b5b71b0 100644
--- a/pkg/front_end/testcases/inference/infer_statics_transitively3.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_statics_transitively3.dart.legacy.transformed.expect
@@ -1,35 +1,36 @@
 library test;
 import self as self;
 import "dart:core" as core;
+import "infer_statics_transitively3_a.dart" as inf;
 
 import "org-dartlang-testcase:///infer_statics_transitively3_a.dart";
 import "org-dartlang-testcase:///infer_statics_transitively3_a.dart" as p;
 
-static const field dynamic t1 = #C1;
-static const field dynamic t2 = #C1;
-static const field dynamic t3 = #C2;
-static const field dynamic t4 = #C3;
-static const field dynamic t5 = #C4;
-static const field dynamic t6 = #C4;
+static const field dynamic t1 = 1;
+static const field dynamic t2 = self::t1;
+static const field dynamic t3 = inf::a1;
+static const field dynamic t4 = inf::a2;
+static const field dynamic t5 = inf::A::a3;
+static const field dynamic t6 = inf::A::a3;
 static method foo() → dynamic {
   core::int i;
-  i = #C1;
-  i = #C1;
-  i = #C2;
-  i = #C3;
+  i = self::t1;
+  i = self::t2;
+  i = self::t3;
+  i = self::t4;
 }
 static method main() → dynamic {}
 
 library;
-import self as self2;
+import self as inf;
 import "dart:core" as core;
 
 class A extends core::Object {
-  static const field dynamic a3 = #C4;
-  synthetic constructor •() → self2::A
+  static const field dynamic a3 = null;
+  synthetic constructor •() → inf::A
     : super core::Object::•()
     ;
 }
-static const field dynamic a1 = #C2;
-static const field dynamic a2 = #C3;
+static const field dynamic a1 = 3;
+static const field dynamic a2 = 4;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_statics_transitively3.dart.strong.expect b/pkg/front_end/testcases/inference/infer_statics_transitively3.dart.strong.expect
index d7ac775..d80f5c4 100644
--- a/pkg/front_end/testcases/inference/infer_statics_transitively3.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_statics_transitively3.dart.strong.expect
@@ -1,35 +1,36 @@
 library test;
 import self as self;
 import "dart:core" as core;
+import "infer_statics_transitively3_a.dart" as inf;
 
 import "org-dartlang-testcase:///infer_statics_transitively3_a.dart";
 import "org-dartlang-testcase:///infer_statics_transitively3_a.dart" as p;
 
-static const field core::int t1 = #C1;
-static const field core::int t2 = #C1;
-static const field core::int t3 = #C2;
-static const field core::int t4 = #C3;
-static const field dynamic t5 = #C4;
-static const field dynamic t6 = #C4;
+static const field core::int t1 = 1;
+static const field core::int t2 = self::t1;
+static const field core::int t3 = inf::a1;
+static const field core::int t4 = inf::a2;
+static const field dynamic t5 = inf::A::a3;
+static const field dynamic t6 = inf::A::a3;
 static method foo() → dynamic {
   core::int i;
-  i = #C1;
-  i = #C1;
-  i = #C2;
-  i = #C3;
+  i = self::t1;
+  i = self::t2;
+  i = self::t3;
+  i = self::t4;
 }
 static method main() → dynamic {}
 
 library;
-import self as self2;
+import self as inf;
 import "dart:core" as core;
 
 class A extends core::Object {
-  static const field dynamic a3 = #C4;
-  synthetic constructor •() → self2::A
+  static const field dynamic a3 = null;
+  synthetic constructor •() → inf::A
     : super core::Object::•()
     ;
 }
-static const field core::int a1 = #C2;
-static const field core::int a2 = #C3;
+static const field core::int a1 = 3;
+static const field core::int a2 = 4;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_statics_transitively3.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_statics_transitively3.dart.strong.transformed.expect
index d7ac775..d80f5c4 100644
--- a/pkg/front_end/testcases/inference/infer_statics_transitively3.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_statics_transitively3.dart.strong.transformed.expect
@@ -1,35 +1,36 @@
 library test;
 import self as self;
 import "dart:core" as core;
+import "infer_statics_transitively3_a.dart" as inf;
 
 import "org-dartlang-testcase:///infer_statics_transitively3_a.dart";
 import "org-dartlang-testcase:///infer_statics_transitively3_a.dart" as p;
 
-static const field core::int t1 = #C1;
-static const field core::int t2 = #C1;
-static const field core::int t3 = #C2;
-static const field core::int t4 = #C3;
-static const field dynamic t5 = #C4;
-static const field dynamic t6 = #C4;
+static const field core::int t1 = 1;
+static const field core::int t2 = self::t1;
+static const field core::int t3 = inf::a1;
+static const field core::int t4 = inf::a2;
+static const field dynamic t5 = inf::A::a3;
+static const field dynamic t6 = inf::A::a3;
 static method foo() → dynamic {
   core::int i;
-  i = #C1;
-  i = #C1;
-  i = #C2;
-  i = #C3;
+  i = self::t1;
+  i = self::t2;
+  i = self::t3;
+  i = self::t4;
 }
 static method main() → dynamic {}
 
 library;
-import self as self2;
+import self as inf;
 import "dart:core" as core;
 
 class A extends core::Object {
-  static const field dynamic a3 = #C4;
-  synthetic constructor •() → self2::A
+  static const field dynamic a3 = null;
+  synthetic constructor •() → inf::A
     : super core::Object::•()
     ;
 }
-static const field core::int a1 = #C2;
-static const field core::int a2 = #C3;
+static const field core::int a1 = 3;
+static const field core::int a2 = 4;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_statics_transitively3_a.dart.legacy.expect b/pkg/front_end/testcases/inference/infer_statics_transitively3_a.dart.legacy.expect
index a426fd2..6029fc0 100644
--- a/pkg/front_end/testcases/inference/infer_statics_transitively3_a.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/infer_statics_transitively3_a.dart.legacy.expect
@@ -3,11 +3,11 @@
 import "dart:core" as core;
 
 class A extends core::Object {
-  static const field dynamic a3 = #C1;
+  static const field dynamic a3 = null;
   synthetic constructor •() → self::A
     : super core::Object::•()
     ;
 }
-static const field dynamic a1 = #C2;
-static const field dynamic a2 = #C3;
+static const field dynamic a1 = 3;
+static const field dynamic a2 = 4;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_statics_transitively3_a.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/infer_statics_transitively3_a.dart.legacy.transformed.expect
index a426fd2..6029fc0 100644
--- a/pkg/front_end/testcases/inference/infer_statics_transitively3_a.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_statics_transitively3_a.dart.legacy.transformed.expect
@@ -3,11 +3,11 @@
 import "dart:core" as core;
 
 class A extends core::Object {
-  static const field dynamic a3 = #C1;
+  static const field dynamic a3 = null;
   synthetic constructor •() → self::A
     : super core::Object::•()
     ;
 }
-static const field dynamic a1 = #C2;
-static const field dynamic a2 = #C3;
+static const field dynamic a1 = 3;
+static const field dynamic a2 = 4;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_statics_transitively3_a.dart.strong.expect b/pkg/front_end/testcases/inference/infer_statics_transitively3_a.dart.strong.expect
index 9c61125..536b87f 100644
--- a/pkg/front_end/testcases/inference/infer_statics_transitively3_a.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_statics_transitively3_a.dart.strong.expect
@@ -3,11 +3,11 @@
 import "dart:core" as core;
 
 class A extends core::Object {
-  static const field dynamic a3 = #C1;
+  static const field dynamic a3 = null;
   synthetic constructor •() → self::A
     : super core::Object::•()
     ;
 }
-static const field core::int a1 = #C2;
-static const field core::int a2 = #C3;
+static const field core::int a1 = 3;
+static const field core::int a2 = 4;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_statics_transitively3_a.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_statics_transitively3_a.dart.strong.transformed.expect
index 9c61125..536b87f 100644
--- a/pkg/front_end/testcases/inference/infer_statics_transitively3_a.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_statics_transitively3_a.dart.strong.transformed.expect
@@ -3,11 +3,11 @@
 import "dart:core" as core;
 
 class A extends core::Object {
-  static const field dynamic a3 = #C1;
+  static const field dynamic a3 = null;
   synthetic constructor •() → self::A
     : super core::Object::•()
     ;
 }
-static const field core::int a1 = #C2;
-static const field core::int a2 = #C3;
+static const field core::int a1 = 3;
+static const field core::int a2 = 4;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_statics_with_method_invocations.dart.legacy.expect b/pkg/front_end/testcases/inference/infer_statics_with_method_invocations.dart.legacy.expect
index 1e6c8a5..1303bcc 100644
--- a/pkg/front_end/testcases/inference/infer_statics_with_method_invocations.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/infer_statics_with_method_invocations.dart.legacy.expect
@@ -23,5 +23,5 @@
 import self as inf;
 import "dart:core" as core;
 
-static method m3(core::String a, core::String b, [dynamic a1 = #C1, dynamic a2 = #C1]) → dynamic {}
+static method m3(core::String a, core::String b, [dynamic a1 = null, dynamic a2 = null]) → dynamic {}
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_statics_with_method_invocations.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/infer_statics_with_method_invocations.dart.legacy.transformed.expect
index 1e6c8a5..1303bcc 100644
--- a/pkg/front_end/testcases/inference/infer_statics_with_method_invocations.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_statics_with_method_invocations.dart.legacy.transformed.expect
@@ -23,5 +23,5 @@
 import self as inf;
 import "dart:core" as core;
 
-static method m3(core::String a, core::String b, [dynamic a1 = #C1, dynamic a2 = #C1]) → dynamic {}
+static method m3(core::String a, core::String b, [dynamic a1 = null, dynamic a2 = null]) → dynamic {}
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_statics_with_method_invocations.dart.strong.expect b/pkg/front_end/testcases/inference/infer_statics_with_method_invocations.dart.strong.expect
index 1e6c8a5..1303bcc 100644
--- a/pkg/front_end/testcases/inference/infer_statics_with_method_invocations.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_statics_with_method_invocations.dart.strong.expect
@@ -23,5 +23,5 @@
 import self as inf;
 import "dart:core" as core;
 
-static method m3(core::String a, core::String b, [dynamic a1 = #C1, dynamic a2 = #C1]) → dynamic {}
+static method m3(core::String a, core::String b, [dynamic a1 = null, dynamic a2 = null]) → dynamic {}
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_statics_with_method_invocations.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_statics_with_method_invocations.dart.strong.transformed.expect
index 1e6c8a5..1303bcc 100644
--- a/pkg/front_end/testcases/inference/infer_statics_with_method_invocations.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_statics_with_method_invocations.dart.strong.transformed.expect
@@ -23,5 +23,5 @@
 import self as inf;
 import "dart:core" as core;
 
-static method m3(core::String a, core::String b, [dynamic a1 = #C1, dynamic a2 = #C1]) → dynamic {}
+static method m3(core::String a, core::String b, [dynamic a1 = null, dynamic a2 = null]) → dynamic {}
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_statics_with_method_invocations_a.dart.legacy.expect b/pkg/front_end/testcases/inference/infer_statics_with_method_invocations_a.dart.legacy.expect
index 582c5d6..60b40d3 100644
--- a/pkg/front_end/testcases/inference/infer_statics_with_method_invocations_a.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/infer_statics_with_method_invocations_a.dart.legacy.expect
@@ -2,5 +2,5 @@
 import self as self;
 import "dart:core" as core;
 
-static method m3(core::String a, core::String b, [dynamic a1 = #C1, dynamic a2 = #C1]) → dynamic {}
+static method m3(core::String a, core::String b, [dynamic a1 = null, dynamic a2 = null]) → dynamic {}
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_statics_with_method_invocations_a.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/infer_statics_with_method_invocations_a.dart.legacy.transformed.expect
index 582c5d6..60b40d3 100644
--- a/pkg/front_end/testcases/inference/infer_statics_with_method_invocations_a.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_statics_with_method_invocations_a.dart.legacy.transformed.expect
@@ -2,5 +2,5 @@
 import self as self;
 import "dart:core" as core;
 
-static method m3(core::String a, core::String b, [dynamic a1 = #C1, dynamic a2 = #C1]) → dynamic {}
+static method m3(core::String a, core::String b, [dynamic a1 = null, dynamic a2 = null]) → dynamic {}
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_statics_with_method_invocations_a.dart.strong.expect b/pkg/front_end/testcases/inference/infer_statics_with_method_invocations_a.dart.strong.expect
index 582c5d6..60b40d3 100644
--- a/pkg/front_end/testcases/inference/infer_statics_with_method_invocations_a.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_statics_with_method_invocations_a.dart.strong.expect
@@ -2,5 +2,5 @@
 import self as self;
 import "dart:core" as core;
 
-static method m3(core::String a, core::String b, [dynamic a1 = #C1, dynamic a2 = #C1]) → dynamic {}
+static method m3(core::String a, core::String b, [dynamic a1 = null, dynamic a2 = null]) → dynamic {}
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_statics_with_method_invocations_a.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_statics_with_method_invocations_a.dart.strong.transformed.expect
index 582c5d6..60b40d3 100644
--- a/pkg/front_end/testcases/inference/infer_statics_with_method_invocations_a.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_statics_with_method_invocations_a.dart.strong.transformed.expect
@@ -2,5 +2,5 @@
 import self as self;
 import "dart:core" as core;
 
-static method m3(core::String a, core::String b, [dynamic a1 = #C1, dynamic a2 = #C1]) → dynamic {}
+static method m3(core::String a, core::String b, [dynamic a1 = null, dynamic a2 = null]) → dynamic {}
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/inferred_initializing_formal_checks_default_value.dart.legacy.expect b/pkg/front_end/testcases/inference/inferred_initializing_formal_checks_default_value.dart.legacy.expect
index 0c96ce5..e441e9c 100644
--- a/pkg/front_end/testcases/inference/inferred_initializing_formal_checks_default_value.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/inferred_initializing_formal_checks_default_value.dart.legacy.expect
@@ -4,7 +4,7 @@
 
 class Foo extends core::Object {
   field dynamic x = 1;
-  constructor •([dynamic x = #C1]) → self::Foo
+  constructor •([dynamic x = "1"]) → self::Foo
     : self::Foo::x = x, super core::Object::•()
     ;
 }
diff --git a/pkg/front_end/testcases/inference/inferred_initializing_formal_checks_default_value.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/inferred_initializing_formal_checks_default_value.dart.legacy.transformed.expect
index 0c96ce5..e441e9c 100644
--- a/pkg/front_end/testcases/inference/inferred_initializing_formal_checks_default_value.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/inferred_initializing_formal_checks_default_value.dart.legacy.transformed.expect
@@ -4,7 +4,7 @@
 
 class Foo extends core::Object {
   field dynamic x = 1;
-  constructor •([dynamic x = #C1]) → self::Foo
+  constructor •([dynamic x = "1"]) → self::Foo
     : self::Foo::x = x, super core::Object::•()
     ;
 }
diff --git a/pkg/front_end/testcases/inference/inferred_initializing_formal_checks_default_value.dart.strong.expect b/pkg/front_end/testcases/inference/inferred_initializing_formal_checks_default_value.dart.strong.expect
index c54647b..b340fe0 100644
--- a/pkg/front_end/testcases/inference/inferred_initializing_formal_checks_default_value.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/inferred_initializing_formal_checks_default_value.dart.strong.expect
@@ -12,10 +12,10 @@
 
 class Foo extends core::Object {
   field core::int x = 1;
-  constructor •([core::int x = invalid-expression "pkg/front_end/testcases/inference/inferred_initializing_formal_checks_default_value.dart:10:46: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+  constructor •([core::int x = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/inferred_initializing_formal_checks_default_value.dart:10:46: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
 Try changing the type of the left hand side, or casting the right hand side to 'int'.
   Foo([this.x = /*error:INVALID_ASSIGNMENT*/ \"1\"]);
-                                             ^"]) → self::Foo
+                                             ^" in "1" as{TypeError} core::int]) → self::Foo
     : self::Foo::x = x, super core::Object::•()
     ;
 }
diff --git a/pkg/front_end/testcases/inference/inferred_initializing_formal_checks_default_value.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/inferred_initializing_formal_checks_default_value.dart.strong.transformed.expect
index c54647b..b340fe0 100644
--- a/pkg/front_end/testcases/inference/inferred_initializing_formal_checks_default_value.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/inferred_initializing_formal_checks_default_value.dart.strong.transformed.expect
@@ -12,10 +12,10 @@
 
 class Foo extends core::Object {
   field core::int x = 1;
-  constructor •([core::int x = invalid-expression "pkg/front_end/testcases/inference/inferred_initializing_formal_checks_default_value.dart:10:46: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+  constructor •([core::int x = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/inferred_initializing_formal_checks_default_value.dart:10:46: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
 Try changing the type of the left hand side, or casting the right hand side to 'int'.
   Foo([this.x = /*error:INVALID_ASSIGNMENT*/ \"1\"]);
-                                             ^"]) → self::Foo
+                                             ^" in "1" as{TypeError} core::int]) → self::Foo
     : self::Foo::x = x, super core::Object::•()
     ;
 }
diff --git a/pkg/front_end/testcases/inference/inferred_type_from_top_level_executable_tear_off.dart.legacy.expect b/pkg/front_end/testcases/inference/inferred_type_from_top_level_executable_tear_off.dart.legacy.expect
index bf478dd..89c2a99 100644
--- a/pkg/front_end/testcases/inference/inferred_type_from_top_level_executable_tear_off.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_from_top_level_executable_tear_off.dart.legacy.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-static field dynamic v = #C1;
+static field dynamic v = core::print;
 static method main() → dynamic {
   self::v;
 }
diff --git a/pkg/front_end/testcases/inference/inferred_type_from_top_level_executable_tear_off.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/inferred_type_from_top_level_executable_tear_off.dart.legacy.transformed.expect
index bf478dd..89c2a99 100644
--- a/pkg/front_end/testcases/inference/inferred_type_from_top_level_executable_tear_off.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_from_top_level_executable_tear_off.dart.legacy.transformed.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-static field dynamic v = #C1;
+static field dynamic v = core::print;
 static method main() → dynamic {
   self::v;
 }
diff --git a/pkg/front_end/testcases/inference/inferred_type_from_top_level_executable_tear_off.dart.strong.expect b/pkg/front_end/testcases/inference/inferred_type_from_top_level_executable_tear_off.dart.strong.expect
index 8cd60ec..97300eb 100644
--- a/pkg/front_end/testcases/inference/inferred_type_from_top_level_executable_tear_off.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_from_top_level_executable_tear_off.dart.strong.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-static field (core::Object) → void v = #C1;
+static field (core::Object) → void v = core::print;
 static method main() → dynamic {
   self::v;
 }
diff --git a/pkg/front_end/testcases/inference/inferred_type_from_top_level_executable_tear_off.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/inferred_type_from_top_level_executable_tear_off.dart.strong.transformed.expect
index 8cd60ec..97300eb 100644
--- a/pkg/front_end/testcases/inference/inferred_type_from_top_level_executable_tear_off.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_from_top_level_executable_tear_off.dart.strong.transformed.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-static field (core::Object) → void v = #C1;
+static field (core::Object) → void v = core::print;
 static method main() → dynamic {
   self::v;
 }
diff --git a/pkg/front_end/testcases/inference/inferred_type_is_enum.dart.legacy.expect b/pkg/front_end/testcases/inference/inferred_type_is_enum.dart.legacy.expect
index 8b3bc9c..f91ac8f 100644
--- a/pkg/front_end/testcases/inference/inferred_type_is_enum.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_is_enum.dart.legacy.expect
@@ -5,15 +5,15 @@
 class E extends core::Object {
   final field core::int index;
   final field core::String _name;
-  static const field core::List<self::E> values = #C4;
-  static const field self::E v1 = #C3;
+  static const field core::List<self::E> values = const <self::E>[self::E::v1];
+  static const field self::E v1 = const self::E::•(0, "E.v1");
   const constructor •(core::int index, core::String _name) → self::E
     : self::E::index = index, self::E::_name = _name, super core::Object::•()
     ;
   method toString() → core::String
     return this.{=self::E::_name};
 }
-static final field dynamic x = #C3;
+static final field dynamic x = self::E::v1;
 static method main() → dynamic {
   self::x;
 }
diff --git a/pkg/front_end/testcases/inference/inferred_type_is_enum.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/inferred_type_is_enum.dart.legacy.transformed.expect
index 8b3bc9c..f91ac8f 100644
--- a/pkg/front_end/testcases/inference/inferred_type_is_enum.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_is_enum.dart.legacy.transformed.expect
@@ -5,15 +5,15 @@
 class E extends core::Object {
   final field core::int index;
   final field core::String _name;
-  static const field core::List<self::E> values = #C4;
-  static const field self::E v1 = #C3;
+  static const field core::List<self::E> values = const <self::E>[self::E::v1];
+  static const field self::E v1 = const self::E::•(0, "E.v1");
   const constructor •(core::int index, core::String _name) → self::E
     : self::E::index = index, self::E::_name = _name, super core::Object::•()
     ;
   method toString() → core::String
     return this.{=self::E::_name};
 }
-static final field dynamic x = #C3;
+static final field dynamic x = self::E::v1;
 static method main() → dynamic {
   self::x;
 }
diff --git a/pkg/front_end/testcases/inference/inferred_type_is_enum.dart.strong.expect b/pkg/front_end/testcases/inference/inferred_type_is_enum.dart.strong.expect
index 3b48d0c..290276b 100644
--- a/pkg/front_end/testcases/inference/inferred_type_is_enum.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_is_enum.dart.strong.expect
@@ -5,15 +5,15 @@
 class E extends core::Object {
   final field core::int index;
   final field core::String _name;
-  static const field core::List<self::E> values = #C4;
-  static const field self::E v1 = #C3;
+  static const field core::List<self::E> values = const <self::E>[self::E::v1];
+  static const field self::E v1 = const self::E::•(0, "E.v1");
   const constructor •(core::int index, core::String _name) → self::E
     : self::E::index = index, self::E::_name = _name, super core::Object::•()
     ;
   method toString() → core::String
     return this.{=self::E::_name};
 }
-static final field self::E x = #C3;
+static final field self::E x = self::E::v1;
 static method main() → dynamic {
   self::x;
 }
diff --git a/pkg/front_end/testcases/inference/inferred_type_is_enum.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/inferred_type_is_enum.dart.strong.transformed.expect
index 3b48d0c..290276b 100644
--- a/pkg/front_end/testcases/inference/inferred_type_is_enum.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_is_enum.dart.strong.transformed.expect
@@ -5,15 +5,15 @@
 class E extends core::Object {
   final field core::int index;
   final field core::String _name;
-  static const field core::List<self::E> values = #C4;
-  static const field self::E v1 = #C3;
+  static const field core::List<self::E> values = const <self::E>[self::E::v1];
+  static const field self::E v1 = const self::E::•(0, "E.v1");
   const constructor •(core::int index, core::String _name) → self::E
     : self::E::index = index, self::E::_name = _name, super core::Object::•()
     ;
   method toString() → core::String
     return this.{=self::E::_name};
 }
-static final field self::E x = #C3;
+static final field self::E x = self::E::v1;
 static method main() → dynamic {
   self::x;
 }
diff --git a/pkg/front_end/testcases/inference/inferred_type_is_enum_values.dart.legacy.expect b/pkg/front_end/testcases/inference/inferred_type_is_enum_values.dart.legacy.expect
index 3f0cf50..33f8ee3 100644
--- a/pkg/front_end/testcases/inference/inferred_type_is_enum_values.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_is_enum_values.dart.legacy.expect
@@ -5,15 +5,15 @@
 class E extends core::Object {
   final field core::int index;
   final field core::String _name;
-  static const field core::List<self::E> values = #C4;
-  static const field self::E v1 = #C3;
+  static const field core::List<self::E> values = const <self::E>[self::E::v1];
+  static const field self::E v1 = const self::E::•(0, "E.v1");
   const constructor •(core::int index, core::String _name) → self::E
     : self::E::index = index, self::E::_name = _name, super core::Object::•()
     ;
   method toString() → core::String
     return this.{=self::E::_name};
 }
-static final field dynamic x = #C4;
+static final field dynamic x = self::E::values;
 static method main() → dynamic {
   self::x;
 }
diff --git a/pkg/front_end/testcases/inference/inferred_type_is_enum_values.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/inferred_type_is_enum_values.dart.legacy.transformed.expect
index 3f0cf50..33f8ee3 100644
--- a/pkg/front_end/testcases/inference/inferred_type_is_enum_values.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_is_enum_values.dart.legacy.transformed.expect
@@ -5,15 +5,15 @@
 class E extends core::Object {
   final field core::int index;
   final field core::String _name;
-  static const field core::List<self::E> values = #C4;
-  static const field self::E v1 = #C3;
+  static const field core::List<self::E> values = const <self::E>[self::E::v1];
+  static const field self::E v1 = const self::E::•(0, "E.v1");
   const constructor •(core::int index, core::String _name) → self::E
     : self::E::index = index, self::E::_name = _name, super core::Object::•()
     ;
   method toString() → core::String
     return this.{=self::E::_name};
 }
-static final field dynamic x = #C4;
+static final field dynamic x = self::E::values;
 static method main() → dynamic {
   self::x;
 }
diff --git a/pkg/front_end/testcases/inference/inferred_type_is_enum_values.dart.strong.expect b/pkg/front_end/testcases/inference/inferred_type_is_enum_values.dart.strong.expect
index 6bdff93..c8a8092 100644
--- a/pkg/front_end/testcases/inference/inferred_type_is_enum_values.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_is_enum_values.dart.strong.expect
@@ -5,15 +5,15 @@
 class E extends core::Object {
   final field core::int index;
   final field core::String _name;
-  static const field core::List<self::E> values = #C4;
-  static const field self::E v1 = #C3;
+  static const field core::List<self::E> values = const <self::E>[self::E::v1];
+  static const field self::E v1 = const self::E::•(0, "E.v1");
   const constructor •(core::int index, core::String _name) → self::E
     : self::E::index = index, self::E::_name = _name, super core::Object::•()
     ;
   method toString() → core::String
     return this.{=self::E::_name};
 }
-static final field core::List<self::E> x = #C4;
+static final field core::List<self::E> x = self::E::values;
 static method main() → dynamic {
   self::x;
 }
diff --git a/pkg/front_end/testcases/inference/inferred_type_is_enum_values.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/inferred_type_is_enum_values.dart.strong.transformed.expect
index 6bdff93..c8a8092 100644
--- a/pkg/front_end/testcases/inference/inferred_type_is_enum_values.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_is_enum_values.dart.strong.transformed.expect
@@ -5,15 +5,15 @@
 class E extends core::Object {
   final field core::int index;
   final field core::String _name;
-  static const field core::List<self::E> values = #C4;
-  static const field self::E v1 = #C3;
+  static const field core::List<self::E> values = const <self::E>[self::E::v1];
+  static const field self::E v1 = const self::E::•(0, "E.v1");
   const constructor •(core::int index, core::String _name) → self::E
     : self::E::index = index, self::E::_name = _name, super core::Object::•()
     ;
   method toString() → core::String
     return this.{=self::E::_name};
 }
-static final field core::List<self::E> x = #C4;
+static final field core::List<self::E> x = self::E::values;
 static method main() → dynamic {
   self::x;
 }
diff --git a/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type.dart.legacy.expect b/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type.dart.legacy.expect
index 300bee4..dd8b091 100644
--- a/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type.dart.legacy.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-static field dynamic v = <dynamic>[#C1, #C2];
+static field dynamic v = <dynamic>[self::f, self::g];
 static method f() → core::int
   return null;
 static method g() → core::String
diff --git a/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type.dart.legacy.transformed.expect
index 300bee4..dd8b091 100644
--- a/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type.dart.legacy.transformed.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-static field dynamic v = <dynamic>[#C1, #C2];
+static field dynamic v = <dynamic>[self::f, self::g];
 static method f() → core::int
   return null;
 static method g() → core::String
diff --git a/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type.dart.strong.expect b/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type.dart.strong.expect
index 0eec083..55d503c 100644
--- a/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type.dart.strong.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-static field core::List<() → core::Object> v = <() → core::Object>[#C1, #C2];
+static field core::List<() → core::Object> v = <() → core::Object>[self::f, self::g];
 static method f() → core::int
   return null;
 static method g() → core::String
diff --git a/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type.dart.strong.transformed.expect
index 0eec083..55d503c 100644
--- a/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type.dart.strong.transformed.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-static field core::List<() → core::Object> v = <() → core::Object>[#C1, #C2];
+static field core::List<() → core::Object> v = <() → core::Object>[self::f, self::g];
 static method f() → core::int
   return null;
 static method g() → core::String
diff --git a/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_function_typed_param.dart.legacy.expect b/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_function_typed_param.dart.legacy.expect
index d9c21d2..f4c89c0 100644
--- a/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_function_typed_param.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_function_typed_param.dart.legacy.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-static field dynamic v = <dynamic>[#C1, #C2];
+static field dynamic v = <dynamic>[self::f, self::g];
 static method f((core::String) → core::int x) → core::int
   return null;
 static method g((core::String) → core::int x) → core::String
diff --git a/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_function_typed_param.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_function_typed_param.dart.legacy.transformed.expect
index d9c21d2..f4c89c0 100644
--- a/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_function_typed_param.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_function_typed_param.dart.legacy.transformed.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-static field dynamic v = <dynamic>[#C1, #C2];
+static field dynamic v = <dynamic>[self::f, self::g];
 static method f((core::String) → core::int x) → core::int
   return null;
 static method g((core::String) → core::int x) → core::String
diff --git a/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_function_typed_param.dart.strong.expect b/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_function_typed_param.dart.strong.expect
index 3098dc9..0472a60 100644
--- a/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_function_typed_param.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_function_typed_param.dart.strong.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-static field core::List<((core::String) → core::int) → core::Object> v = <((core::String) → core::int) → core::Object>[#C1, #C2];
+static field core::List<((core::String) → core::int) → core::Object> v = <((core::String) → core::int) → core::Object>[self::f, self::g];
 static method f((core::String) → core::int x) → core::int
   return null;
 static method g((core::String) → core::int x) → core::String
diff --git a/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_function_typed_param.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_function_typed_param.dart.strong.transformed.expect
index 3098dc9..0472a60 100644
--- a/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_function_typed_param.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_function_typed_param.dart.strong.transformed.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-static field core::List<((core::String) → core::int) → core::Object> v = <((core::String) → core::int) → core::Object>[#C1, #C2];
+static field core::List<((core::String) → core::int) → core::Object> v = <((core::String) → core::int) → core::Object>[self::f, self::g];
 static method f((core::String) → core::int x) → core::int
   return null;
 static method g((core::String) → core::int x) → core::String
diff --git a/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_named_param.dart.legacy.expect b/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_named_param.dart.legacy.expect
index 4274031..db32f32 100644
--- a/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_named_param.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_named_param.dart.legacy.expect
@@ -2,10 +2,10 @@
 import self as self;
 import "dart:core" as core;
 
-static field dynamic v = <dynamic>[#C1, #C2];
-static method f({core::int x = #C3}) → core::int
+static field dynamic v = <dynamic>[self::f, self::g];
+static method f({core::int x = null}) → core::int
   return null;
-static method g({core::int x = #C3}) → core::String
+static method g({core::int x = null}) → core::String
   return null;
 static method main() → dynamic {
   self::v;
diff --git a/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_named_param.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_named_param.dart.legacy.transformed.expect
index 4274031..db32f32 100644
--- a/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_named_param.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_named_param.dart.legacy.transformed.expect
@@ -2,10 +2,10 @@
 import self as self;
 import "dart:core" as core;
 
-static field dynamic v = <dynamic>[#C1, #C2];
-static method f({core::int x = #C3}) → core::int
+static field dynamic v = <dynamic>[self::f, self::g];
+static method f({core::int x = null}) → core::int
   return null;
-static method g({core::int x = #C3}) → core::String
+static method g({core::int x = null}) → core::String
   return null;
 static method main() → dynamic {
   self::v;
diff --git a/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_named_param.dart.strong.expect b/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_named_param.dart.strong.expect
index e52a86f..301d19a 100644
--- a/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_named_param.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_named_param.dart.strong.expect
@@ -2,10 +2,10 @@
 import self as self;
 import "dart:core" as core;
 
-static field core::List<({x: core::int}) → core::Object> v = <({x: core::int}) → core::Object>[#C1, #C2];
-static method f({core::int x = #C3}) → core::int
+static field core::List<({x: core::int}) → core::Object> v = <({x: core::int}) → core::Object>[self::f, self::g];
+static method f({core::int x = null}) → core::int
   return null;
-static method g({core::int x = #C3}) → core::String
+static method g({core::int x = null}) → core::String
   return null;
 static method main() → dynamic {
   self::v;
diff --git a/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_named_param.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_named_param.dart.strong.transformed.expect
index e52a86f..301d19a 100644
--- a/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_named_param.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_named_param.dart.strong.transformed.expect
@@ -2,10 +2,10 @@
 import self as self;
 import "dart:core" as core;
 
-static field core::List<({x: core::int}) → core::Object> v = <({x: core::int}) → core::Object>[#C1, #C2];
-static method f({core::int x = #C3}) → core::int
+static field core::List<({x: core::int}) → core::Object> v = <({x: core::int}) → core::Object>[self::f, self::g];
+static method f({core::int x = null}) → core::int
   return null;
-static method g({core::int x = #C3}) → core::String
+static method g({core::int x = null}) → core::String
   return null;
 static method main() → dynamic {
   self::v;
diff --git a/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_positional_param.dart.legacy.expect b/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_positional_param.dart.legacy.expect
index 3c8fd35..aaa6d2b 100644
--- a/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_positional_param.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_positional_param.dart.legacy.expect
@@ -2,10 +2,10 @@
 import self as self;
 import "dart:core" as core;
 
-static field dynamic v = <dynamic>[#C1, #C2];
-static method f([core::int x = #C3]) → core::int
+static field dynamic v = <dynamic>[self::f, self::g];
+static method f([core::int x = null]) → core::int
   return null;
-static method g([core::int x = #C3]) → core::String
+static method g([core::int x = null]) → core::String
   return null;
 static method main() → dynamic {
   self::v;
diff --git a/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_positional_param.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_positional_param.dart.legacy.transformed.expect
index 3c8fd35..aaa6d2b 100644
--- a/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_positional_param.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_positional_param.dart.legacy.transformed.expect
@@ -2,10 +2,10 @@
 import self as self;
 import "dart:core" as core;
 
-static field dynamic v = <dynamic>[#C1, #C2];
-static method f([core::int x = #C3]) → core::int
+static field dynamic v = <dynamic>[self::f, self::g];
+static method f([core::int x = null]) → core::int
   return null;
-static method g([core::int x = #C3]) → core::String
+static method g([core::int x = null]) → core::String
   return null;
 static method main() → dynamic {
   self::v;
diff --git a/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_positional_param.dart.strong.expect b/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_positional_param.dart.strong.expect
index fdab7c9..8198998 100644
--- a/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_positional_param.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_positional_param.dart.strong.expect
@@ -2,10 +2,10 @@
 import self as self;
 import "dart:core" as core;
 
-static field core::List<([core::int]) → core::Object> v = <([core::int]) → core::Object>[#C1, #C2];
-static method f([core::int x = #C3]) → core::int
+static field core::List<([core::int]) → core::Object> v = <([core::int]) → core::Object>[self::f, self::g];
+static method f([core::int x = null]) → core::int
   return null;
-static method g([core::int x = #C3]) → core::String
+static method g([core::int x = null]) → core::String
   return null;
 static method main() → dynamic {
   self::v;
diff --git a/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_positional_param.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_positional_param.dart.strong.transformed.expect
index fdab7c9..8198998 100644
--- a/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_positional_param.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_positional_param.dart.strong.transformed.expect
@@ -2,10 +2,10 @@
 import self as self;
 import "dart:core" as core;
 
-static field core::List<([core::int]) → core::Object> v = <([core::int]) → core::Object>[#C1, #C2];
-static method f([core::int x = #C3]) → core::int
+static field core::List<([core::int]) → core::Object> v = <([core::int]) → core::Object>[self::f, self::g];
+static method f([core::int x = null]) → core::int
   return null;
-static method g([core::int x = #C3]) → core::String
+static method g([core::int x = null]) → core::String
   return null;
 static method main() → dynamic {
   self::v;
diff --git a/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_required_param.dart.legacy.expect b/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_required_param.dart.legacy.expect
index 80658c2..336cbf6 100644
--- a/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_required_param.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_required_param.dart.legacy.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-static field dynamic v = <dynamic>[#C1, #C2];
+static field dynamic v = <dynamic>[self::f, self::g];
 static method f(core::int x) → core::int
   return null;
 static method g(core::int x) → core::String
diff --git a/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_required_param.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_required_param.dart.legacy.transformed.expect
index 80658c2..336cbf6 100644
--- a/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_required_param.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_required_param.dart.legacy.transformed.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-static field dynamic v = <dynamic>[#C1, #C2];
+static field dynamic v = <dynamic>[self::f, self::g];
 static method f(core::int x) → core::int
   return null;
 static method g(core::int x) → core::String
diff --git a/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_required_param.dart.strong.expect b/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_required_param.dart.strong.expect
index fab6526..8e9941b 100644
--- a/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_required_param.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_required_param.dart.strong.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-static field core::List<(core::int) → core::Object> v = <(core::int) → core::Object>[#C1, #C2];
+static field core::List<(core::int) → core::Object> v = <(core::int) → core::Object>[self::f, self::g];
 static method f(core::int x) → core::int
   return null;
 static method g(core::int x) → core::String
diff --git a/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_required_param.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_required_param.dart.strong.transformed.expect
index fab6526..8e9941b 100644
--- a/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_required_param.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_uses_synthetic_function_type_required_param.dart.strong.transformed.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-static field core::List<(core::int) → core::Object> v = <(core::int) → core::Object>[#C1, #C2];
+static field core::List<(core::int) → core::Object> v = <(core::int) → core::Object>[self::f, self::g];
 static method f(core::int x) → core::int
   return null;
 static method g(core::int x) → core::String
diff --git a/pkg/front_end/testcases/inference/instantiate_tearoff.dart.legacy.expect b/pkg/front_end/testcases/inference/instantiate_tearoff.dart.legacy.expect
index 50ad111..d407e0c 100644
--- a/pkg/front_end/testcases/inference/instantiate_tearoff.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/instantiate_tearoff.dart.legacy.expect
@@ -26,9 +26,9 @@
   function h<T extends core::Object = dynamic>(T x) → T
     return x;
   (core::int) → core::int func;
-  func = #C1;
+  func = self::f;
   func = new self::C::•().f;
-  func = #C2;
+  func = self::C::g;
   func = h;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/instantiate_tearoff.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/instantiate_tearoff.dart.legacy.transformed.expect
index 50ad111..d407e0c 100644
--- a/pkg/front_end/testcases/inference/instantiate_tearoff.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/instantiate_tearoff.dart.legacy.transformed.expect
@@ -26,9 +26,9 @@
   function h<T extends core::Object = dynamic>(T x) → T
     return x;
   (core::int) → core::int func;
-  func = #C1;
+  func = self::f;
   func = new self::C::•().f;
-  func = #C2;
+  func = self::C::g;
   func = h;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/instantiate_tearoff.dart.strong.expect b/pkg/front_end/testcases/inference/instantiate_tearoff.dart.strong.expect
index 7b3d970..16af23e 100644
--- a/pkg/front_end/testcases/inference/instantiate_tearoff.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/instantiate_tearoff.dart.strong.expect
@@ -26,9 +26,9 @@
   function h<T extends core::Object = dynamic>(T x) → T
     return x;
   (core::int) → core::int func;
-  func = #C1<core::int>;
+  func = self::f<core::int>;
   func = new self::C::•().{self::C::f}<core::int>;
-  func = #C2<core::int>;
+  func = self::C::g<core::int>;
   func = h<core::int>;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/instantiate_tearoff.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/instantiate_tearoff.dart.strong.transformed.expect
index 7b3d970..16af23e 100644
--- a/pkg/front_end/testcases/inference/instantiate_tearoff.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/instantiate_tearoff.dart.strong.transformed.expect
@@ -26,9 +26,9 @@
   function h<T extends core::Object = dynamic>(T x) → T
     return x;
   (core::int) → core::int func;
-  func = #C1<core::int>;
+  func = self::f<core::int>;
   func = new self::C::•().{self::C::f}<core::int>;
-  func = #C2<core::int>;
+  func = self::C::g<core::int>;
   func = h<core::int>;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/lambda_does_not_have_propagated_type_hint.dart.legacy.expect b/pkg/front_end/testcases/inference/lambda_does_not_have_propagated_type_hint.dart.legacy.expect
index cc9fd95..6462bb8 100644
--- a/pkg/front_end/testcases/inference/lambda_does_not_have_propagated_type_hint.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/lambda_does_not_have_propagated_type_hint.dart.legacy.expect
@@ -3,7 +3,7 @@
 import "dart:core" as core;
 
 static method getListOfString() → core::List<core::String>
-  return #C1;
+  return const <core::String>[];
 static method foo() → void {
   core::List<dynamic> myList = self::getListOfString();
   myList.map((dynamic type) → dynamic => 42);
diff --git a/pkg/front_end/testcases/inference/lambda_does_not_have_propagated_type_hint.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/lambda_does_not_have_propagated_type_hint.dart.legacy.transformed.expect
index cc9fd95..6462bb8 100644
--- a/pkg/front_end/testcases/inference/lambda_does_not_have_propagated_type_hint.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/lambda_does_not_have_propagated_type_hint.dart.legacy.transformed.expect
@@ -3,7 +3,7 @@
 import "dart:core" as core;
 
 static method getListOfString() → core::List<core::String>
-  return #C1;
+  return const <core::String>[];
 static method foo() → void {
   core::List<dynamic> myList = self::getListOfString();
   myList.map((dynamic type) → dynamic => 42);
diff --git a/pkg/front_end/testcases/inference/lambda_does_not_have_propagated_type_hint.dart.strong.expect b/pkg/front_end/testcases/inference/lambda_does_not_have_propagated_type_hint.dart.strong.expect
index 6c6e5a9..1821742 100644
--- a/pkg/front_end/testcases/inference/lambda_does_not_have_propagated_type_hint.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/lambda_does_not_have_propagated_type_hint.dart.strong.expect
@@ -3,7 +3,7 @@
 import "dart:core" as core;
 
 static method getListOfString() → core::List<core::String>
-  return #C1;
+  return const <core::String>[];
 static method foo() → void {
   core::List<dynamic> myList = self::getListOfString();
   myList.{core::Iterable::map}<core::int>((dynamic type) → core::int => 42);
diff --git a/pkg/front_end/testcases/inference/lambda_does_not_have_propagated_type_hint.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/lambda_does_not_have_propagated_type_hint.dart.strong.transformed.expect
index 6c6e5a9..1821742 100644
--- a/pkg/front_end/testcases/inference/lambda_does_not_have_propagated_type_hint.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/lambda_does_not_have_propagated_type_hint.dart.strong.transformed.expect
@@ -3,7 +3,7 @@
 import "dart:core" as core;
 
 static method getListOfString() → core::List<core::String>
-  return #C1;
+  return const <core::String>[];
 static method foo() → void {
   core::List<dynamic> myList = self::getListOfString();
   myList.{core::Iterable::map}<core::int>((dynamic type) → core::int => 42);
diff --git a/pkg/front_end/testcases/inference/override_equals.dart.strong.expect b/pkg/front_end/testcases/inference/override_equals.dart.strong.expect
index 34c11cc..fe2d4a0 100644
--- a/pkg/front_end/testcases/inference/override_equals.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/override_equals.dart.strong.expect
@@ -6,7 +6,7 @@
   synthetic constructor •() → self::NullEquality
     : super core::Object::•()
     ;
-  @#C1
+  @core::override
   operator ==(core::Object other) → core::Null
     return null;
 }
diff --git a/pkg/front_end/testcases/inference/override_equals.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/override_equals.dart.strong.transformed.expect
index 34c11cc..fe2d4a0 100644
--- a/pkg/front_end/testcases/inference/override_equals.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/override_equals.dart.strong.transformed.expect
@@ -6,7 +6,7 @@
   synthetic constructor •() → self::NullEquality
     : super core::Object::•()
     ;
-  @#C1
+  @core::override
   operator ==(core::Object other) → core::Null
     return null;
 }
diff --git a/pkg/front_end/testcases/inference/parameter_defaults_downwards.dart.legacy.expect b/pkg/front_end/testcases/inference/parameter_defaults_downwards.dart.legacy.expect
index 15369d9..1edb995 100644
--- a/pkg/front_end/testcases/inference/parameter_defaults_downwards.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/parameter_defaults_downwards.dart.legacy.expect
@@ -2,11 +2,11 @@
 import self as self;
 import "dart:core" as core;
 
-static method optional_toplevel([core::List<core::int> x = #C1]) → void {}
-static method named_toplevel({core::List<core::int> x = #C1}) → void {}
+static method optional_toplevel([core::List<core::int> x = const <dynamic>[]]) → void {}
+static method named_toplevel({core::List<core::int> x = const <dynamic>[]}) → void {}
 static method main() → dynamic {
-  function optional_local([core::List<core::int> x = #C1]) → void {}
-  function named_local({core::List<core::int> x = #C1}) → void {}
-  dynamic optional_closure = ([core::List<core::int> x = #C1]) → dynamic {};
-  dynamic name_closure = ({core::List<core::int> x = #C1}) → dynamic {};
+  function optional_local([core::List<core::int> x = const <dynamic>[]]) → void {}
+  function named_local({core::List<core::int> x = const <dynamic>[]}) → void {}
+  dynamic optional_closure = ([core::List<core::int> x = const <dynamic>[]]) → dynamic {};
+  dynamic name_closure = ({core::List<core::int> x = const <dynamic>[]}) → dynamic {};
 }
diff --git a/pkg/front_end/testcases/inference/parameter_defaults_downwards.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/parameter_defaults_downwards.dart.legacy.transformed.expect
index 15369d9..1edb995 100644
--- a/pkg/front_end/testcases/inference/parameter_defaults_downwards.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/parameter_defaults_downwards.dart.legacy.transformed.expect
@@ -2,11 +2,11 @@
 import self as self;
 import "dart:core" as core;
 
-static method optional_toplevel([core::List<core::int> x = #C1]) → void {}
-static method named_toplevel({core::List<core::int> x = #C1}) → void {}
+static method optional_toplevel([core::List<core::int> x = const <dynamic>[]]) → void {}
+static method named_toplevel({core::List<core::int> x = const <dynamic>[]}) → void {}
 static method main() → dynamic {
-  function optional_local([core::List<core::int> x = #C1]) → void {}
-  function named_local({core::List<core::int> x = #C1}) → void {}
-  dynamic optional_closure = ([core::List<core::int> x = #C1]) → dynamic {};
-  dynamic name_closure = ({core::List<core::int> x = #C1}) → dynamic {};
+  function optional_local([core::List<core::int> x = const <dynamic>[]]) → void {}
+  function named_local({core::List<core::int> x = const <dynamic>[]}) → void {}
+  dynamic optional_closure = ([core::List<core::int> x = const <dynamic>[]]) → dynamic {};
+  dynamic name_closure = ({core::List<core::int> x = const <dynamic>[]}) → dynamic {};
 }
diff --git a/pkg/front_end/testcases/inference/parameter_defaults_downwards.dart.strong.expect b/pkg/front_end/testcases/inference/parameter_defaults_downwards.dart.strong.expect
index bf545b7..72a4648 100644
--- a/pkg/front_end/testcases/inference/parameter_defaults_downwards.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/parameter_defaults_downwards.dart.strong.expect
@@ -2,11 +2,11 @@
 import self as self;
 import "dart:core" as core;
 
-static method optional_toplevel([core::List<core::int> x = #C1]) → void {}
-static method named_toplevel({core::List<core::int> x = #C1}) → void {}
+static method optional_toplevel([core::List<core::int> x = const <core::int>[]]) → void {}
+static method named_toplevel({core::List<core::int> x = const <core::int>[]}) → void {}
 static method main() → dynamic {
-  function optional_local([core::List<core::int> x = #C1]) → void {}
-  function named_local({core::List<core::int> x = #C1}) → void {}
-  ([core::List<core::int>]) → core::Null optional_closure = ([core::List<core::int> x = #C1]) → core::Null {};
-  ({x: core::List<core::int>}) → core::Null name_closure = ({core::List<core::int> x = #C1}) → core::Null {};
+  function optional_local([core::List<core::int> x = const <core::int>[]]) → void {}
+  function named_local({core::List<core::int> x = const <core::int>[]}) → void {}
+  ([core::List<core::int>]) → core::Null optional_closure = ([core::List<core::int> x = const <core::int>[]]) → core::Null {};
+  ({x: core::List<core::int>}) → core::Null name_closure = ({core::List<core::int> x = const <core::int>[]}) → core::Null {};
 }
diff --git a/pkg/front_end/testcases/inference/parameter_defaults_downwards.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/parameter_defaults_downwards.dart.strong.transformed.expect
index bf545b7..72a4648 100644
--- a/pkg/front_end/testcases/inference/parameter_defaults_downwards.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/parameter_defaults_downwards.dart.strong.transformed.expect
@@ -2,11 +2,11 @@
 import self as self;
 import "dart:core" as core;
 
-static method optional_toplevel([core::List<core::int> x = #C1]) → void {}
-static method named_toplevel({core::List<core::int> x = #C1}) → void {}
+static method optional_toplevel([core::List<core::int> x = const <core::int>[]]) → void {}
+static method named_toplevel({core::List<core::int> x = const <core::int>[]}) → void {}
 static method main() → dynamic {
-  function optional_local([core::List<core::int> x = #C1]) → void {}
-  function named_local({core::List<core::int> x = #C1}) → void {}
-  ([core::List<core::int>]) → core::Null optional_closure = ([core::List<core::int> x = #C1]) → core::Null {};
-  ({x: core::List<core::int>}) → core::Null name_closure = ({core::List<core::int> x = #C1}) → core::Null {};
+  function optional_local([core::List<core::int> x = const <core::int>[]]) → void {}
+  function named_local({core::List<core::int> x = const <core::int>[]}) → void {}
+  ([core::List<core::int>]) → core::Null optional_closure = ([core::List<core::int> x = const <core::int>[]]) → core::Null {};
+  ({x: core::List<core::int>}) → core::Null name_closure = ({core::List<core::int> x = const <core::int>[]}) → core::Null {};
 }
diff --git a/pkg/front_end/testcases/inference/parameter_defaults_upwards.dart.legacy.expect b/pkg/front_end/testcases/inference/parameter_defaults_upwards.dart.legacy.expect
index df9cef2..2ec0b95 100644
--- a/pkg/front_end/testcases/inference/parameter_defaults_upwards.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/parameter_defaults_upwards.dart.legacy.expect
@@ -8,15 +8,15 @@
   constructor named(({x: self::C::T}) → void func) → self::C<self::C::T>
     : super core::Object::•() {}
 }
-static method optional_toplevel([dynamic x = #C2]) → void {}
-static method named_toplevel({dynamic x = #C2}) → void {}
+static method optional_toplevel([dynamic x = const <dynamic>[0]]) → void {}
+static method named_toplevel({dynamic x = const <dynamic>[0]}) → void {}
 static method main() → dynamic {
-  function optional_local([dynamic x = #C2]) → void {}
-  function named_local({dynamic x = #C2}) → void {}
-  dynamic c_optional_toplevel = new self::C::optional<dynamic>(#C3);
-  dynamic c_named_toplevel = new self::C::named<dynamic>(#C4);
+  function optional_local([dynamic x = const <dynamic>[0]]) → void {}
+  function named_local({dynamic x = const <dynamic>[0]}) → void {}
+  dynamic c_optional_toplevel = new self::C::optional<dynamic>(self::optional_toplevel);
+  dynamic c_named_toplevel = new self::C::named<dynamic>(self::named_toplevel);
   dynamic c_optional_local = new self::C::optional<dynamic>(optional_local);
   dynamic c_named_local = new self::C::named<dynamic>(named_local);
-  dynamic c_optional_closure = new self::C::optional<dynamic>(([dynamic x = #C2]) → dynamic {});
-  dynamic c_named_closure = new self::C::named<dynamic>(({dynamic x = #C2}) → dynamic {});
+  dynamic c_optional_closure = new self::C::optional<dynamic>(([dynamic x = const <dynamic>[0]]) → dynamic {});
+  dynamic c_named_closure = new self::C::named<dynamic>(({dynamic x = const <dynamic>[0]}) → dynamic {});
 }
diff --git a/pkg/front_end/testcases/inference/parameter_defaults_upwards.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/parameter_defaults_upwards.dart.legacy.transformed.expect
index df9cef2..2ec0b95 100644
--- a/pkg/front_end/testcases/inference/parameter_defaults_upwards.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/parameter_defaults_upwards.dart.legacy.transformed.expect
@@ -8,15 +8,15 @@
   constructor named(({x: self::C::T}) → void func) → self::C<self::C::T>
     : super core::Object::•() {}
 }
-static method optional_toplevel([dynamic x = #C2]) → void {}
-static method named_toplevel({dynamic x = #C2}) → void {}
+static method optional_toplevel([dynamic x = const <dynamic>[0]]) → void {}
+static method named_toplevel({dynamic x = const <dynamic>[0]}) → void {}
 static method main() → dynamic {
-  function optional_local([dynamic x = #C2]) → void {}
-  function named_local({dynamic x = #C2}) → void {}
-  dynamic c_optional_toplevel = new self::C::optional<dynamic>(#C3);
-  dynamic c_named_toplevel = new self::C::named<dynamic>(#C4);
+  function optional_local([dynamic x = const <dynamic>[0]]) → void {}
+  function named_local({dynamic x = const <dynamic>[0]}) → void {}
+  dynamic c_optional_toplevel = new self::C::optional<dynamic>(self::optional_toplevel);
+  dynamic c_named_toplevel = new self::C::named<dynamic>(self::named_toplevel);
   dynamic c_optional_local = new self::C::optional<dynamic>(optional_local);
   dynamic c_named_local = new self::C::named<dynamic>(named_local);
-  dynamic c_optional_closure = new self::C::optional<dynamic>(([dynamic x = #C2]) → dynamic {});
-  dynamic c_named_closure = new self::C::named<dynamic>(({dynamic x = #C2}) → dynamic {});
+  dynamic c_optional_closure = new self::C::optional<dynamic>(([dynamic x = const <dynamic>[0]]) → dynamic {});
+  dynamic c_named_closure = new self::C::named<dynamic>(({dynamic x = const <dynamic>[0]}) → dynamic {});
 }
diff --git a/pkg/front_end/testcases/inference/parameter_defaults_upwards.dart.strong.expect b/pkg/front_end/testcases/inference/parameter_defaults_upwards.dart.strong.expect
index 6d414a0..5d1cc0f 100644
--- a/pkg/front_end/testcases/inference/parameter_defaults_upwards.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/parameter_defaults_upwards.dart.strong.expect
@@ -8,15 +8,15 @@
   constructor named(({x: self::C::T}) → void func) → self::C<self::C::T>
     : super core::Object::•() {}
 }
-static method optional_toplevel([dynamic x = #C2]) → void {}
-static method named_toplevel({dynamic x = #C2}) → void {}
+static method optional_toplevel([dynamic x = const <core::int>[0]]) → void {}
+static method named_toplevel({dynamic x = const <core::int>[0]}) → void {}
 static method main() → dynamic {
-  function optional_local([dynamic x = #C2]) → void {}
-  function named_local({dynamic x = #C2}) → void {}
-  self::C<dynamic> c_optional_toplevel = new self::C::optional<dynamic>(#C3);
-  self::C<dynamic> c_named_toplevel = new self::C::named<dynamic>(#C4);
+  function optional_local([dynamic x = const <core::int>[0]]) → void {}
+  function named_local({dynamic x = const <core::int>[0]}) → void {}
+  self::C<dynamic> c_optional_toplevel = new self::C::optional<dynamic>(self::optional_toplevel);
+  self::C<dynamic> c_named_toplevel = new self::C::named<dynamic>(self::named_toplevel);
   self::C<dynamic> c_optional_local = new self::C::optional<dynamic>(optional_local);
   self::C<dynamic> c_named_local = new self::C::named<dynamic>(named_local);
-  self::C<dynamic> c_optional_closure = new self::C::optional<dynamic>(([dynamic x = #C2]) → core::Null {});
-  self::C<dynamic> c_named_closure = new self::C::named<dynamic>(({dynamic x = #C2}) → core::Null {});
+  self::C<dynamic> c_optional_closure = new self::C::optional<dynamic>(([dynamic x = const <core::int>[0]]) → core::Null {});
+  self::C<dynamic> c_named_closure = new self::C::named<dynamic>(({dynamic x = const <core::int>[0]}) → core::Null {});
 }
diff --git a/pkg/front_end/testcases/inference/parameter_defaults_upwards.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/parameter_defaults_upwards.dart.strong.transformed.expect
index 6d414a0..5d1cc0f 100644
--- a/pkg/front_end/testcases/inference/parameter_defaults_upwards.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/parameter_defaults_upwards.dart.strong.transformed.expect
@@ -8,15 +8,15 @@
   constructor named(({x: self::C::T}) → void func) → self::C<self::C::T>
     : super core::Object::•() {}
 }
-static method optional_toplevel([dynamic x = #C2]) → void {}
-static method named_toplevel({dynamic x = #C2}) → void {}
+static method optional_toplevel([dynamic x = const <core::int>[0]]) → void {}
+static method named_toplevel({dynamic x = const <core::int>[0]}) → void {}
 static method main() → dynamic {
-  function optional_local([dynamic x = #C2]) → void {}
-  function named_local({dynamic x = #C2}) → void {}
-  self::C<dynamic> c_optional_toplevel = new self::C::optional<dynamic>(#C3);
-  self::C<dynamic> c_named_toplevel = new self::C::named<dynamic>(#C4);
+  function optional_local([dynamic x = const <core::int>[0]]) → void {}
+  function named_local({dynamic x = const <core::int>[0]}) → void {}
+  self::C<dynamic> c_optional_toplevel = new self::C::optional<dynamic>(self::optional_toplevel);
+  self::C<dynamic> c_named_toplevel = new self::C::named<dynamic>(self::named_toplevel);
   self::C<dynamic> c_optional_local = new self::C::optional<dynamic>(optional_local);
   self::C<dynamic> c_named_local = new self::C::named<dynamic>(named_local);
-  self::C<dynamic> c_optional_closure = new self::C::optional<dynamic>(([dynamic x = #C2]) → core::Null {});
-  self::C<dynamic> c_named_closure = new self::C::named<dynamic>(({dynamic x = #C2}) → core::Null {});
+  self::C<dynamic> c_optional_closure = new self::C::optional<dynamic>(([dynamic x = const <core::int>[0]]) → core::Null {});
+  self::C<dynamic> c_named_closure = new self::C::named<dynamic>(({dynamic x = const <core::int>[0]}) → core::Null {});
 }
diff --git a/pkg/front_end/testcases/inference/static_method_tear_off.dart.legacy.expect b/pkg/front_end/testcases/inference/static_method_tear_off.dart.legacy.expect
index 27156b5..414add8 100644
--- a/pkg/front_end/testcases/inference/static_method_tear_off.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/static_method_tear_off.dart.legacy.expect
@@ -9,7 +9,7 @@
   static method f(core::String s) → core::int
     return null;
 }
-static const field dynamic v = #C1;
+static const field dynamic v = self::C::f;
 static method main() → dynamic {
-  #C1;
+  self::v;
 }
diff --git a/pkg/front_end/testcases/inference/static_method_tear_off.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/static_method_tear_off.dart.legacy.transformed.expect
index 27156b5..414add8 100644
--- a/pkg/front_end/testcases/inference/static_method_tear_off.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/static_method_tear_off.dart.legacy.transformed.expect
@@ -9,7 +9,7 @@
   static method f(core::String s) → core::int
     return null;
 }
-static const field dynamic v = #C1;
+static const field dynamic v = self::C::f;
 static method main() → dynamic {
-  #C1;
+  self::v;
 }
diff --git a/pkg/front_end/testcases/inference/static_method_tear_off.dart.strong.expect b/pkg/front_end/testcases/inference/static_method_tear_off.dart.strong.expect
index 08ad879..a5d09a8 100644
--- a/pkg/front_end/testcases/inference/static_method_tear_off.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/static_method_tear_off.dart.strong.expect
@@ -9,7 +9,7 @@
   static method f(core::String s) → core::int
     return null;
 }
-static const field (core::String) → core::int v = #C1;
+static const field (core::String) → core::int v = self::C::f;
 static method main() → dynamic {
-  #C1;
+  self::v;
 }
diff --git a/pkg/front_end/testcases/inference/static_method_tear_off.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/static_method_tear_off.dart.strong.transformed.expect
index 08ad879..a5d09a8 100644
--- a/pkg/front_end/testcases/inference/static_method_tear_off.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/static_method_tear_off.dart.strong.transformed.expect
@@ -9,7 +9,7 @@
   static method f(core::String s) → core::int
     return null;
 }
-static const field (core::String) → core::int v = #C1;
+static const field (core::String) → core::int v = self::C::f;
 static method main() → dynamic {
-  #C1;
+  self::v;
 }
diff --git a/pkg/front_end/testcases/inference/switch_continue.dart.legacy.expect b/pkg/front_end/testcases/inference/switch_continue.dart.legacy.expect
index 9a08c37..9a02ec6 100644
--- a/pkg/front_end/testcases/inference/switch_continue.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/switch_continue.dart.legacy.expect
@@ -6,13 +6,13 @@
   #L1:
   switch(x) {
     #L2:
-    case #C1:
+    case 0:
       {
         f.call();
         continue #L3;
       }
     #L3:
-    case #C2:
+    case 1:
       {
         f.call();
         break #L1;
diff --git a/pkg/front_end/testcases/inference/switch_continue.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/switch_continue.dart.legacy.transformed.expect
index 9a08c37..9a02ec6 100644
--- a/pkg/front_end/testcases/inference/switch_continue.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/switch_continue.dart.legacy.transformed.expect
@@ -6,13 +6,13 @@
   #L1:
   switch(x) {
     #L2:
-    case #C1:
+    case 0:
       {
         f.call();
         continue #L3;
       }
     #L3:
-    case #C2:
+    case 1:
       {
         f.call();
         break #L1;
diff --git a/pkg/front_end/testcases/inference/switch_continue.dart.strong.expect b/pkg/front_end/testcases/inference/switch_continue.dart.strong.expect
index 9a08c37..9a02ec6 100644
--- a/pkg/front_end/testcases/inference/switch_continue.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/switch_continue.dart.strong.expect
@@ -6,13 +6,13 @@
   #L1:
   switch(x) {
     #L2:
-    case #C1:
+    case 0:
       {
         f.call();
         continue #L3;
       }
     #L3:
-    case #C2:
+    case 1:
       {
         f.call();
         break #L1;
diff --git a/pkg/front_end/testcases/inference/switch_continue.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/switch_continue.dart.strong.transformed.expect
index 9a08c37..9a02ec6 100644
--- a/pkg/front_end/testcases/inference/switch_continue.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/switch_continue.dart.strong.transformed.expect
@@ -6,13 +6,13 @@
   #L1:
   switch(x) {
     #L2:
-    case #C1:
+    case 0:
       {
         f.call();
         continue #L3;
       }
     #L3:
-    case #C2:
+    case 1:
       {
         f.call();
         break #L1;
diff --git a/pkg/front_end/testcases/inference/symbol_literal.dart.legacy.expect b/pkg/front_end/testcases/inference/symbol_literal.dart.legacy.expect
index 8738dde..88a58fe 100644
--- a/pkg/front_end/testcases/inference/symbol_literal.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/symbol_literal.dart.legacy.expect
@@ -1,8 +1,7 @@
 library test;
 import self as self;
-import "dart:core" as core;
 
 static method test() → void {
-  dynamic x = #C1;
+  dynamic x = #foo;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/symbol_literal.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/symbol_literal.dart.legacy.transformed.expect
index 8738dde..88a58fe 100644
--- a/pkg/front_end/testcases/inference/symbol_literal.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/symbol_literal.dart.legacy.transformed.expect
@@ -1,8 +1,7 @@
 library test;
 import self as self;
-import "dart:core" as core;
 
 static method test() → void {
-  dynamic x = #C1;
+  dynamic x = #foo;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/symbol_literal.dart.strong.expect b/pkg/front_end/testcases/inference/symbol_literal.dart.strong.expect
index 00c741a..ea090c7 100644
--- a/pkg/front_end/testcases/inference/symbol_literal.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/symbol_literal.dart.strong.expect
@@ -3,6 +3,6 @@
 import "dart:core" as core;
 
 static method test() → void {
-  core::Symbol x = #C1;
+  core::Symbol x = #foo;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/symbol_literal.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/symbol_literal.dart.strong.transformed.expect
index 00c741a..ea090c7 100644
--- a/pkg/front_end/testcases/inference/symbol_literal.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/symbol_literal.dart.strong.transformed.expect
@@ -3,6 +3,6 @@
 import "dart:core" as core;
 
 static method test() → void {
-  core::Symbol x = #C1;
+  core::Symbol x = #foo;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr1.dart.legacy.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr1.dart.legacy.expect
index b5816e6..ba6541a 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr1.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr1.dart.legacy.expect
@@ -14,7 +14,7 @@
 import self as self;
 import "dart:core" as core;
 
-static field dynamic v = (#C1).<(dynamic).>(invalid-expression "pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr1.dart:9:20: Error: This couldn't be parsed.
+static field dynamic v = self::f.<(dynamic).>(invalid-expression "pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr1.dart:9:20: Error: This couldn't be parsed.
 var v = (f<dynamic>)(() {
                    ^").call(() → dynamic {
   return 1;
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr1.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr1.dart.legacy.transformed.expect
index b5816e6..ba6541a 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr1.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr1.dart.legacy.transformed.expect
@@ -14,7 +14,7 @@
 import self as self;
 import "dart:core" as core;
 
-static field dynamic v = (#C1).<(dynamic).>(invalid-expression "pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr1.dart:9:20: Error: This couldn't be parsed.
+static field dynamic v = self::f.<(dynamic).>(invalid-expression "pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr1.dart:9:20: Error: This couldn't be parsed.
 var v = (f<dynamic>)(() {
                    ^").call(() → dynamic {
   return 1;
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr2.dart.legacy.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr2.dart.legacy.expect
index b76160e..ecedd4a 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr2.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr2.dart.legacy.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-static field dynamic v = (#C1).call<dynamic>(() → dynamic {
+static field dynamic v = self::f.call<dynamic>(() → dynamic {
   return 1;
 });
 static method f<T extends core::Object = dynamic>(() → self::f::T g) → core::List<self::f::T>
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr2.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr2.dart.legacy.transformed.expect
index b76160e..ecedd4a 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr2.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr2.dart.legacy.transformed.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-static field dynamic v = (#C1).call<dynamic>(() → dynamic {
+static field dynamic v = self::f.call<dynamic>(() → dynamic {
   return 1;
 });
 static method f<T extends core::Object = dynamic>(() → self::f::T g) → core::List<self::f::T>
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr2.dart.strong.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr2.dart.strong.expect
index 64de81b..a43bff6 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr2.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr2.dart.strong.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-static field core::List<dynamic> v = (#C1).call<dynamic>(() → core::int {
+static field core::List<dynamic> v = self::f.call<dynamic>(() → core::int {
   return 1;
 });
 static method f<T extends core::Object = dynamic>(() → self::f::T g) → core::List<self::f::T>
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr2.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr2.dart.strong.transformed.expect
index 64de81b..a43bff6 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr2.dart.strong.transformed.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-static field core::List<dynamic> v = (#C1).call<dynamic>(() → core::int {
+static field core::List<dynamic> v = self::f.call<dynamic>(() → core::int {
   return 1;
 });
 static method f<T extends core::Object = dynamic>(() → self::f::T g) → core::List<self::f::T>
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr1.dart.legacy.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr1.dart.legacy.expect
index 011eda1..27f915d 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr1.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr1.dart.legacy.expect
@@ -14,7 +14,7 @@
 import self as self;
 import "dart:core" as core;
 
-static field dynamic v = (#C1).<(core::int).>(invalid-expression "pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr1.dart:9:16: Error: This couldn't be parsed.
+static field dynamic v = self::f.<(core::int).>(invalid-expression "pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr1.dart:9:16: Error: This couldn't be parsed.
 var v = (f<int>)(() {
                ^").call(() → dynamic {
   return 1;
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr1.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr1.dart.legacy.transformed.expect
index 011eda1..27f915d 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr1.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr1.dart.legacy.transformed.expect
@@ -14,7 +14,7 @@
 import self as self;
 import "dart:core" as core;
 
-static field dynamic v = (#C1).<(core::int).>(invalid-expression "pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr1.dart:9:16: Error: This couldn't be parsed.
+static field dynamic v = self::f.<(core::int).>(invalid-expression "pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr1.dart:9:16: Error: This couldn't be parsed.
 var v = (f<int>)(() {
                ^").call(() → dynamic {
   return 1;
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr2.dart.legacy.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr2.dart.legacy.expect
index e3bb30f..450cd02 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr2.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr2.dart.legacy.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-static field dynamic v = (#C1).call<core::int>(() → dynamic {
+static field dynamic v = self::f.call<core::int>(() → dynamic {
   return 1;
 });
 static method f<T extends core::Object = dynamic>(() → self::f::T g) → core::List<self::f::T>
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr2.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr2.dart.legacy.transformed.expect
index e3bb30f..450cd02 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr2.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr2.dart.legacy.transformed.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-static field dynamic v = (#C1).call<core::int>(() → dynamic {
+static field dynamic v = self::f.call<core::int>(() → dynamic {
   return 1;
 });
 static method f<T extends core::Object = dynamic>(() → self::f::T g) → core::List<self::f::T>
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr2.dart.strong.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr2.dart.strong.expect
index 5c561d9..cd480b4 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr2.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr2.dart.strong.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-static field core::List<core::int> v = (#C1).call<core::int>(() → core::int {
+static field core::List<core::int> v = self::f.call<core::int>(() → core::int {
   return 1;
 });
 static method f<T extends core::Object = dynamic>(() → self::f::T g) → core::List<self::f::T>
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr2.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr2.dart.strong.transformed.expect
index 5c561d9..cd480b4 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr2.dart.strong.transformed.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-static field core::List<core::int> v = (#C1).call<core::int>(() → core::int {
+static field core::List<core::int> v = self::f.call<core::int>(() → core::int {
   return 1;
 });
 static method f<T extends core::Object = dynamic>(() → self::f::T g) → core::List<self::f::T>
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_implicit_type_param_via_expr.dart.legacy.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_implicit_type_param_via_expr.dart.legacy.expect
index c4ea432..614a9eb 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_implicit_type_param_via_expr.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_implicit_type_param_via_expr.dart.legacy.expect
@@ -3,7 +3,7 @@
 import "dart:core" as core;
 
 static method main() → dynamic {
-  dynamic v = (#C1).call(() → dynamic {
+  dynamic v = self::f.call(() → dynamic {
     return 1;
   });
 }
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_implicit_type_param_via_expr.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_implicit_type_param_via_expr.dart.legacy.transformed.expect
index c4ea432..614a9eb 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_implicit_type_param_via_expr.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_implicit_type_param_via_expr.dart.legacy.transformed.expect
@@ -3,7 +3,7 @@
 import "dart:core" as core;
 
 static method main() → dynamic {
-  dynamic v = (#C1).call(() → dynamic {
+  dynamic v = self::f.call(() → dynamic {
     return 1;
   });
 }
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_implicit_type_param_via_expr.dart.strong.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_implicit_type_param_via_expr.dart.strong.expect
index 53058e4..f1a71c2 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_implicit_type_param_via_expr.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_implicit_type_param_via_expr.dart.strong.expect
@@ -3,7 +3,7 @@
 import "dart:core" as core;
 
 static method main() → dynamic {
-  core::List<core::int> v = (#C1).call<core::int>(() → core::int {
+  core::List<core::int> v = self::f.call<core::int>(() → core::int {
     return 1;
   });
 }
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_implicit_type_param_via_expr.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_implicit_type_param_via_expr.dart.strong.transformed.expect
index 53058e4..f1a71c2 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_implicit_type_param_via_expr.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_implicit_type_param_via_expr.dart.strong.transformed.expect
@@ -3,7 +3,7 @@
 import "dart:core" as core;
 
 static method main() → dynamic {
-  core::List<core::int> v = (#C1).call<core::int>(() → core::int {
+  core::List<core::int> v = self::f.call<core::int>(() → core::int {
     return 1;
   });
 }
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_no_type_param_via_expr.dart.legacy.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_no_type_param_via_expr.dart.legacy.expect
index dde682a..5a76d33 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_no_type_param_via_expr.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_no_type_param_via_expr.dart.legacy.expect
@@ -3,7 +3,7 @@
 import "dart:core" as core;
 
 static method main() → dynamic {
-  dynamic v = (#C1).call(() → dynamic {
+  dynamic v = self::f.call(() → dynamic {
     return 1;
   });
 }
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_no_type_param_via_expr.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_no_type_param_via_expr.dart.legacy.transformed.expect
index dde682a..5a76d33 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_no_type_param_via_expr.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_no_type_param_via_expr.dart.legacy.transformed.expect
@@ -3,7 +3,7 @@
 import "dart:core" as core;
 
 static method main() → dynamic {
-  dynamic v = (#C1).call(() → dynamic {
+  dynamic v = self::f.call(() → dynamic {
     return 1;
   });
 }
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_no_type_param_via_expr.dart.strong.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_no_type_param_via_expr.dart.strong.expect
index b9e4999..2d6d957 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_no_type_param_via_expr.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_no_type_param_via_expr.dart.strong.expect
@@ -3,7 +3,7 @@
 import "dart:core" as core;
 
 static method main() → dynamic {
-  core::double v = (#C1).call(() → core::int {
+  core::double v = self::f.call(() → core::int {
     return 1;
   });
 }
diff --git a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_no_type_param_via_expr.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_no_type_param_via_expr.dart.strong.transformed.expect
index b9e4999..2d6d957 100644
--- a/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_no_type_param_via_expr.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_no_type_param_via_expr.dart.strong.transformed.expect
@@ -3,7 +3,7 @@
 import "dart:core" as core;
 
 static method main() → dynamic {
-  core::double v = (#C1).call(() → core::int {
+  core::double v = self::f.call(() → core::int {
     return 1;
   });
 }
diff --git a/pkg/front_end/testcases/inference/void_return_type_subtypes_dynamic.dart.legacy.expect b/pkg/front_end/testcases/inference/void_return_type_subtypes_dynamic.dart.legacy.expect
index 173ae73..e9f8f19 100644
--- a/pkg/front_end/testcases/inference/void_return_type_subtypes_dynamic.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference/void_return_type_subtypes_dynamic.dart.legacy.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-static field dynamic x = self::run<dynamic>(#C1);
+static field dynamic x = self::run<dynamic>(self::printRunning);
 static method run<T extends core::Object = dynamic>(() → self::run::T f) → self::run::T {
   core::print("running");
   dynamic t = f.call();
diff --git a/pkg/front_end/testcases/inference/void_return_type_subtypes_dynamic.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference/void_return_type_subtypes_dynamic.dart.legacy.transformed.expect
index 173ae73..e9f8f19 100644
--- a/pkg/front_end/testcases/inference/void_return_type_subtypes_dynamic.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference/void_return_type_subtypes_dynamic.dart.legacy.transformed.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-static field dynamic x = self::run<dynamic>(#C1);
+static field dynamic x = self::run<dynamic>(self::printRunning);
 static method run<T extends core::Object = dynamic>(() → self::run::T f) → self::run::T {
   core::print("running");
   dynamic t = f.call();
diff --git a/pkg/front_end/testcases/inference/void_return_type_subtypes_dynamic.dart.strong.expect b/pkg/front_end/testcases/inference/void_return_type_subtypes_dynamic.dart.strong.expect
index 6b7099a..0d3fd7d 100644
--- a/pkg/front_end/testcases/inference/void_return_type_subtypes_dynamic.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/void_return_type_subtypes_dynamic.dart.strong.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-static field dynamic x = self::run<dynamic>(#C1);
+static field dynamic x = self::run<dynamic>(self::printRunning);
 static method run<T extends core::Object = dynamic>(() → self::run::T f) → self::run::T {
   core::print("running");
   self::run::T t = f.call();
diff --git a/pkg/front_end/testcases/inference/void_return_type_subtypes_dynamic.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/void_return_type_subtypes_dynamic.dart.strong.transformed.expect
index 6b7099a..0d3fd7d 100644
--- a/pkg/front_end/testcases/inference/void_return_type_subtypes_dynamic.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/void_return_type_subtypes_dynamic.dart.strong.transformed.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-static field dynamic x = self::run<dynamic>(#C1);
+static field dynamic x = self::run<dynamic>(self::printRunning);
 static method run<T extends core::Object = dynamic>(() → self::run::T f) → self::run::T {
   core::print("running");
   self::run::T t = f.call();
diff --git a/pkg/front_end/testcases/inference_new/const_invocation.dart.legacy.expect b/pkg/front_end/testcases/inference_new/const_invocation.dart.legacy.expect
index c8803b7..7421b05 100644
--- a/pkg/front_end/testcases/inference_new/const_invocation.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference_new/const_invocation.dart.legacy.expect
@@ -8,23 +8,23 @@
     : super core::Object::•()
     ;
   get v1() → self::Bar<self::Foo::T>
-    return #C1;
+    return const self::Bar::•<dynamic>();
   get v2() → self::Bar<core::List<self::Foo::T>>
-    return #C1;
+    return const self::Bar::•<dynamic>();
   get v3() → self::Bar<(self::Foo::T) → self::Foo::T>
-    return #C1;
+    return const self::Bar::•<dynamic>();
   get v4() → self::Bar<((self::Foo::T) → self::Foo::T) → self::Foo::T>
-    return #C1;
+    return const self::Bar::•<dynamic>();
   get v5() → core::List<self::Foo::T>
-    return #C2;
+    return const <dynamic>[];
   get v6() → core::List<(self::Foo::T) → self::Foo::T>
-    return #C2;
+    return const <dynamic>[];
   get v7() → core::Map<self::Foo::T, self::Foo::T>
-    return #C3;
+    return const <dynamic, dynamic>{};
   get v8() → core::Map<(self::Foo::T) → self::Foo::T, self::Foo::T>
-    return #C3;
+    return const <dynamic, dynamic>{};
   get v9() → core::Map<self::Foo::T, (self::Foo::T) → self::Foo::T>
-    return #C3;
+    return const <dynamic, dynamic>{};
 }
 class Bar<T extends core::Object = dynamic> extends core::Object {
   const constructor •() → self::Bar<self::Bar::T>
diff --git a/pkg/front_end/testcases/inference_new/const_invocation.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference_new/const_invocation.dart.legacy.transformed.expect
index c8803b7..7421b05 100644
--- a/pkg/front_end/testcases/inference_new/const_invocation.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/const_invocation.dart.legacy.transformed.expect
@@ -8,23 +8,23 @@
     : super core::Object::•()
     ;
   get v1() → self::Bar<self::Foo::T>
-    return #C1;
+    return const self::Bar::•<dynamic>();
   get v2() → self::Bar<core::List<self::Foo::T>>
-    return #C1;
+    return const self::Bar::•<dynamic>();
   get v3() → self::Bar<(self::Foo::T) → self::Foo::T>
-    return #C1;
+    return const self::Bar::•<dynamic>();
   get v4() → self::Bar<((self::Foo::T) → self::Foo::T) → self::Foo::T>
-    return #C1;
+    return const self::Bar::•<dynamic>();
   get v5() → core::List<self::Foo::T>
-    return #C2;
+    return const <dynamic>[];
   get v6() → core::List<(self::Foo::T) → self::Foo::T>
-    return #C2;
+    return const <dynamic>[];
   get v7() → core::Map<self::Foo::T, self::Foo::T>
-    return #C3;
+    return const <dynamic, dynamic>{};
   get v8() → core::Map<(self::Foo::T) → self::Foo::T, self::Foo::T>
-    return #C3;
+    return const <dynamic, dynamic>{};
   get v9() → core::Map<self::Foo::T, (self::Foo::T) → self::Foo::T>
-    return #C3;
+    return const <dynamic, dynamic>{};
 }
 class Bar<T extends core::Object = dynamic> extends core::Object {
   const constructor •() → self::Bar<self::Bar::T>
diff --git a/pkg/front_end/testcases/inference_new/const_invocation.dart.strong.expect b/pkg/front_end/testcases/inference_new/const_invocation.dart.strong.expect
index 48c8757..6bf0f4d 100644
--- a/pkg/front_end/testcases/inference_new/const_invocation.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/const_invocation.dart.strong.expect
@@ -8,23 +8,23 @@
     : super core::Object::•()
     ;
   get v1() → self::Bar<self::Foo::T>
-    return #C1;
+    return const self::Bar::•<core::Null>();
   get v2() → self::Bar<core::List<self::Foo::T>>
-    return #C2;
+    return const self::Bar::•<core::List<core::Null>>();
   get v3() → self::Bar<(self::Foo::T) → self::Foo::T>
-    return #C3;
+    return const self::Bar::•<(core::Object) → core::Null>();
   get v4() → self::Bar<((self::Foo::T) → self::Foo::T) → self::Foo::T>
-    return #C4;
+    return const self::Bar::•<((core::Null) → core::Object) → core::Null>();
   get v5() → core::List<self::Foo::T>
-    return #C5;
+    return const <core::Null>[];
   get v6() → core::List<(self::Foo::T) → self::Foo::T>
-    return #C6;
+    return const <(core::Object) → core::Null>[];
   get v7() → core::Map<self::Foo::T, self::Foo::T>
-    return #C8;
+    return const <core::Null, core::Null>{};
   get v8() → core::Map<(self::Foo::T) → self::Foo::T, self::Foo::T>
-    return #C9;
+    return const <(core::Object) → core::Null, core::Null>{};
   get v9() → core::Map<self::Foo::T, (self::Foo::T) → self::Foo::T>
-    return #C10;
+    return const <core::Null, (core::Object) → core::Null>{};
 }
 class Bar<T extends core::Object = dynamic> extends core::Object {
   const constructor •() → self::Bar<self::Bar::T>
diff --git a/pkg/front_end/testcases/inference_new/const_invocation.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_new/const_invocation.dart.strong.transformed.expect
index 48c8757..6bf0f4d 100644
--- a/pkg/front_end/testcases/inference_new/const_invocation.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/const_invocation.dart.strong.transformed.expect
@@ -8,23 +8,23 @@
     : super core::Object::•()
     ;
   get v1() → self::Bar<self::Foo::T>
-    return #C1;
+    return const self::Bar::•<core::Null>();
   get v2() → self::Bar<core::List<self::Foo::T>>
-    return #C2;
+    return const self::Bar::•<core::List<core::Null>>();
   get v3() → self::Bar<(self::Foo::T) → self::Foo::T>
-    return #C3;
+    return const self::Bar::•<(core::Object) → core::Null>();
   get v4() → self::Bar<((self::Foo::T) → self::Foo::T) → self::Foo::T>
-    return #C4;
+    return const self::Bar::•<((core::Null) → core::Object) → core::Null>();
   get v5() → core::List<self::Foo::T>
-    return #C5;
+    return const <core::Null>[];
   get v6() → core::List<(self::Foo::T) → self::Foo::T>
-    return #C6;
+    return const <(core::Object) → core::Null>[];
   get v7() → core::Map<self::Foo::T, self::Foo::T>
-    return #C8;
+    return const <core::Null, core::Null>{};
   get v8() → core::Map<(self::Foo::T) → self::Foo::T, self::Foo::T>
-    return #C9;
+    return const <(core::Object) → core::Null, core::Null>{};
   get v9() → core::Map<self::Foo::T, (self::Foo::T) → self::Foo::T>
-    return #C10;
+    return const <core::Null, (core::Object) → core::Null>{};
 }
 class Bar<T extends core::Object = dynamic> extends core::Object {
   const constructor •() → self::Bar<self::Bar::T>
diff --git a/pkg/front_end/testcases/inference_new/switch.dart.legacy.expect b/pkg/front_end/testcases/inference_new/switch.dart.legacy.expect
index 65b2a87..992aba0 100644
--- a/pkg/front_end/testcases/inference_new/switch.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference_new/switch.dart.legacy.expect
@@ -13,7 +13,7 @@
   #L1:
   switch(x) {
     #L2:
-    case #C1:
+    case const self::C::•<dynamic>():
       {
         dynamic y = 0;
         break #L1;
diff --git a/pkg/front_end/testcases/inference_new/switch.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference_new/switch.dart.legacy.transformed.expect
index 65b2a87..992aba0 100644
--- a/pkg/front_end/testcases/inference_new/switch.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/switch.dart.legacy.transformed.expect
@@ -13,7 +13,7 @@
   #L1:
   switch(x) {
     #L2:
-    case #C1:
+    case const self::C::•<dynamic>():
       {
         dynamic y = 0;
         break #L1;
diff --git a/pkg/front_end/testcases/inference_new/switch.dart.strong.expect b/pkg/front_end/testcases/inference_new/switch.dart.strong.expect
index 893dd92..4ad5b14 100644
--- a/pkg/front_end/testcases/inference_new/switch.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/switch.dart.strong.expect
@@ -13,7 +13,7 @@
   #L1:
   switch(x) {
     #L2:
-    case #C1:
+    case const self::C::•<core::int>():
       {
         core::int y = 0;
         break #L1;
diff --git a/pkg/front_end/testcases/inference_new/switch.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_new/switch.dart.strong.transformed.expect
index 893dd92..4ad5b14 100644
--- a/pkg/front_end/testcases/inference_new/switch.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/switch.dart.strong.transformed.expect
@@ -13,7 +13,7 @@
   #L1:
   switch(x) {
     #L2:
-    case #C1:
+    case const self::C::•<core::int>():
       {
         core::int y = 0;
         break #L1;
diff --git a/pkg/front_end/testcases/inference_new/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr2.dart.legacy.expect b/pkg/front_end/testcases/inference_new/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr2.dart.legacy.expect
index a9caf00..9c67644 100644
--- a/pkg/front_end/testcases/inference_new/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr2.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference_new/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr2.dart.legacy.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-static field dynamic v = (#C1).call(() → dynamic {
+static field dynamic v = self::f.call(() → dynamic {
   return 1;
 });
 static method f<T extends core::Object = dynamic>(() → self::f::T g) → core::List<self::f::T>
diff --git a/pkg/front_end/testcases/inference_new/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr2.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference_new/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr2.dart.legacy.transformed.expect
index a9caf00..9c67644 100644
--- a/pkg/front_end/testcases/inference_new/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr2.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr2.dart.legacy.transformed.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-static field dynamic v = (#C1).call(() → dynamic {
+static field dynamic v = self::f.call(() → dynamic {
   return 1;
 });
 static method f<T extends core::Object = dynamic>(() → self::f::T g) → core::List<self::f::T>
diff --git a/pkg/front_end/testcases/inference_new/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr2.dart.strong.expect b/pkg/front_end/testcases/inference_new/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr2.dart.strong.expect
index 5c561d9..cd480b4 100644
--- a/pkg/front_end/testcases/inference_new/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr2.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr2.dart.strong.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-static field core::List<core::int> v = (#C1).call<core::int>(() → core::int {
+static field core::List<core::int> v = self::f.call<core::int>(() → core::int {
   return 1;
 });
 static method f<T extends core::Object = dynamic>(() → self::f::T g) → core::List<self::f::T>
diff --git a/pkg/front_end/testcases/inference_new/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr2.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_new/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr2.dart.strong.transformed.expect
index 5c561d9..cd480b4 100644
--- a/pkg/front_end/testcases/inference_new/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/unsafe_block_closure_inference_function_call_explicit_dynamic_param_via_expr2.dart.strong.transformed.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-static field core::List<core::int> v = (#C1).call<core::int>(() → core::int {
+static field core::List<core::int> v = self::f.call<core::int>(() → core::int {
   return 1;
 });
 static method f<T extends core::Object = dynamic>(() → self::f::T g) → core::List<self::f::T>
diff --git a/pkg/front_end/testcases/inference_new/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr2.dart.legacy.expect b/pkg/front_end/testcases/inference_new/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr2.dart.legacy.expect
index a9caf00..9c67644 100644
--- a/pkg/front_end/testcases/inference_new/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr2.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference_new/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr2.dart.legacy.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-static field dynamic v = (#C1).call(() → dynamic {
+static field dynamic v = self::f.call(() → dynamic {
   return 1;
 });
 static method f<T extends core::Object = dynamic>(() → self::f::T g) → core::List<self::f::T>
diff --git a/pkg/front_end/testcases/inference_new/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr2.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference_new/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr2.dart.legacy.transformed.expect
index a9caf00..9c67644 100644
--- a/pkg/front_end/testcases/inference_new/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr2.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr2.dart.legacy.transformed.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-static field dynamic v = (#C1).call(() → dynamic {
+static field dynamic v = self::f.call(() → dynamic {
   return 1;
 });
 static method f<T extends core::Object = dynamic>(() → self::f::T g) → core::List<self::f::T>
diff --git a/pkg/front_end/testcases/inference_new/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr2.dart.strong.expect b/pkg/front_end/testcases/inference_new/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr2.dart.strong.expect
index 5c561d9..cd480b4 100644
--- a/pkg/front_end/testcases/inference_new/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr2.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr2.dart.strong.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-static field core::List<core::int> v = (#C1).call<core::int>(() → core::int {
+static field core::List<core::int> v = self::f.call<core::int>(() → core::int {
   return 1;
 });
 static method f<T extends core::Object = dynamic>(() → self::f::T g) → core::List<self::f::T>
diff --git a/pkg/front_end/testcases/inference_new/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr2.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_new/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr2.dart.strong.transformed.expect
index 5c561d9..cd480b4 100644
--- a/pkg/front_end/testcases/inference_new/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr2.dart.strong.transformed.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-static field core::List<core::int> v = (#C1).call<core::int>(() → core::int {
+static field core::List<core::int> v = self::f.call<core::int>(() → core::int {
   return 1;
 });
 static method f<T extends core::Object = dynamic>(() → self::f::T g) → core::List<self::f::T>
diff --git a/pkg/front_end/testcases/inference_new/void_return_type_subtypes_dynamic.dart.legacy.expect b/pkg/front_end/testcases/inference_new/void_return_type_subtypes_dynamic.dart.legacy.expect
index 506e0e0..f799565 100644
--- a/pkg/front_end/testcases/inference_new/void_return_type_subtypes_dynamic.dart.legacy.expect
+++ b/pkg/front_end/testcases/inference_new/void_return_type_subtypes_dynamic.dart.legacy.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-static field dynamic y = self::run<dynamic>(#C1);
+static field dynamic y = self::run<dynamic>(self::printRunning);
 static method run<T extends core::Object = dynamic>(() → self::run::T f) → self::run::T {
   core::print("running");
   dynamic t = f.call();
diff --git a/pkg/front_end/testcases/inference_new/void_return_type_subtypes_dynamic.dart.legacy.transformed.expect b/pkg/front_end/testcases/inference_new/void_return_type_subtypes_dynamic.dart.legacy.transformed.expect
index 506e0e0..f799565 100644
--- a/pkg/front_end/testcases/inference_new/void_return_type_subtypes_dynamic.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/void_return_type_subtypes_dynamic.dart.legacy.transformed.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-static field dynamic y = self::run<dynamic>(#C1);
+static field dynamic y = self::run<dynamic>(self::printRunning);
 static method run<T extends core::Object = dynamic>(() → self::run::T f) → self::run::T {
   core::print("running");
   dynamic t = f.call();
diff --git a/pkg/front_end/testcases/inference_new/void_return_type_subtypes_dynamic.dart.strong.expect b/pkg/front_end/testcases/inference_new/void_return_type_subtypes_dynamic.dart.strong.expect
index f17af56..5417786 100644
--- a/pkg/front_end/testcases/inference_new/void_return_type_subtypes_dynamic.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/void_return_type_subtypes_dynamic.dart.strong.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-static field void y = self::run<void>(#C1);
+static field void y = self::run<void>(self::printRunning);
 static method run<T extends core::Object = dynamic>(() → self::run::T f) → self::run::T {
   core::print("running");
   self::run::T t = f.call();
diff --git a/pkg/front_end/testcases/inference_new/void_return_type_subtypes_dynamic.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_new/void_return_type_subtypes_dynamic.dart.strong.transformed.expect
index f17af56..5417786 100644
--- a/pkg/front_end/testcases/inference_new/void_return_type_subtypes_dynamic.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/void_return_type_subtypes_dynamic.dart.strong.transformed.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-static field void y = self::run<void>(#C1);
+static field void y = self::run<void>(self::printRunning);
 static method run<T extends core::Object = dynamic>(() → self::run::T f) → self::run::T {
   core::print("running");
   self::run::T t = f.call();
diff --git a/pkg/front_end/testcases/instantiate_to_bound/inference_gives_input.dart.legacy.expect b/pkg/front_end/testcases/instantiate_to_bound/inference_gives_input.dart.legacy.expect
index 94b45a8..df69640 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/inference_gives_input.dart.legacy.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/inference_gives_input.dart.legacy.expect
@@ -8,7 +8,7 @@
     ;
 }
 class B<T extends core::num = dynamic, S extends core::List<self::B::T> = dynamic> extends self::A<self::B::T> {
-  constructor •([self::B::T x = #C1]) → self::B<self::B::T, self::B::S>
+  constructor •([self::B::T x = null]) → self::B<self::B::T, self::B::S>
     : super self::A::•() {}
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/instantiate_to_bound/inference_gives_input.dart.legacy.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/inference_gives_input.dart.legacy.transformed.expect
index 94b45a8..df69640 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/inference_gives_input.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/inference_gives_input.dart.legacy.transformed.expect
@@ -8,7 +8,7 @@
     ;
 }
 class B<T extends core::num = dynamic, S extends core::List<self::B::T> = dynamic> extends self::A<self::B::T> {
-  constructor •([self::B::T x = #C1]) → self::B<self::B::T, self::B::S>
+  constructor •([self::B::T x = null]) → self::B<self::B::T, self::B::S>
     : super self::A::•() {}
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/instantiate_to_bound/inference_gives_input.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/inference_gives_input.dart.strong.expect
index 66e9642..9b71682 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/inference_gives_input.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/inference_gives_input.dart.strong.expect
@@ -8,7 +8,7 @@
     ;
 }
 class B<T extends core::num = core::num, S extends core::List<self::B::T> = core::List<core::num>> extends self::A<self::B::T> {
-  constructor •([self::B::T x = #C1]) → self::B<self::B::T, self::B::S>
+  constructor •([self::B::T x = null]) → self::B<self::B::T, self::B::S>
     : super self::A::•() {}
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/instantiate_to_bound/inference_gives_input.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/inference_gives_input.dart.strong.transformed.expect
index 66e9642..9b71682 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/inference_gives_input.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/inference_gives_input.dart.strong.transformed.expect
@@ -8,7 +8,7 @@
     ;
 }
 class B<T extends core::num = core::num, S extends core::List<self::B::T> = core::List<core::num>> extends self::A<self::B::T> {
-  constructor •([self::B::T x = #C1]) → self::B<self::B::T, self::B::S>
+  constructor •([self::B::T x = null]) → self::B<self::B::T, self::B::S>
     : super self::A::•() {}
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/invalid_cast.dart.legacy.expect b/pkg/front_end/testcases/invalid_cast.dart.legacy.expect
index 6e385c9..40b3d8c 100644
--- a/pkg/front_end/testcases/invalid_cast.dart.legacy.expect
+++ b/pkg/front_end/testcases/invalid_cast.dart.legacy.expect
@@ -35,8 +35,8 @@
   self::D f = new self::D::•();
   self::D g = new self::C::nonFact();
   self::D h = new self::C::nonFact2();
-  (core::Object) → void i = #C1;
-  (core::Object) → void j = #C2;
+  (core::Object) → void i = self::C::staticFunction;
+  (core::Object) → void j = self::topLevelFunction;
   (core::Object) → void k = localFunction;
 }
 static method ok() → dynamic {
@@ -49,8 +49,8 @@
   self::D f = new self::D::•();
   self::C g = new self::C::nonFact();
   self::C h = new self::C::nonFact2();
-  (core::int) → void i = #C1;
-  (core::int) → void j = #C2;
+  (core::int) → void i = self::C::staticFunction;
+  (core::int) → void j = self::topLevelFunction;
   (core::int) → void k = localFunction;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/invalid_cast.dart.legacy.transformed.expect b/pkg/front_end/testcases/invalid_cast.dart.legacy.transformed.expect
index 6e385c9..40b3d8c 100644
--- a/pkg/front_end/testcases/invalid_cast.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/invalid_cast.dart.legacy.transformed.expect
@@ -35,8 +35,8 @@
   self::D f = new self::D::•();
   self::D g = new self::C::nonFact();
   self::D h = new self::C::nonFact2();
-  (core::Object) → void i = #C1;
-  (core::Object) → void j = #C2;
+  (core::Object) → void i = self::C::staticFunction;
+  (core::Object) → void j = self::topLevelFunction;
   (core::Object) → void k = localFunction;
 }
 static method ok() → dynamic {
@@ -49,8 +49,8 @@
   self::D f = new self::D::•();
   self::C g = new self::C::nonFact();
   self::C h = new self::C::nonFact2();
-  (core::int) → void i = #C1;
-  (core::int) → void j = #C2;
+  (core::int) → void i = self::C::staticFunction;
+  (core::int) → void j = self::topLevelFunction;
   (core::int) → void k = localFunction;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/invalid_cast.dart.strong.expect b/pkg/front_end/testcases/invalid_cast.dart.strong.expect
index 1f05886..f9329e5 100644
--- a/pkg/front_end/testcases/invalid_cast.dart.strong.expect
+++ b/pkg/front_end/testcases/invalid_cast.dart.strong.expect
@@ -130,12 +130,12 @@
  - 'Object' is from 'dart:core'.
 Change the type of the method or the context in which it is used.
   void Function(Object) i = C.staticFunction;
-                              ^" in #C1;
+                              ^" in self::C::staticFunction;
   (core::Object) → void j = let final<BottomType> #t8 = invalid-expression "pkg/front_end/testcases/invalid_cast.dart:29:29: Error: The top level function has type 'void Function(int)' that isn't of expected type 'void Function(Object)'.
  - 'Object' is from 'dart:core'.
 Change the type of the function or the context in which it is used.
   void Function(Object) j = topLevelFunction;
-                            ^" in #C2;
+                            ^" in self::topLevelFunction;
   (core::Object) → void k = let final<BottomType> #t9 = invalid-expression "pkg/front_end/testcases/invalid_cast.dart:30:29: Error: The local function has type 'void Function(int)' that isn't of expected type 'void Function(Object)'.
  - 'Object' is from 'dart:core'.
 Change the type of the function or the context in which it is used.
@@ -152,8 +152,8 @@
   self::D f = new self::D::•() as{TypeError} self::D;
   self::C g = new self::C::nonFact();
   self::C h = new self::C::nonFact2();
-  (core::int) → void i = #C1;
-  (core::int) → void j = #C2;
+  (core::int) → void i = self::C::staticFunction;
+  (core::int) → void j = self::topLevelFunction;
   (core::int) → void k = localFunction;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/invalid_cast.dart.strong.transformed.expect b/pkg/front_end/testcases/invalid_cast.dart.strong.transformed.expect
index aa98ae6..6e9e1eb 100644
--- a/pkg/front_end/testcases/invalid_cast.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/invalid_cast.dart.strong.transformed.expect
@@ -130,12 +130,12 @@
  - 'Object' is from 'dart:core'.
 Change the type of the method or the context in which it is used.
   void Function(Object) i = C.staticFunction;
-                              ^" in #C1;
+                              ^" in self::C::staticFunction;
   (core::Object) → void j = let final<BottomType> #t8 = invalid-expression "pkg/front_end/testcases/invalid_cast.dart:29:29: Error: The top level function has type 'void Function(int)' that isn't of expected type 'void Function(Object)'.
  - 'Object' is from 'dart:core'.
 Change the type of the function or the context in which it is used.
   void Function(Object) j = topLevelFunction;
-                            ^" in #C2;
+                            ^" in self::topLevelFunction;
   (core::Object) → void k = let final<BottomType> #t9 = invalid-expression "pkg/front_end/testcases/invalid_cast.dart:30:29: Error: The local function has type 'void Function(int)' that isn't of expected type 'void Function(Object)'.
  - 'Object' is from 'dart:core'.
 Change the type of the function or the context in which it is used.
@@ -152,8 +152,8 @@
   self::D f = new self::D::•() as{TypeError} self::D;
   self::C g = new self::C::nonFact();
   self::C h = new self::C::nonFact2();
-  (core::int) → void i = #C1;
-  (core::int) → void j = #C2;
+  (core::int) → void i = self::C::staticFunction;
+  (core::int) → void j = self::topLevelFunction;
   (core::int) → void k = localFunction;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/legacy.status b/pkg/front_end/testcases/legacy.status
index ce6ee1e..7fadc91 100644
--- a/pkg/front_end/testcases/legacy.status
+++ b/pkg/front_end/testcases/legacy.status
@@ -132,6 +132,3 @@
 type_variable_as_super: Fail
 uninitialized_fields: Fail # Fasta and dartk disagree on static initializers
 void_methods: Fail # Bad return from setters.
-mixin_constructors_with_default_values: RuntimeError # Fasta testing framework can't handle fromEnvironment constants.
-nested_implicit_const_with_env_var: RuntimeError # Fasta testing framework can't handle fromEnvironment constants.
-rasta/supports_reflection: RuntimeError # Fasta testing framework can't handle fromEnvironment constants.
diff --git a/pkg/front_end/testcases/literals.dart.legacy.expect b/pkg/front_end/testcases/literals.dart.legacy.expect
index 9eaf0c6..bd49a1d 100644
--- a/pkg/front_end/testcases/literals.dart.legacy.expect
+++ b/pkg/front_end/testcases/literals.dart.legacy.expect
@@ -27,9 +27,9 @@
   core::print(<dynamic, dynamic>{"a": "b"});
 }
 static method testSymbol() → dynamic {
-  core::print(#C1);
-  core::print(#C2);
-  core::print(#C3);
+  core::print(#fisk);
+  core::print(#_fisk);
+  core::print(#fisk.hest.ko);
 }
 static method main() → dynamic {
   self::testString();
diff --git a/pkg/front_end/testcases/literals.dart.legacy.transformed.expect b/pkg/front_end/testcases/literals.dart.legacy.transformed.expect
index 9eaf0c6..bd49a1d 100644
--- a/pkg/front_end/testcases/literals.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/literals.dart.legacy.transformed.expect
@@ -27,9 +27,9 @@
   core::print(<dynamic, dynamic>{"a": "b"});
 }
 static method testSymbol() → dynamic {
-  core::print(#C1);
-  core::print(#C2);
-  core::print(#C3);
+  core::print(#fisk);
+  core::print(#_fisk);
+  core::print(#fisk.hest.ko);
 }
 static method main() → dynamic {
   self::testString();
diff --git a/pkg/front_end/testcases/literals.dart.strong.expect b/pkg/front_end/testcases/literals.dart.strong.expect
index 0d13ca9..8fa18be 100644
--- a/pkg/front_end/testcases/literals.dart.strong.expect
+++ b/pkg/front_end/testcases/literals.dart.strong.expect
@@ -27,9 +27,9 @@
   core::print(<core::String, core::String>{"a": "b"});
 }
 static method testSymbol() → dynamic {
-  core::print(#C1);
-  core::print(#C2);
-  core::print(#C3);
+  core::print(#fisk);
+  core::print(#_fisk);
+  core::print(#fisk.hest.ko);
 }
 static method main() → dynamic {
   self::testString();
diff --git a/pkg/front_end/testcases/literals.dart.strong.transformed.expect b/pkg/front_end/testcases/literals.dart.strong.transformed.expect
index 0d13ca9..8fa18be 100644
--- a/pkg/front_end/testcases/literals.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/literals.dart.strong.transformed.expect
@@ -27,9 +27,9 @@
   core::print(<core::String, core::String>{"a": "b"});
 }
 static method testSymbol() → dynamic {
-  core::print(#C1);
-  core::print(#C2);
-  core::print(#C3);
+  core::print(#fisk);
+  core::print(#_fisk);
+  core::print(#fisk.hest.ko);
 }
 static method main() → dynamic {
   self::testString();
diff --git a/pkg/front_end/testcases/magic_const.dart.legacy.expect b/pkg/front_end/testcases/magic_const.dart.legacy.expect
index 1332f58..3b3544f 100644
--- a/pkg/front_end/testcases/magic_const.dart.legacy.expect
+++ b/pkg/front_end/testcases/magic_const.dart.legacy.expect
@@ -1,13 +1,3 @@
-//
-// Problems in component:
-//
-// pkg/front_end/testcases/magic_const.dart:15:39: Error: Can't have a non-constant List literal within a const context.
-// foo({a: Constant(), b: Constant(), c: []}) {}
-//                                       ^
-// pkg/front_end/testcases/magic_const.dart:15:36: Context: While analyzing:
-// foo({a: Constant(), b: Constant(), c: []}) {}
-//                                    ^
-//
 library;
 //
 // Problems in library:
@@ -30,13 +20,15 @@
     : super core::Object::•()
     ;
 }
-static method foo({dynamic a = #C1, dynamic b = #C1, dynamic c = invalid-expression "Can't have a non-constant List literal within a const context."}) → dynamic {}
+static method foo({dynamic a = const self::Constant::•(), dynamic b = const self::Constant::•(), dynamic c = <dynamic>[]}) → dynamic {}
 static method test() → dynamic {
   invalid-expression "pkg/front_end/testcases/magic_const.dart:18:9: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
 Try using a constructor or factory that is 'const'.
   const NotConstant();
         ^^^^^^^^^^^";
   new self::Constant::•();
+  const dynamic x = const self::Constant::•();
   core::bool::fromEnvironment("fisk");
+  const dynamic b = const core::bool::fromEnvironment("fisk");
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/magic_const.dart.legacy.transformed.expect b/pkg/front_end/testcases/magic_const.dart.legacy.transformed.expect
index 1332f58..3b3544f 100644
--- a/pkg/front_end/testcases/magic_const.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/magic_const.dart.legacy.transformed.expect
@@ -1,13 +1,3 @@
-//
-// Problems in component:
-//
-// pkg/front_end/testcases/magic_const.dart:15:39: Error: Can't have a non-constant List literal within a const context.
-// foo({a: Constant(), b: Constant(), c: []}) {}
-//                                       ^
-// pkg/front_end/testcases/magic_const.dart:15:36: Context: While analyzing:
-// foo({a: Constant(), b: Constant(), c: []}) {}
-//                                    ^
-//
 library;
 //
 // Problems in library:
@@ -30,13 +20,15 @@
     : super core::Object::•()
     ;
 }
-static method foo({dynamic a = #C1, dynamic b = #C1, dynamic c = invalid-expression "Can't have a non-constant List literal within a const context."}) → dynamic {}
+static method foo({dynamic a = const self::Constant::•(), dynamic b = const self::Constant::•(), dynamic c = <dynamic>[]}) → dynamic {}
 static method test() → dynamic {
   invalid-expression "pkg/front_end/testcases/magic_const.dart:18:9: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
 Try using a constructor or factory that is 'const'.
   const NotConstant();
         ^^^^^^^^^^^";
   new self::Constant::•();
+  const dynamic x = const self::Constant::•();
   core::bool::fromEnvironment("fisk");
+  const dynamic b = const core::bool::fromEnvironment("fisk");
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/magic_const.dart.strong.expect b/pkg/front_end/testcases/magic_const.dart.strong.expect
index 1332f58..8bd3e19 100644
--- a/pkg/front_end/testcases/magic_const.dart.strong.expect
+++ b/pkg/front_end/testcases/magic_const.dart.strong.expect
@@ -1,13 +1,3 @@
-//
-// Problems in component:
-//
-// pkg/front_end/testcases/magic_const.dart:15:39: Error: Can't have a non-constant List literal within a const context.
-// foo({a: Constant(), b: Constant(), c: []}) {}
-//                                       ^
-// pkg/front_end/testcases/magic_const.dart:15:36: Context: While analyzing:
-// foo({a: Constant(), b: Constant(), c: []}) {}
-//                                    ^
-//
 library;
 //
 // Problems in library:
@@ -30,13 +20,15 @@
     : super core::Object::•()
     ;
 }
-static method foo({dynamic a = #C1, dynamic b = #C1, dynamic c = invalid-expression "Can't have a non-constant List literal within a const context."}) → dynamic {}
+static method foo({dynamic a = const self::Constant::•(), dynamic b = const self::Constant::•(), dynamic c = <dynamic>[]}) → dynamic {}
 static method test() → dynamic {
   invalid-expression "pkg/front_end/testcases/magic_const.dart:18:9: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
 Try using a constructor or factory that is 'const'.
   const NotConstant();
         ^^^^^^^^^^^";
   new self::Constant::•();
+  const self::Constant x = const self::Constant::•();
   core::bool::fromEnvironment("fisk");
+  const core::bool b = const core::bool::fromEnvironment("fisk");
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/magic_const.dart.strong.transformed.expect b/pkg/front_end/testcases/magic_const.dart.strong.transformed.expect
index 1332f58..8bd3e19 100644
--- a/pkg/front_end/testcases/magic_const.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/magic_const.dart.strong.transformed.expect
@@ -1,13 +1,3 @@
-//
-// Problems in component:
-//
-// pkg/front_end/testcases/magic_const.dart:15:39: Error: Can't have a non-constant List literal within a const context.
-// foo({a: Constant(), b: Constant(), c: []}) {}
-//                                       ^
-// pkg/front_end/testcases/magic_const.dart:15:36: Context: While analyzing:
-// foo({a: Constant(), b: Constant(), c: []}) {}
-//                                    ^
-//
 library;
 //
 // Problems in library:
@@ -30,13 +20,15 @@
     : super core::Object::•()
     ;
 }
-static method foo({dynamic a = #C1, dynamic b = #C1, dynamic c = invalid-expression "Can't have a non-constant List literal within a const context."}) → dynamic {}
+static method foo({dynamic a = const self::Constant::•(), dynamic b = const self::Constant::•(), dynamic c = <dynamic>[]}) → dynamic {}
 static method test() → dynamic {
   invalid-expression "pkg/front_end/testcases/magic_const.dart:18:9: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
 Try using a constructor or factory that is 'const'.
   const NotConstant();
         ^^^^^^^^^^^";
   new self::Constant::•();
+  const self::Constant x = const self::Constant::•();
   core::bool::fromEnvironment("fisk");
+  const core::bool b = const core::bool::fromEnvironment("fisk");
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/metadata_enum.dart.legacy.expect b/pkg/front_end/testcases/metadata_enum.dart.legacy.expect
index 9200c62..d406cf8 100644
--- a/pkg/front_end/testcases/metadata_enum.dart.legacy.expect
+++ b/pkg/front_end/testcases/metadata_enum.dart.legacy.expect
@@ -2,19 +2,19 @@
 import self as self;
 import "dart:core" as core;
 
-@#C1
+@self::a
 class E extends core::Object {
   final field core::int index;
   final field core::String _name;
-  static const field core::List<self::E> values = #C11;
-  static const field self::E E1 = #C4;
-  static const field self::E E2 = #C7;
-  static const field self::E E3 = #C10;
+  static const field core::List<self::E> values = const <self::E>[self::E::E1, self::E::E2, self::E::E3];
+  static const field self::E E1 = const self::E::•(0, "E.E1");
+  static const field self::E E2 = const self::E::•(1, "E.E2");
+  static const field self::E E3 = const self::E::•(2, "E.E3");
   const constructor •(core::int index, core::String _name) → self::E
     : self::E::index = index, self::E::_name = _name, super core::Object::•()
     ;
   method toString() → core::String
     return this.{=self::E::_name};
 }
-static const field dynamic a = #C1;
+static const field dynamic a = null;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/metadata_enum.dart.legacy.transformed.expect b/pkg/front_end/testcases/metadata_enum.dart.legacy.transformed.expect
index 9200c62..d406cf8 100644
--- a/pkg/front_end/testcases/metadata_enum.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/metadata_enum.dart.legacy.transformed.expect
@@ -2,19 +2,19 @@
 import self as self;
 import "dart:core" as core;
 
-@#C1
+@self::a
 class E extends core::Object {
   final field core::int index;
   final field core::String _name;
-  static const field core::List<self::E> values = #C11;
-  static const field self::E E1 = #C4;
-  static const field self::E E2 = #C7;
-  static const field self::E E3 = #C10;
+  static const field core::List<self::E> values = const <self::E>[self::E::E1, self::E::E2, self::E::E3];
+  static const field self::E E1 = const self::E::•(0, "E.E1");
+  static const field self::E E2 = const self::E::•(1, "E.E2");
+  static const field self::E E3 = const self::E::•(2, "E.E3");
   const constructor •(core::int index, core::String _name) → self::E
     : self::E::index = index, self::E::_name = _name, super core::Object::•()
     ;
   method toString() → core::String
     return this.{=self::E::_name};
 }
-static const field dynamic a = #C1;
+static const field dynamic a = null;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/metadata_enum.dart.strong.expect b/pkg/front_end/testcases/metadata_enum.dart.strong.expect
index 9200c62..d406cf8 100644
--- a/pkg/front_end/testcases/metadata_enum.dart.strong.expect
+++ b/pkg/front_end/testcases/metadata_enum.dart.strong.expect
@@ -2,19 +2,19 @@
 import self as self;
 import "dart:core" as core;
 
-@#C1
+@self::a
 class E extends core::Object {
   final field core::int index;
   final field core::String _name;
-  static const field core::List<self::E> values = #C11;
-  static const field self::E E1 = #C4;
-  static const field self::E E2 = #C7;
-  static const field self::E E3 = #C10;
+  static const field core::List<self::E> values = const <self::E>[self::E::E1, self::E::E2, self::E::E3];
+  static const field self::E E1 = const self::E::•(0, "E.E1");
+  static const field self::E E2 = const self::E::•(1, "E.E2");
+  static const field self::E E3 = const self::E::•(2, "E.E3");
   const constructor •(core::int index, core::String _name) → self::E
     : self::E::index = index, self::E::_name = _name, super core::Object::•()
     ;
   method toString() → core::String
     return this.{=self::E::_name};
 }
-static const field dynamic a = #C1;
+static const field dynamic a = null;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/metadata_enum.dart.strong.transformed.expect b/pkg/front_end/testcases/metadata_enum.dart.strong.transformed.expect
index 9200c62..d406cf8 100644
--- a/pkg/front_end/testcases/metadata_enum.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/metadata_enum.dart.strong.transformed.expect
@@ -2,19 +2,19 @@
 import self as self;
 import "dart:core" as core;
 
-@#C1
+@self::a
 class E extends core::Object {
   final field core::int index;
   final field core::String _name;
-  static const field core::List<self::E> values = #C11;
-  static const field self::E E1 = #C4;
-  static const field self::E E2 = #C7;
-  static const field self::E E3 = #C10;
+  static const field core::List<self::E> values = const <self::E>[self::E::E1, self::E::E2, self::E::E3];
+  static const field self::E E1 = const self::E::•(0, "E.E1");
+  static const field self::E E2 = const self::E::•(1, "E.E2");
+  static const field self::E E3 = const self::E::•(2, "E.E3");
   const constructor •(core::int index, core::String _name) → self::E
     : self::E::index = index, self::E::_name = _name, super core::Object::•()
     ;
   method toString() → core::String
     return this.{=self::E::_name};
 }
-static const field dynamic a = #C1;
+static const field dynamic a = null;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/metadata_named_mixin_application.dart.legacy.expect b/pkg/front_end/testcases/metadata_named_mixin_application.dart.legacy.expect
index a19bb69..43d0e37 100644
--- a/pkg/front_end/testcases/metadata_named_mixin_application.dart.legacy.expect
+++ b/pkg/front_end/testcases/metadata_named_mixin_application.dart.legacy.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-@#C1
+@self::a
 class C = self::D with self::E {
   synthetic constructor •() → self::C
     : super self::D::•()
@@ -18,5 +18,5 @@
     : super core::Object::•()
     ;
 }
-static const field dynamic a = #C1;
+static const field dynamic a = null;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/metadata_named_mixin_application.dart.legacy.transformed.expect b/pkg/front_end/testcases/metadata_named_mixin_application.dart.legacy.transformed.expect
index 1f54962..0c681d3 100644
--- a/pkg/front_end/testcases/metadata_named_mixin_application.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/metadata_named_mixin_application.dart.legacy.transformed.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-@#C1
+@self::a
 class C extends self::D implements self::E {
   synthetic constructor •() → self::C
     : super self::D::•()
@@ -18,5 +18,5 @@
     : super core::Object::•()
     ;
 }
-static const field dynamic a = #C1;
+static const field dynamic a = null;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/metadata_named_mixin_application.dart.strong.expect b/pkg/front_end/testcases/metadata_named_mixin_application.dart.strong.expect
index a19bb69..43d0e37 100644
--- a/pkg/front_end/testcases/metadata_named_mixin_application.dart.strong.expect
+++ b/pkg/front_end/testcases/metadata_named_mixin_application.dart.strong.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-@#C1
+@self::a
 class C = self::D with self::E {
   synthetic constructor •() → self::C
     : super self::D::•()
@@ -18,5 +18,5 @@
     : super core::Object::•()
     ;
 }
-static const field dynamic a = #C1;
+static const field dynamic a = null;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/metadata_named_mixin_application.dart.strong.transformed.expect b/pkg/front_end/testcases/metadata_named_mixin_application.dart.strong.transformed.expect
index 1f54962..0c681d3 100644
--- a/pkg/front_end/testcases/metadata_named_mixin_application.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/metadata_named_mixin_application.dart.strong.transformed.expect
@@ -2,7 +2,7 @@
 import self as self;
 import "dart:core" as core;
 
-@#C1
+@self::a
 class C extends self::D implements self::E {
   synthetic constructor •() → self::C
     : super self::D::•()
@@ -18,5 +18,5 @@
     : super core::Object::•()
     ;
 }
-static const field dynamic a = #C1;
+static const field dynamic a = null;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/missing_constructor.dart.legacy.expect b/pkg/front_end/testcases/missing_constructor.dart.legacy.expect
index e29cd6b..f6911cc 100644
--- a/pkg/front_end/testcases/missing_constructor.dart.legacy.expect
+++ b/pkg/front_end/testcases/missing_constructor.dart.legacy.expect
@@ -36,18 +36,18 @@
 }
 class Sub extends self::Super {
   constructor •() → self::Sub
-    : final dynamic #t1 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)))
+    : final dynamic #t1 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Super, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))
     ;
   constructor foo() → self::Sub
-    : final dynamic #t2 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)))
+    : final dynamic #t2 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Super.foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))
     ;
 }
 class Bad extends core::Object {
   constructor foo() → self::Bad
-    : final dynamic #t3 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C6, 32, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)))
+    : final dynamic #t3 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Bad, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))
     ;
   constructor bar() → self::Bad
-    : final dynamic #t4 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C7, 32, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)))
+    : final dynamic #t4 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Bad.baz, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))
     ;
 }
 class M extends core::Object {
@@ -62,10 +62,10 @@
 }
 class MixinApplication extends self::_MixinApplication&Super&M {
   constructor •() → self::MixinApplication
-    : final dynamic #t5 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)))
+    : final dynamic #t5 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Super, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))
     ;
   constructor foo() → self::MixinApplication
-    : final dynamic #t6 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)))
+    : final dynamic #t6 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Super.foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))
     ;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/missing_constructor.dart.legacy.transformed.expect b/pkg/front_end/testcases/missing_constructor.dart.legacy.transformed.expect
index 93f3270..518277f 100644
--- a/pkg/front_end/testcases/missing_constructor.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/missing_constructor.dart.legacy.transformed.expect
@@ -36,18 +36,18 @@
 }
 class Sub extends self::Super {
   constructor •() → self::Sub
-    : final dynamic #t1 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)))
+    : final dynamic #t1 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Super, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))
     ;
   constructor foo() → self::Sub
-    : final dynamic #t2 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)))
+    : final dynamic #t2 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Super.foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))
     ;
 }
 class Bad extends core::Object {
   constructor foo() → self::Bad
-    : final dynamic #t3 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C6, 32, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)))
+    : final dynamic #t3 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Bad, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))
     ;
   constructor bar() → self::Bad
-    : final dynamic #t4 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C7, 32, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)))
+    : final dynamic #t4 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Bad.baz, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))
     ;
 }
 class M extends core::Object {
@@ -62,10 +62,10 @@
 }
 class MixinApplication extends self::_MixinApplication&Super&M {
   constructor •() → self::MixinApplication
-    : final dynamic #t5 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)))
+    : final dynamic #t5 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Super, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))
     ;
   constructor foo() → self::MixinApplication
-    : final dynamic #t6 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)))
+    : final dynamic #t6 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Super.foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))
     ;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/mixin_application_override.dart.legacy.expect b/pkg/front_end/testcases/mixin_application_override.dart.legacy.expect
index 1de8878..b5c4a61 100644
--- a/pkg/front_end/testcases/mixin_application_override.dart.legacy.expect
+++ b/pkg/front_end/testcases/mixin_application_override.dart.legacy.expect
@@ -129,7 +129,7 @@
   synthetic constructor •() → self::S
     : super core::Object::•()
     ;
-  method foo([dynamic x = #C1]) → dynamic {}
+  method foo([dynamic x = null]) → dynamic {}
 }
 class M extends core::Object {
   synthetic constructor •() → self::M
diff --git a/pkg/front_end/testcases/mixin_application_override.dart.legacy.transformed.expect b/pkg/front_end/testcases/mixin_application_override.dart.legacy.transformed.expect
index 8055487..c5a8827 100644
--- a/pkg/front_end/testcases/mixin_application_override.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/mixin_application_override.dart.legacy.transformed.expect
@@ -129,7 +129,7 @@
   synthetic constructor •() → self::S
     : super core::Object::•()
     ;
-  method foo([dynamic x = #C1]) → dynamic {}
+  method foo([dynamic x = null]) → dynamic {}
 }
 class M extends core::Object {
   synthetic constructor •() → self::M
diff --git a/pkg/front_end/testcases/mixin_application_override.dart.strong.expect b/pkg/front_end/testcases/mixin_application_override.dart.strong.expect
index 3adad47..879c4c0 100644
--- a/pkg/front_end/testcases/mixin_application_override.dart.strong.expect
+++ b/pkg/front_end/testcases/mixin_application_override.dart.strong.expect
@@ -129,7 +129,7 @@
   synthetic constructor •() → self::S
     : super core::Object::•()
     ;
-  method foo([dynamic x = #C1]) → dynamic {}
+  method foo([dynamic x = null]) → dynamic {}
 }
 class M extends core::Object {
   synthetic constructor •() → self::M
@@ -156,7 +156,7 @@
   synthetic constructor •() → self::A0
     : super self::S::•()
     ;
-  abstract forwarding-stub method foo([dynamic x = #C1]) → dynamic;
+  abstract forwarding-stub method foo([dynamic x = null]) → dynamic;
 }
 abstract class _A1&S&M1 = self::S with self::M1 {
   synthetic constructor •() → self::_A1&S&M1
@@ -167,7 +167,7 @@
   synthetic constructor •() → self::A1
     : super self::_A1&S&M1::•()
     ;
-  abstract forwarding-stub method foo([dynamic x = #C1]) → dynamic;
+  abstract forwarding-stub method foo([dynamic x = null]) → dynamic;
 }
 abstract class _A2&S&M1 = self::S with self::M1 {
   synthetic constructor •() → self::_A2&S&M1
@@ -183,13 +183,13 @@
   synthetic constructor •() → self::A2
     : super self::_A2&S&M1&M2::•()
     ;
-  abstract forwarding-stub method foo([dynamic x = #C1]) → dynamic;
+  abstract forwarding-stub method foo([dynamic x = null]) → dynamic;
 }
 abstract class _A0X&S&M = self::S with self::M {
   synthetic constructor •() → self::_A0X&S&M
     : super self::S::•()
     ;
-  abstract forwarding-stub method foo([dynamic x = #C1]) → dynamic;
+  abstract forwarding-stub method foo([dynamic x = null]) → dynamic;
 }
 class A0X = self::_A0X&S&M with self::MX {
   synthetic constructor •() → self::A0X
@@ -205,7 +205,7 @@
   synthetic constructor •() → self::_A1X&S&M1&M
     : super self::_A1X&S&M1::•()
     ;
-  abstract forwarding-stub method foo([dynamic x = #C1]) → dynamic;
+  abstract forwarding-stub method foo([dynamic x = null]) → dynamic;
 }
 class A1X = self::_A1X&S&M1&M with self::MX {
   synthetic constructor •() → self::A1X
@@ -226,7 +226,7 @@
   synthetic constructor •() → self::_A2X&S&M1&M2&M
     : super self::_A2X&S&M1&M2::•()
     ;
-  abstract forwarding-stub method foo([dynamic x = #C1]) → dynamic;
+  abstract forwarding-stub method foo([dynamic x = null]) → dynamic;
 }
 class A2X = self::_A2X&S&M1&M2&M with self::MX {
   synthetic constructor •() → self::A2X
@@ -237,7 +237,7 @@
   synthetic constructor •() → self::_B0&S&M
     : super self::S::•()
     ;
-  abstract forwarding-stub method foo([dynamic x = #C1]) → dynamic;
+  abstract forwarding-stub method foo([dynamic x = null]) → dynamic;
 }
 class B0 extends self::_B0&S&M {
   synthetic constructor •() → self::B0
@@ -253,7 +253,7 @@
   synthetic constructor •() → self::_B1&S&M1&M
     : super self::_B1&S&M1::•()
     ;
-  abstract forwarding-stub method foo([dynamic x = #C1]) → dynamic;
+  abstract forwarding-stub method foo([dynamic x = null]) → dynamic;
 }
 class B1 extends self::_B1&S&M1&M {
   synthetic constructor •() → self::B1
@@ -274,7 +274,7 @@
   synthetic constructor •() → self::_B2&S&M1&M2&M
     : super self::_B2&S&M1&M2::•()
     ;
-  abstract forwarding-stub method foo([dynamic x = #C1]) → dynamic;
+  abstract forwarding-stub method foo([dynamic x = null]) → dynamic;
 }
 class B2 extends self::_B2&S&M1&M2&M {
   synthetic constructor •() → self::B2
@@ -285,7 +285,7 @@
   synthetic constructor •() → self::_B0X&S&M
     : super self::S::•()
     ;
-  abstract forwarding-stub method foo([dynamic x = #C1]) → dynamic;
+  abstract forwarding-stub method foo([dynamic x = null]) → dynamic;
 }
 abstract class _B0X&S&M&MX = self::_B0X&S&M with self::MX {
   synthetic constructor •() → self::_B0X&S&M&MX
@@ -306,7 +306,7 @@
   synthetic constructor •() → self::_B1X&S&M1&M
     : super self::_B1X&S&M1::•()
     ;
-  abstract forwarding-stub method foo([dynamic x = #C1]) → dynamic;
+  abstract forwarding-stub method foo([dynamic x = null]) → dynamic;
 }
 abstract class _B1X&S&M1&M&MX = self::_B1X&S&M1&M with self::MX {
   synthetic constructor •() → self::_B1X&S&M1&M&MX
@@ -332,7 +332,7 @@
   synthetic constructor •() → self::_B2X&S&M1&M2&M
     : super self::_B2X&S&M1&M2::•()
     ;
-  abstract forwarding-stub method foo([dynamic x = #C1]) → dynamic;
+  abstract forwarding-stub method foo([dynamic x = null]) → dynamic;
 }
 abstract class _B2X&S&M1&M2&M&MX = self::_B2X&S&M1&M2&M with self::MX {
   synthetic constructor •() → self::_B2X&S&M1&M2&M&MX
diff --git a/pkg/front_end/testcases/mixin_constructors_with_default_values.dart.legacy.expect b/pkg/front_end/testcases/mixin_constructors_with_default_values.dart.legacy.expect
index e72b71c..0e4502f 100644
--- a/pkg/front_end/testcases/mixin_constructors_with_default_values.dart.legacy.expect
+++ b/pkg/front_end/testcases/mixin_constructors_with_default_values.dart.legacy.expect
@@ -1,13 +1,3 @@
-//
-// Problems in component:
-//
-// pkg/front_end/testcases/mixin_constructors_with_default_values.dart:9:15: Error: The type 'T' is not a constant because it depends on a type parameter, only instantiated types are allowed.
-//   C({a: 0, b: T}) : trace = "a: $a, b: $b";
-//               ^
-// pkg/front_end/testcases/mixin_constructors_with_default_values.dart:9:12: Context: While analyzing:
-//   C({a: 0, b: T}) : trace = "a: $a, b: $b";
-//            ^
-//
 library;
 import self as self;
 import "dart:core" as core;
@@ -17,7 +7,7 @@
 
 class C<T extends core::Object = dynamic> extends core::Object {
   field core::String trace;
-  constructor •({dynamic a = #C1, dynamic b = invalid-expression "The type 'T' is not a constant because it depends on a type parameter, only instantiated types are allowed."}) → self::C<self::C::T>
+  constructor •({dynamic a = 0, dynamic b = self::C::T}) → self::C<self::C::T>
     : self::C::trace = "a: ${a}, b: ${b}", super core::Object::•()
     ;
 }
@@ -27,7 +17,7 @@
     ;
 }
 class D = self::C<core::String> with self::M {
-  synthetic constructor •({dynamic a = #C1, dynamic b = #C2}) → self::D
+  synthetic constructor •({dynamic a = 0, dynamic b = core::String}) → self::D
     : super self::C::•(a: a, b: b)
     ;
 }
@@ -37,7 +27,7 @@
     ;
 }
 abstract class _F&C&M = self::C<core::int> with self::M {
-  synthetic constructor •({dynamic a = #C1, dynamic b = #C3}) → self::_F&C&M
+  synthetic constructor •({dynamic a = 0, dynamic b = core::int}) → self::_F&C&M
     : super self::C::•(a: a, b: b)
     ;
 }
diff --git a/pkg/front_end/testcases/mixin_constructors_with_default_values.dart.legacy.transformed.expect b/pkg/front_end/testcases/mixin_constructors_with_default_values.dart.legacy.transformed.expect
index ac25a59..7809f36 100644
--- a/pkg/front_end/testcases/mixin_constructors_with_default_values.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/mixin_constructors_with_default_values.dart.legacy.transformed.expect
@@ -1,13 +1,3 @@
-//
-// Problems in component:
-//
-// pkg/front_end/testcases/mixin_constructors_with_default_values.dart:9:15: Error: The type 'T' is not a constant because it depends on a type parameter, only instantiated types are allowed.
-//   C({a: 0, b: T}) : trace = "a: $a, b: $b";
-//               ^
-// pkg/front_end/testcases/mixin_constructors_with_default_values.dart:9:12: Context: While analyzing:
-//   C({a: 0, b: T}) : trace = "a: $a, b: $b";
-//            ^
-//
 library;
 import self as self;
 import "dart:core" as core;
@@ -17,7 +7,7 @@
 
 class C<T extends core::Object = dynamic> extends core::Object {
   field core::String trace;
-  constructor •({dynamic a = #C1, dynamic b = invalid-expression "The type 'T' is not a constant because it depends on a type parameter, only instantiated types are allowed."}) → self::C<self::C::T>
+  constructor •({dynamic a = 0, dynamic b = self::C::T}) → self::C<self::C::T>
     : self::C::trace = "a: ${a}, b: ${b}", super core::Object::•()
     ;
 }
@@ -27,7 +17,7 @@
     ;
 }
 class D extends self::C<core::String> implements self::M {
-  synthetic constructor •({dynamic a = #C1, dynamic b = #C2}) → self::D
+  synthetic constructor •({dynamic a = 0, dynamic b = core::String}) → self::D
     : super self::C::•(a: a, b: b)
     ;
 }
@@ -37,7 +27,7 @@
     ;
 }
 abstract class _F&C&M extends self::C<core::int> implements self::M {
-  synthetic constructor •({dynamic a = #C1, dynamic b = #C3}) → self::_F&C&M
+  synthetic constructor •({dynamic a = 0, dynamic b = core::int}) → self::_F&C&M
     : super self::C::•(a: a, b: b)
     ;
 }
diff --git a/pkg/front_end/testcases/mixin_constructors_with_default_values.dart.strong.expect b/pkg/front_end/testcases/mixin_constructors_with_default_values.dart.strong.expect
index f2cf43d..883e7fe 100644
--- a/pkg/front_end/testcases/mixin_constructors_with_default_values.dart.strong.expect
+++ b/pkg/front_end/testcases/mixin_constructors_with_default_values.dart.strong.expect
@@ -1,13 +1,3 @@
-//
-// Problems in component:
-//
-// pkg/front_end/testcases/mixin_constructors_with_default_values.dart:9:15: Error: The type 'T' is not a constant because it depends on a type parameter, only instantiated types are allowed.
-//   C({a: 0, b: T}) : trace = "a: $a, b: $b";
-//               ^
-// pkg/front_end/testcases/mixin_constructors_with_default_values.dart:9:12: Context: While analyzing:
-//   C({a: 0, b: T}) : trace = "a: $a, b: $b";
-//            ^
-//
 library;
 import self as self;
 import "dart:core" as core;
@@ -17,7 +7,7 @@
 
 class C<T extends core::Object = dynamic> extends core::Object {
   field core::String trace;
-  constructor •({dynamic a = #C1, dynamic b = invalid-expression "The type 'T' is not a constant because it depends on a type parameter, only instantiated types are allowed."}) → self::C<self::C::T>
+  constructor •({dynamic a = 0, dynamic b = self::C::T}) → self::C<self::C::T>
     : self::C::trace = "a: ${a}, b: ${b}", super core::Object::•()
     ;
 }
@@ -27,7 +17,7 @@
     ;
 }
 class D = self::C<core::String> with self::M {
-  synthetic constructor •({dynamic a = #C1, dynamic b = #C2}) → self::D
+  synthetic constructor •({dynamic a = 0, dynamic b = core::String}) → self::D
     : super self::C::•(a: a, b: b)
     ;
 }
@@ -37,7 +27,7 @@
     ;
 }
 abstract class _F&C&M = self::C<core::int> with self::M {
-  synthetic constructor •({dynamic a = #C1, dynamic b = #C3}) → self::_F&C&M
+  synthetic constructor •({dynamic a = 0, dynamic b = core::int}) → self::_F&C&M
     : super self::C::•(a: a, b: b)
     ;
 }
diff --git a/pkg/front_end/testcases/mixin_constructors_with_default_values.dart.strong.transformed.expect b/pkg/front_end/testcases/mixin_constructors_with_default_values.dart.strong.transformed.expect
index 74d5fe9..298c8c8 100644
--- a/pkg/front_end/testcases/mixin_constructors_with_default_values.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/mixin_constructors_with_default_values.dart.strong.transformed.expect
@@ -1,13 +1,3 @@
-//
-// Problems in component:
-//
-// pkg/front_end/testcases/mixin_constructors_with_default_values.dart:9:15: Error: The type 'T' is not a constant because it depends on a type parameter, only instantiated types are allowed.
-//   C({a: 0, b: T}) : trace = "a: $a, b: $b";
-//               ^
-// pkg/front_end/testcases/mixin_constructors_with_default_values.dart:9:12: Context: While analyzing:
-//   C({a: 0, b: T}) : trace = "a: $a, b: $b";
-//            ^
-//
 library;
 import self as self;
 import "dart:core" as core;
@@ -17,7 +7,7 @@
 
 class C<T extends core::Object = dynamic> extends core::Object {
   field core::String trace;
-  constructor •({dynamic a = #C1, dynamic b = invalid-expression "The type 'T' is not a constant because it depends on a type parameter, only instantiated types are allowed."}) → self::C<self::C::T>
+  constructor •({dynamic a = 0, dynamic b = self::C::T}) → self::C<self::C::T>
     : self::C::trace = "a: ${a}, b: ${b}", super core::Object::•()
     ;
 }
@@ -27,7 +17,7 @@
     ;
 }
 class D extends self::C<core::String> implements self::M {
-  synthetic constructor •({dynamic a = #C1, dynamic b = #C2}) → self::D
+  synthetic constructor •({dynamic a = 0, dynamic b = core::String}) → self::D
     : super self::C::•(a: a, b: b)
     ;
 }
@@ -37,7 +27,7 @@
     ;
 }
 abstract class _F&C&M extends self::C<core::int> implements self::M {
-  synthetic constructor •({dynamic a = #C1, dynamic b = #C3}) → self::_F&C&M
+  synthetic constructor •({dynamic a = 0, dynamic b = core::int}) → self::_F&C&M
     : super self::C::•(a: a, b: b)
     ;
 }
diff --git a/pkg/front_end/testcases/named_parameters.dart.strong.expect b/pkg/front_end/testcases/named_parameters.dart.strong.expect
index 0ea9b7a..2a59b49 100644
--- a/pkg/front_end/testcases/named_parameters.dart.strong.expect
+++ b/pkg/front_end/testcases/named_parameters.dart.strong.expect
@@ -6,8 +6,8 @@
   synthetic constructor •() → self::Superclass
     : super core::Object::•()
     ;
-  method foo({dynamic alpha = #C1, dynamic beta = #C1}) → dynamic {}
-  method bar({dynamic beta = #C1, dynamic alpha = #C1}) → dynamic {}
+  method foo({dynamic alpha = null, dynamic beta = null}) → dynamic {}
+  method bar({dynamic beta = null, dynamic alpha = null}) → dynamic {}
   method namedCallback(({alpha: core::String, beta: core::int}) → dynamic callback) → dynamic {
     callback.call(alpha: "one", beta: 2);
     callback.call(beta: 1, alpha: "two");
@@ -17,12 +17,12 @@
   synthetic constructor •() → self::Subclass
     : super self::Superclass::•()
     ;
-  method foo({dynamic beta = #C1, dynamic alpha = #C1}) → dynamic {}
-  method bar({dynamic alpha = #C1, dynamic beta = #C1}) → dynamic {}
+  method foo({dynamic beta = null, dynamic alpha = null}) → dynamic {}
+  method bar({dynamic alpha = null, dynamic beta = null}) → dynamic {}
   method namedCallback(({alpha: core::String, beta: core::int}) → dynamic callback) → dynamic {}
 }
-static method topLevelNamed(dynamic beta, dynamic alpha, {dynamic gamma = #C1, dynamic delta = #C1}) → dynamic {}
-static method topLevelOptional(dynamic beta, dynamic alpha, [dynamic gamma = #C1, dynamic delta = #C1]) → dynamic {}
+static method topLevelNamed(dynamic beta, dynamic alpha, {dynamic gamma = null, dynamic delta = null}) → dynamic {}
+static method topLevelOptional(dynamic beta, dynamic alpha, [dynamic gamma = null, dynamic delta = null]) → dynamic {}
 static method main() → dynamic {
   new self::Subclass::•().{self::Subclass::foo}(beta: 1, alpha: 2);
   new self::Subclass::•().{self::Subclass::foo}(alpha: 1, beta: 2);
diff --git a/pkg/front_end/testcases/named_parameters.dart.strong.transformed.expect b/pkg/front_end/testcases/named_parameters.dart.strong.transformed.expect
index 0ea9b7a..2a59b49 100644
--- a/pkg/front_end/testcases/named_parameters.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/named_parameters.dart.strong.transformed.expect
@@ -6,8 +6,8 @@
   synthetic constructor •() → self::Superclass
     : super core::Object::•()
     ;
-  method foo({dynamic alpha = #C1, dynamic beta = #C1}) → dynamic {}
-  method bar({dynamic beta = #C1, dynamic alpha = #C1}) → dynamic {}
+  method foo({dynamic alpha = null, dynamic beta = null}) → dynamic {}
+  method bar({dynamic beta = null, dynamic alpha = null}) → dynamic {}
   method namedCallback(({alpha: core::String, beta: core::int}) → dynamic callback) → dynamic {
     callback.call(alpha: "one", beta: 2);
     callback.call(beta: 1, alpha: "two");
@@ -17,12 +17,12 @@
   synthetic constructor •() → self::Subclass
     : super self::Superclass::•()
     ;
-  method foo({dynamic beta = #C1, dynamic alpha = #C1}) → dynamic {}
-  method bar({dynamic alpha = #C1, dynamic beta = #C1}) → dynamic {}
+  method foo({dynamic beta = null, dynamic alpha = null}) → dynamic {}
+  method bar({dynamic alpha = null, dynamic beta = null}) → dynamic {}
   method namedCallback(({alpha: core::String, beta: core::int}) → dynamic callback) → dynamic {}
 }
-static method topLevelNamed(dynamic beta, dynamic alpha, {dynamic gamma = #C1, dynamic delta = #C1}) → dynamic {}
-static method topLevelOptional(dynamic beta, dynamic alpha, [dynamic gamma = #C1, dynamic delta = #C1]) → dynamic {}
+static method topLevelNamed(dynamic beta, dynamic alpha, {dynamic gamma = null, dynamic delta = null}) → dynamic {}
+static method topLevelOptional(dynamic beta, dynamic alpha, [dynamic gamma = null, dynamic delta = null]) → dynamic {}
 static method main() → dynamic {
   new self::Subclass::•().{self::Subclass::foo}(beta: 1, alpha: 2);
   new self::Subclass::•().{self::Subclass::foo}(alpha: 1, beta: 2);
diff --git a/pkg/front_end/testcases/native_as_name.dart.legacy.expect b/pkg/front_end/testcases/native_as_name.dart.legacy.expect
index b992dfa..52a151a 100644
--- a/pkg/front_end/testcases/native_as_name.dart.legacy.expect
+++ b/pkg/front_end/testcases/native_as_name.dart.legacy.expect
@@ -25,7 +25,7 @@
   synthetic constructor •() → self::Y2
     : super self::Y1::•()
     ;
-  @#C1
+  @core::override
   get native() → core::String
     return "getter";
 }
diff --git a/pkg/front_end/testcases/native_as_name.dart.legacy.transformed.expect b/pkg/front_end/testcases/native_as_name.dart.legacy.transformed.expect
index b992dfa..52a151a 100644
--- a/pkg/front_end/testcases/native_as_name.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/native_as_name.dart.legacy.transformed.expect
@@ -25,7 +25,7 @@
   synthetic constructor •() → self::Y2
     : super self::Y1::•()
     ;
-  @#C1
+  @core::override
   get native() → core::String
     return "getter";
 }
diff --git a/pkg/front_end/testcases/native_as_name.dart.strong.expect b/pkg/front_end/testcases/native_as_name.dart.strong.expect
index adf3c71..f8d53d9 100644
--- a/pkg/front_end/testcases/native_as_name.dart.strong.expect
+++ b/pkg/front_end/testcases/native_as_name.dart.strong.expect
@@ -25,7 +25,7 @@
   synthetic constructor •() → self::Y2
     : super self::Y1::•()
     ;
-  @#C1
+  @core::override
   get native() → core::String
     return "getter";
 }
diff --git a/pkg/front_end/testcases/native_as_name.dart.strong.transformed.expect b/pkg/front_end/testcases/native_as_name.dart.strong.transformed.expect
index 155b580..beb0031 100644
--- a/pkg/front_end/testcases/native_as_name.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/native_as_name.dart.strong.transformed.expect
@@ -25,7 +25,7 @@
   synthetic constructor •() → self::Y2
     : super self::Y1::•()
     ;
-  @#C1
+  @core::override
   get native() → core::String
     return "getter";
 }
diff --git a/pkg/front_end/testcases/nested_implicit_const_with_env_var.dart.legacy.expect b/pkg/front_end/testcases/nested_implicit_const_with_env_var.dart.legacy.expect
index 7814ac5..bbe754b 100644
--- a/pkg/front_end/testcases/nested_implicit_const_with_env_var.dart.legacy.expect
+++ b/pkg/front_end/testcases/nested_implicit_const_with_env_var.dart.legacy.expect
@@ -19,8 +19,8 @@
     : super core::Object::•()
     ;
   method fun() → dynamic {
-    new self::B::•(new self::A::•(#C2));
+    new self::B::•(new self::A::•(self::foo));
   }
 }
-static const field core::int foo = #C2;
+static const field core::int foo = const core::int::fromEnvironment("fisk");
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nested_implicit_const_with_env_var.dart.legacy.transformed.expect b/pkg/front_end/testcases/nested_implicit_const_with_env_var.dart.legacy.transformed.expect
index 7814ac5..bbe754b 100644
--- a/pkg/front_end/testcases/nested_implicit_const_with_env_var.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/nested_implicit_const_with_env_var.dart.legacy.transformed.expect
@@ -19,8 +19,8 @@
     : super core::Object::•()
     ;
   method fun() → dynamic {
-    new self::B::•(new self::A::•(#C2));
+    new self::B::•(new self::A::•(self::foo));
   }
 }
-static const field core::int foo = #C2;
+static const field core::int foo = const core::int::fromEnvironment("fisk");
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nested_implicit_const_with_env_var.dart.strong.expect b/pkg/front_end/testcases/nested_implicit_const_with_env_var.dart.strong.expect
index 7814ac5..bbe754b 100644
--- a/pkg/front_end/testcases/nested_implicit_const_with_env_var.dart.strong.expect
+++ b/pkg/front_end/testcases/nested_implicit_const_with_env_var.dart.strong.expect
@@ -19,8 +19,8 @@
     : super core::Object::•()
     ;
   method fun() → dynamic {
-    new self::B::•(new self::A::•(#C2));
+    new self::B::•(new self::A::•(self::foo));
   }
 }
-static const field core::int foo = #C2;
+static const field core::int foo = const core::int::fromEnvironment("fisk");
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nested_implicit_const_with_env_var.dart.strong.transformed.expect b/pkg/front_end/testcases/nested_implicit_const_with_env_var.dart.strong.transformed.expect
index 7814ac5..bbe754b 100644
--- a/pkg/front_end/testcases/nested_implicit_const_with_env_var.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nested_implicit_const_with_env_var.dart.strong.transformed.expect
@@ -19,8 +19,8 @@
     : super core::Object::•()
     ;
   method fun() → dynamic {
-    new self::B::•(new self::A::•(#C2));
+    new self::B::•(new self::A::•(self::foo));
   }
 }
-static const field core::int foo = #C2;
+static const field core::int foo = const core::int::fromEnvironment("fisk");
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.legacy.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.legacy.expect
index 07bd6a4..11c8d48 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.legacy.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.legacy.expect
@@ -15,9 +15,9 @@
   method noSuchMethod(dynamic i) → dynamic
     return "bar";
   no-such-method-forwarder get foo() → core::int
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))) as{TypeError} core::int;
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::int;
   no-such-method-forwarder set foo(core::int value) → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 class B extends self::A {
   synthetic constructor •() → self::B
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.legacy.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.legacy.transformed.expect
index 07bd6a4..11c8d48 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.legacy.transformed.expect
@@ -15,9 +15,9 @@
   method noSuchMethod(dynamic i) → dynamic
     return "bar";
   no-such-method-forwarder get foo() → core::int
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))) as{TypeError} core::int;
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::int;
   no-such-method-forwarder set foo(core::int value) → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 class B extends self::A {
   synthetic constructor •() → self::B
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.strong.expect
index 7abbf89..2e65c41 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.strong.expect
@@ -15,9 +15,9 @@
   method noSuchMethod(core::Invocation i) → dynamic
     return "bar";
   no-such-method-forwarder get foo() → core::int
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))) as{TypeError} core::int;
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::int;
   no-such-method-forwarder set foo(core::int value) → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 class B extends self::A {
   synthetic constructor •() → self::B
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.strong.transformed.expect
index 7abbf89..2e65c41 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.strong.transformed.expect
@@ -15,9 +15,9 @@
   method noSuchMethod(core::Invocation i) → dynamic
     return "bar";
   no-such-method-forwarder get foo() → core::int
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))) as{TypeError} core::int;
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::int;
   no-such-method-forwarder set foo(core::int value) → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 class B extends self::A {
   synthetic constructor •() → self::B
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.legacy.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.legacy.expect
index 96c184e..0e0e756 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.legacy.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.legacy.expect
@@ -17,9 +17,9 @@
     return null;
   }
   no-such-method-forwarder get foo() → core::int
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))) as{TypeError} core::int;
+    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::int;
   no-such-method-forwarder set foo(core::int value) → void
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 abstract class _C&Object&B = core::Object with self::B {
   const synthetic constructor •() → self::_C&Object&B
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.legacy.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.legacy.transformed.expect
index f0ebad3..e0f993c 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.legacy.transformed.expect
@@ -17,9 +17,9 @@
     return null;
   }
   no-such-method-forwarder get foo() → core::int
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))) as{TypeError} core::int;
+    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::int;
   no-such-method-forwarder set foo(core::int value) → void
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 abstract class _C&Object&B extends core::Object implements self::B {
   const synthetic constructor •() → self::_C&Object&B
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.strong.expect
index 06eafa1..44c8cbf 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.strong.expect
@@ -17,9 +17,9 @@
     return null;
   }
   no-such-method-forwarder get foo() → core::int
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))) as{TypeError} core::int;
+    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::int;
   no-such-method-forwarder set foo(core::int value) → void
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 abstract class _C&Object&B = core::Object with self::B {
   const synthetic constructor •() → self::_C&Object&B
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.strong.transformed.expect
index 1158653..0685d8a 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.strong.transformed.expect
@@ -17,9 +17,9 @@
     return null;
   }
   no-such-method-forwarder get foo() → core::int
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))) as{TypeError} core::int;
+    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::int;
   no-such-method-forwarder set foo(core::int value) → void
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 abstract class _C&Object&B extends core::Object implements self::B {
   const synthetic constructor •() → self::_C&Object&B
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.legacy.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.legacy.expect
index e14418f8..c7fedd2 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.legacy.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.legacy.expect
@@ -22,7 +22,7 @@
     : super self::B::•()
     ;
   no-such-method-forwarder set foo(core::int value) → void
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 abstract class D extends core::Object implements self::A {
   synthetic constructor •() → self::D
@@ -37,7 +37,7 @@
     : super self::D::•()
     ;
   no-such-method-forwarder get foo() → core::int
-    return this.{self::D::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))) as{TypeError} core::int;
+    return this.{self::D::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::int;
 }
 static method expectTypeError(() → dynamic callback) → void {
   try {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.legacy.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.legacy.transformed.expect
index e14418f8..c7fedd2 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.legacy.transformed.expect
@@ -22,7 +22,7 @@
     : super self::B::•()
     ;
   no-such-method-forwarder set foo(core::int value) → void
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 abstract class D extends core::Object implements self::A {
   synthetic constructor •() → self::D
@@ -37,7 +37,7 @@
     : super self::D::•()
     ;
   no-such-method-forwarder get foo() → core::int
-    return this.{self::D::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))) as{TypeError} core::int;
+    return this.{self::D::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::int;
 }
 static method expectTypeError(() → dynamic callback) → void {
   try {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.strong.expect
index 212f699..cb4a71e 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.strong.expect
@@ -22,7 +22,7 @@
     : super self::B::•()
     ;
   no-such-method-forwarder set foo(core::int value) → void
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 abstract class D extends core::Object implements self::A {
   synthetic constructor •() → self::D
@@ -37,7 +37,7 @@
     : super self::D::•()
     ;
   no-such-method-forwarder get foo() → core::int
-    return this.{self::D::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))) as{TypeError} core::int;
+    return this.{self::D::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::int;
 }
 static method expectTypeError(() → dynamic callback) → void {
   try {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.strong.transformed.expect
index 212f699..cb4a71e 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.strong.transformed.expect
@@ -22,7 +22,7 @@
     : super self::B::•()
     ;
   no-such-method-forwarder set foo(core::int value) → void
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 abstract class D extends core::Object implements self::A {
   synthetic constructor •() → self::D
@@ -37,7 +37,7 @@
     : super self::D::•()
     ;
   no-such-method-forwarder get foo() → core::int
-    return this.{self::D::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))) as{TypeError} core::int;
+    return this.{self::D::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::int;
 }
 static method expectTypeError(() → dynamic callback) → void {
   try {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.legacy.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.legacy.expect
index 974f646..ed949f6 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.legacy.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.legacy.expect
@@ -15,9 +15,9 @@
   method noSuchMethod(dynamic i) → dynamic
     return <dynamic>[];
   no-such-method-forwarder get foo() → core::List<core::int>
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))) as{TypeError} core::List<core::int>;
+    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::List<core::int>;
   no-such-method-forwarder set foo(core::List<core::int> value) → void
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method expectTypeError(() → dynamic callback) → void {
   try {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.legacy.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.legacy.transformed.expect
index 974f646..ed949f6 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.legacy.transformed.expect
@@ -15,9 +15,9 @@
   method noSuchMethod(dynamic i) → dynamic
     return <dynamic>[];
   no-such-method-forwarder get foo() → core::List<core::int>
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))) as{TypeError} core::List<core::int>;
+    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::List<core::int>;
   no-such-method-forwarder set foo(core::List<core::int> value) → void
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method expectTypeError(() → dynamic callback) → void {
   try {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.strong.expect
index 9a4a5fd..0b0b415 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.strong.expect
@@ -15,9 +15,9 @@
   method noSuchMethod(core::Invocation i) → dynamic
     return <dynamic>[];
   no-such-method-forwarder get foo() → core::List<core::int>
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))) as{TypeError} core::List<core::int>;
+    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::List<core::int>;
   no-such-method-forwarder set foo(core::List<core::int> value) → void
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method expectTypeError(() → dynamic callback) → void {
   try {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.strong.transformed.expect
index 9a4a5fd..0b0b415 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.strong.transformed.expect
@@ -15,9 +15,9 @@
   method noSuchMethod(core::Invocation i) → dynamic
     return <dynamic>[];
   no-such-method-forwarder get foo() → core::List<core::int>
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))) as{TypeError} core::List<core::int>;
+    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::List<core::int>;
   no-such-method-forwarder set foo(core::List<core::int> value) → void
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method expectTypeError(() → dynamic callback) → void {
   try {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.legacy.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.legacy.expect
index 118db2e..70d1e0e 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.legacy.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.legacy.expect
@@ -21,6 +21,6 @@
     : super self::A::•()
     ;
   no-such-method-forwarder method foo() → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.legacy.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.legacy.transformed.expect
index 118db2e..70d1e0e 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.legacy.transformed.expect
@@ -21,6 +21,6 @@
     : super self::A::•()
     ;
   no-such-method-forwarder method foo() → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.strong.expect
index 118db2e..70d1e0e 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.strong.expect
@@ -21,6 +21,6 @@
     : super self::A::•()
     ;
   no-such-method-forwarder method foo() → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.strong.transformed.expect
index 118db2e..70d1e0e 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.strong.transformed.expect
@@ -21,6 +21,6 @@
     : super self::A::•()
     ;
   no-such-method-forwarder method foo() → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.legacy.expect b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.legacy.expect
index 17335d1..521bedd 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.legacy.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.legacy.expect
@@ -21,7 +21,7 @@
   method noSuchMethod(dynamic _) → dynamic
     return null;
   no-such-method-forwarder method foo() → dynamic
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))) as{TypeError} dynamic;
+    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} dynamic;
 }
 abstract class _C&A&B = self::A with self::B {
   synthetic constructor •() → self::_C&A&B
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.legacy.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.legacy.transformed.expect
index 5e28b9e..528ca88 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.legacy.transformed.expect
@@ -21,7 +21,7 @@
   method noSuchMethod(dynamic _) → dynamic
     return null;
   no-such-method-forwarder method foo() → dynamic
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))) as{TypeError} dynamic;
+    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} dynamic;
 }
 abstract class _C&A&B extends self::A implements self::B {
   synthetic constructor •() → self::_C&A&B
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.strong.expect
index 08ccdaa..b71a516 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.strong.expect
@@ -21,7 +21,7 @@
   method noSuchMethod(core::Invocation _) → dynamic
     return null;
   no-such-method-forwarder method foo() → dynamic
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))) as{TypeError} dynamic;
+    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} dynamic;
 }
 abstract class _C&A&B = self::A with self::B {
   synthetic constructor •() → self::_C&A&B
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.strong.transformed.expect
index bde6ced..7cd29a7 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.strong.transformed.expect
@@ -21,7 +21,7 @@
   method noSuchMethod(core::Invocation _) → dynamic
     return null;
   no-such-method-forwarder method foo() → dynamic
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))) as{TypeError} dynamic;
+    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} dynamic;
 }
 abstract class _C&A&B extends self::A implements self::B {
   synthetic constructor •() → self::_C&A&B
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.legacy.expect b/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.legacy.expect
index 18f18db..3add7c4 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.legacy.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.legacy.expect
@@ -7,26 +7,26 @@
     : super core::Object::•()
     ;
   method noSuchMethod(core::Invocation i) → dynamic {
-    if(i.memberName.==(#C1)) {
-      return i.namedArguments.[](#C2);
+    if(i.memberName.==(#foo)) {
+      return i.namedArguments.[](#bar);
     }
     else
-      if(i.memberName.==(#C3)) {
+      if(i.memberName.==(#hest)) {
         return i.positionalArguments.[](0);
       }
     return null;
   }
-  abstract method foo({core::String bar = #C4}) → core::String;
-  abstract method hest([core::int fisk = #C5]) → core::int;
+  abstract method foo({core::String bar = "baz"}) → core::String;
+  abstract method hest([core::int fisk = 42]) → core::int;
 }
 class B extends self::A {
   synthetic constructor •() → self::B
     : super self::A::•()
     ;
-  no-such-method-forwarder method foo({core::String bar = #C4}) → core::String
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C6, #C7, core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C2: bar}))) as{TypeError} core::String;
-  no-such-method-forwarder method hest([core::int fisk = #C5]) → core::int
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C3, 0, #C6, core::List::unmodifiable<dynamic>(<dynamic>[fisk]), core::Map::unmodifiable<core::Symbol, dynamic>(#C8))) as{TypeError} core::int;
+  no-such-method-forwarder method foo({core::String bar = "baz"}) → core::String
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#bar: bar}))) as{TypeError} core::String;
+  no-such-method-forwarder method hest([core::int fisk = 42]) → core::int
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#hest, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[fisk]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::int;
 }
 static method main() → dynamic {
   self::B b = new self::B::•();
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.legacy.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.legacy.transformed.expect
index 18f18db..3add7c4 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.legacy.transformed.expect
@@ -7,26 +7,26 @@
     : super core::Object::•()
     ;
   method noSuchMethod(core::Invocation i) → dynamic {
-    if(i.memberName.==(#C1)) {
-      return i.namedArguments.[](#C2);
+    if(i.memberName.==(#foo)) {
+      return i.namedArguments.[](#bar);
     }
     else
-      if(i.memberName.==(#C3)) {
+      if(i.memberName.==(#hest)) {
         return i.positionalArguments.[](0);
       }
     return null;
   }
-  abstract method foo({core::String bar = #C4}) → core::String;
-  abstract method hest([core::int fisk = #C5]) → core::int;
+  abstract method foo({core::String bar = "baz"}) → core::String;
+  abstract method hest([core::int fisk = 42]) → core::int;
 }
 class B extends self::A {
   synthetic constructor •() → self::B
     : super self::A::•()
     ;
-  no-such-method-forwarder method foo({core::String bar = #C4}) → core::String
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C6, #C7, core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C2: bar}))) as{TypeError} core::String;
-  no-such-method-forwarder method hest([core::int fisk = #C5]) → core::int
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C3, 0, #C6, core::List::unmodifiable<dynamic>(<dynamic>[fisk]), core::Map::unmodifiable<core::Symbol, dynamic>(#C8))) as{TypeError} core::int;
+  no-such-method-forwarder method foo({core::String bar = "baz"}) → core::String
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#bar: bar}))) as{TypeError} core::String;
+  no-such-method-forwarder method hest([core::int fisk = 42]) → core::int
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#hest, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[fisk]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::int;
 }
 static method main() → dynamic {
   self::B b = new self::B::•();
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.strong.expect
index b42e636..5f6f35b 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.strong.expect
@@ -7,26 +7,26 @@
     : super core::Object::•()
     ;
   method noSuchMethod(core::Invocation i) → dynamic {
-    if(i.{core::Invocation::memberName}.{core::Symbol::==}(#C1)) {
-      return i.{core::Invocation::namedArguments}.{core::Map::[]}(#C2);
+    if(i.{core::Invocation::memberName}.{core::Symbol::==}(#foo)) {
+      return i.{core::Invocation::namedArguments}.{core::Map::[]}(#bar);
     }
     else
-      if(i.{core::Invocation::memberName}.{core::Symbol::==}(#C3)) {
+      if(i.{core::Invocation::memberName}.{core::Symbol::==}(#hest)) {
         return i.{core::Invocation::positionalArguments}.{core::List::[]}(0);
       }
     return null;
   }
-  abstract method foo({core::String bar = #C4}) → core::String;
-  abstract method hest([core::int fisk = #C5]) → core::int;
+  abstract method foo({core::String bar = "baz"}) → core::String;
+  abstract method hest([core::int fisk = 42]) → core::int;
 }
 class B extends self::A {
   synthetic constructor •() → self::B
     : super self::A::•()
     ;
-  no-such-method-forwarder method foo({core::String bar = #C4}) → core::String
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C6, #C7, core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C2: bar}))) as{TypeError} core::String;
-  no-such-method-forwarder method hest([core::int fisk = #C5]) → core::int
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C3, 0, #C6, core::List::unmodifiable<dynamic>(<dynamic>[fisk]), core::Map::unmodifiable<core::Symbol, dynamic>(#C8))) as{TypeError} core::int;
+  no-such-method-forwarder method foo({core::String bar = "baz"}) → core::String
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#bar: bar}))) as{TypeError} core::String;
+  no-such-method-forwarder method hest([core::int fisk = 42]) → core::int
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#hest, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[fisk]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::int;
 }
 static method main() → dynamic {
   self::B b = new self::B::•();
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.strong.transformed.expect
index b42e636..5f6f35b 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.strong.transformed.expect
@@ -7,26 +7,26 @@
     : super core::Object::•()
     ;
   method noSuchMethod(core::Invocation i) → dynamic {
-    if(i.{core::Invocation::memberName}.{core::Symbol::==}(#C1)) {
-      return i.{core::Invocation::namedArguments}.{core::Map::[]}(#C2);
+    if(i.{core::Invocation::memberName}.{core::Symbol::==}(#foo)) {
+      return i.{core::Invocation::namedArguments}.{core::Map::[]}(#bar);
     }
     else
-      if(i.{core::Invocation::memberName}.{core::Symbol::==}(#C3)) {
+      if(i.{core::Invocation::memberName}.{core::Symbol::==}(#hest)) {
         return i.{core::Invocation::positionalArguments}.{core::List::[]}(0);
       }
     return null;
   }
-  abstract method foo({core::String bar = #C4}) → core::String;
-  abstract method hest([core::int fisk = #C5]) → core::int;
+  abstract method foo({core::String bar = "baz"}) → core::String;
+  abstract method hest([core::int fisk = 42]) → core::int;
 }
 class B extends self::A {
   synthetic constructor •() → self::B
     : super self::A::•()
     ;
-  no-such-method-forwarder method foo({core::String bar = #C4}) → core::String
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C6, #C7, core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C2: bar}))) as{TypeError} core::String;
-  no-such-method-forwarder method hest([core::int fisk = #C5]) → core::int
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C3, 0, #C6, core::List::unmodifiable<dynamic>(<dynamic>[fisk]), core::Map::unmodifiable<core::Symbol, dynamic>(#C8))) as{TypeError} core::int;
+  no-such-method-forwarder method foo({core::String bar = "baz"}) → core::String
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#bar: bar}))) as{TypeError} core::String;
+  no-such-method-forwarder method hest([core::int fisk = 42]) → core::int
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#hest, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[fisk]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::int;
 }
 static method main() → dynamic {
   self::B b = new self::B::•();
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.legacy.expect b/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.legacy.expect
index 95d583a..6ed69b8c 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.legacy.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.legacy.expect
@@ -21,6 +21,6 @@
   method noSuchMethod(core::Invocation i) → dynamic
     return null;
   no-such-method-forwarder method foo() → void
-    return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.legacy.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.legacy.transformed.expect
index 95d583a..6ed69b8c 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.legacy.transformed.expect
@@ -21,6 +21,6 @@
   method noSuchMethod(core::Invocation i) → dynamic
     return null;
   no-such-method-forwarder method foo() → void
-    return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.strong.expect
index 95d583a..6ed69b8c 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.strong.expect
@@ -21,6 +21,6 @@
   method noSuchMethod(core::Invocation i) → dynamic
     return null;
   no-such-method-forwarder method foo() → void
-    return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.strong.transformed.expect
index 95d583a..6ed69b8c 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.strong.transformed.expect
@@ -21,6 +21,6 @@
   method noSuchMethod(core::Invocation i) → dynamic
     return null;
   no-such-method-forwarder method foo() → void
-    return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.legacy.expect b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.legacy.expect
index dab4d16..d4ed912 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.legacy.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.legacy.expect
@@ -15,7 +15,7 @@
   method noSuchMethod(core::Invocation i) → dynamic
     return null;
   no-such-method-forwarder method foo() → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 abstract class _B&Object&A = core::Object with self::A {
   const synthetic constructor •() → self::_B&Object&A
@@ -27,6 +27,6 @@
     : super self::_B&Object&A::•()
     ;
   no-such-method-forwarder method foo() → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.legacy.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.legacy.transformed.expect
index 04600b9..a14c6c9 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.legacy.transformed.expect
@@ -15,7 +15,7 @@
   method noSuchMethod(core::Invocation i) → dynamic
     return null;
   no-such-method-forwarder method foo() → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 abstract class _B&Object&A extends core::Object implements self::A {
   const synthetic constructor •() → self::_B&Object&A
@@ -29,6 +29,6 @@
     : super self::_B&Object&A::•()
     ;
   no-such-method-forwarder method foo() → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.strong.expect
index dab4d16..d4ed912 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.strong.expect
@@ -15,7 +15,7 @@
   method noSuchMethod(core::Invocation i) → dynamic
     return null;
   no-such-method-forwarder method foo() → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 abstract class _B&Object&A = core::Object with self::A {
   const synthetic constructor •() → self::_B&Object&A
@@ -27,6 +27,6 @@
     : super self::_B&Object&A::•()
     ;
   no-such-method-forwarder method foo() → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.strong.transformed.expect
index 04600b9..a14c6c9 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.strong.transformed.expect
@@ -15,7 +15,7 @@
   method noSuchMethod(core::Invocation i) → dynamic
     return null;
   no-such-method-forwarder method foo() → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 abstract class _B&Object&A extends core::Object implements self::A {
   const synthetic constructor •() → self::_B&Object&A
@@ -29,6 +29,6 @@
     : super self::_B&Object&A::•()
     ;
   no-such-method-forwarder method foo() → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.legacy.expect b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.legacy.expect
index e350e7c..b3f6383 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.legacy.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.legacy.expect
@@ -21,6 +21,6 @@
     : super self::A::•()
     ;
   no-such-method-forwarder method foo() → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.legacy.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.legacy.transformed.expect
index e350e7c..b3f6383 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.legacy.transformed.expect
@@ -21,6 +21,6 @@
     : super self::A::•()
     ;
   no-such-method-forwarder method foo() → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.strong.expect
index e350e7c..b3f6383 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.strong.expect
@@ -21,6 +21,6 @@
     : super self::A::•()
     ;
   no-such-method-forwarder method foo() → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.strong.transformed.expect
index e350e7c..b3f6383 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.strong.transformed.expect
@@ -21,6 +21,6 @@
     : super self::A::•()
     ;
   no-such-method-forwarder method foo() → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.legacy.expect b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.legacy.expect
index 420c917..3dfcd26 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.legacy.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.legacy.expect
@@ -9,7 +9,7 @@
   method noSuchMethod(core::Invocation i) → dynamic
     return null;
   no-such-method-forwarder method foo() → void
-    return this.{self::I::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::I::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 class M extends core::Object {
   synthetic constructor •() → self::M
@@ -28,7 +28,7 @@
     : super self::_A&Object&M::•()
     ;
   no-such-method-forwarder method foo() → void
-    return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 abstract class _B&Object&M = core::Object with self::M {
   const synthetic constructor •() → self::_B&Object&M
@@ -40,6 +40,6 @@
     : super self::_B&Object&M::•()
     ;
   no-such-method-forwarder method foo() → void
-    return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.legacy.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.legacy.transformed.expect
index ba6ac65..4fcf0c6 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.legacy.transformed.expect
@@ -9,7 +9,7 @@
   method noSuchMethod(core::Invocation i) → dynamic
     return null;
   no-such-method-forwarder method foo() → void
-    return this.{self::I::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::I::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 class M extends core::Object {
   synthetic constructor •() → self::M
@@ -30,7 +30,7 @@
     : super self::_A&Object&M::•()
     ;
   no-such-method-forwarder method foo() → void
-    return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 abstract class _B&Object&M extends core::Object implements self::M {
   const synthetic constructor •() → self::_B&Object&M
@@ -44,6 +44,6 @@
     : super self::_B&Object&M::•()
     ;
   no-such-method-forwarder method foo() → void
-    return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.strong.expect
index 420c917..3dfcd26 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.strong.expect
@@ -9,7 +9,7 @@
   method noSuchMethod(core::Invocation i) → dynamic
     return null;
   no-such-method-forwarder method foo() → void
-    return this.{self::I::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::I::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 class M extends core::Object {
   synthetic constructor •() → self::M
@@ -28,7 +28,7 @@
     : super self::_A&Object&M::•()
     ;
   no-such-method-forwarder method foo() → void
-    return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 abstract class _B&Object&M = core::Object with self::M {
   const synthetic constructor •() → self::_B&Object&M
@@ -40,6 +40,6 @@
     : super self::_B&Object&M::•()
     ;
   no-such-method-forwarder method foo() → void
-    return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.strong.transformed.expect
index ba6ac65..4fcf0c6 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.strong.transformed.expect
@@ -9,7 +9,7 @@
   method noSuchMethod(core::Invocation i) → dynamic
     return null;
   no-such-method-forwarder method foo() → void
-    return this.{self::I::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::I::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 class M extends core::Object {
   synthetic constructor •() → self::M
@@ -30,7 +30,7 @@
     : super self::_A&Object&M::•()
     ;
   no-such-method-forwarder method foo() → void
-    return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 abstract class _B&Object&M extends core::Object implements self::M {
   const synthetic constructor •() → self::_B&Object&M
@@ -44,6 +44,6 @@
     : super self::_B&Object&M::•()
     ;
   no-such-method-forwarder method foo() → void
-    return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.legacy.expect b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.legacy.expect
index 6cff9c8..f0470a5 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.legacy.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.legacy.expect
@@ -15,6 +15,6 @@
     : super self::A::•()
     ;
   no-such-method-forwarder method foo() → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.legacy.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.legacy.transformed.expect
index 6cff9c8..f0470a5 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.legacy.transformed.expect
@@ -15,6 +15,6 @@
     : super self::A::•()
     ;
   no-such-method-forwarder method foo() → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.strong.expect
index 88a9953..f405f12 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.strong.expect
@@ -15,6 +15,6 @@
     : super self::A::•()
     ;
   no-such-method-forwarder method foo() → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.strong.transformed.expect
index 88a9953..f405f12 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.strong.transformed.expect
@@ -15,6 +15,6 @@
     : super self::A::•()
     ;
   no-such-method-forwarder method foo() → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.legacy.expect b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.legacy.expect
index 55ce6e1..bf620af 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.legacy.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.legacy.expect
@@ -20,7 +20,7 @@
     : super self::B::•()
     ;
   no-such-method-forwarder method foo() → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 class D extends self::C {
   synthetic constructor •() → self::D
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.legacy.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.legacy.transformed.expect
index 55ce6e1..bf620af 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.legacy.transformed.expect
@@ -20,7 +20,7 @@
     : super self::B::•()
     ;
   no-such-method-forwarder method foo() → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 class D extends self::C {
   synthetic constructor •() → self::D
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.strong.expect
index 310cd28..05f2839 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.strong.expect
@@ -20,7 +20,7 @@
     : super self::B::•()
     ;
   no-such-method-forwarder method foo() → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 class D extends self::C {
   synthetic constructor •() → self::D
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.strong.transformed.expect
index 310cd28..05f2839 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.strong.transformed.expect
@@ -20,7 +20,7 @@
     : super self::B::•()
     ;
   no-such-method-forwarder method foo() → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 class D extends self::C {
   synthetic constructor •() → self::D
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.legacy.expect b/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.legacy.expect
index b06b366..20ed588 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.legacy.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.legacy.expect
@@ -14,6 +14,6 @@
     : super self::M::•()
     ;
   no-such-method-forwarder method call(core::String s) → void
-    return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[s]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#call, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[s]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.legacy.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.legacy.transformed.expect
index b06b366..20ed588 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.legacy.transformed.expect
@@ -14,6 +14,6 @@
     : super self::M::•()
     ;
   no-such-method-forwarder method call(core::String s) → void
-    return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[s]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#call, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[s]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.strong.expect
index b06b366..20ed588 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.strong.expect
@@ -14,6 +14,6 @@
     : super self::M::•()
     ;
   no-such-method-forwarder method call(core::String s) → void
-    return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[s]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#call, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[s]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.strong.transformed.expect
index b06b366..20ed588 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.strong.transformed.expect
@@ -14,6 +14,6 @@
     : super self::M::•()
     ;
   no-such-method-forwarder method call(core::String s) → void
-    return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[s]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#call, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[s]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.legacy.expect b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.legacy.expect
index 735a427..3ca45b1 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.legacy.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.legacy.expect
@@ -20,6 +20,6 @@
     : super self::_B&Object&A::•()
     ;
   no-such-method-forwarder method foo() → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.legacy.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.legacy.transformed.expect
index 4ca2046..f9187d1 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.legacy.transformed.expect
@@ -23,6 +23,6 @@
     : super self::_B&Object&A::•()
     ;
   no-such-method-forwarder method foo() → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.strong.expect
index 735a427..3ca45b1 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.strong.expect
@@ -20,6 +20,6 @@
     : super self::_B&Object&A::•()
     ;
   no-such-method-forwarder method foo() → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.strong.transformed.expect
index 4ca2046..f9187d1 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.strong.transformed.expect
@@ -23,6 +23,6 @@
     : super self::_B&Object&A::•()
     ;
   no-such-method-forwarder method foo() → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/private.dart.legacy.expect b/pkg/front_end/testcases/no_such_method_forwarders/private.dart.legacy.expect
index b0e2a85..3afff4b 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/private.dart.legacy.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/private.dart.legacy.expect
@@ -17,7 +17,7 @@
     : super self::Foo::•()
     ;
   no-such-method-forwarder method /* from org-dartlang-testcase:///private_module.dart */ _hest() → void
-    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#_hest, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 class Baz extends self::Foo implements pri::Fisk {
   synthetic constructor •() → self::Baz
@@ -26,7 +26,7 @@
   method _hest() → dynamic
     return null;
   no-such-method-forwarder method /* from org-dartlang-testcase:///private_module.dart */ _hest() → void
-    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#_hest, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/private.dart.legacy.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/private.dart.legacy.transformed.expect
index b0e2a85..3afff4b 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/private.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/private.dart.legacy.transformed.expect
@@ -17,7 +17,7 @@
     : super self::Foo::•()
     ;
   no-such-method-forwarder method /* from org-dartlang-testcase:///private_module.dart */ _hest() → void
-    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#_hest, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 class Baz extends self::Foo implements pri::Fisk {
   synthetic constructor •() → self::Baz
@@ -26,7 +26,7 @@
   method _hest() → dynamic
     return null;
   no-such-method-forwarder method /* from org-dartlang-testcase:///private_module.dart */ _hest() → void
-    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#_hest, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/private.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/private.dart.strong.expect
index b0e2a85..3afff4b 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/private.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/private.dart.strong.expect
@@ -17,7 +17,7 @@
     : super self::Foo::•()
     ;
   no-such-method-forwarder method /* from org-dartlang-testcase:///private_module.dart */ _hest() → void
-    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#_hest, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 class Baz extends self::Foo implements pri::Fisk {
   synthetic constructor •() → self::Baz
@@ -26,7 +26,7 @@
   method _hest() → dynamic
     return null;
   no-such-method-forwarder method /* from org-dartlang-testcase:///private_module.dart */ _hest() → void
-    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#_hest, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/private.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/private.dart.strong.transformed.expect
index b0e2a85..3afff4b 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/private.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/private.dart.strong.transformed.expect
@@ -17,7 +17,7 @@
     : super self::Foo::•()
     ;
   no-such-method-forwarder method /* from org-dartlang-testcase:///private_module.dart */ _hest() → void
-    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#_hest, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 class Baz extends self::Foo implements pri::Fisk {
   synthetic constructor •() → self::Baz
@@ -26,7 +26,7 @@
   method _hest() → dynamic
     return null;
   no-such-method-forwarder method /* from org-dartlang-testcase:///private_module.dart */ _hest() → void
-    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#_hest, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.legacy.expect b/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.legacy.expect
index e15f9b4..8e690c1 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.legacy.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.legacy.expect
@@ -15,6 +15,6 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
   no-such-method-forwarder method _foo() → void
-    return this.{self::Bar::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::Bar::noSuchMethod}(new core::_InvocationMirror::_withType(#_foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.legacy.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.legacy.transformed.expect
index e15f9b4..8e690c1 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.legacy.transformed.expect
@@ -15,6 +15,6 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
   no-such-method-forwarder method _foo() → void
-    return this.{self::Bar::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::Bar::noSuchMethod}(new core::_InvocationMirror::_withType(#_foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.strong.expect
index e15f9b4..8e690c1 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.strong.expect
@@ -15,6 +15,6 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
   no-such-method-forwarder method _foo() → void
-    return this.{self::Bar::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::Bar::noSuchMethod}(new core::_InvocationMirror::_withType(#_foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.strong.transformed.expect
index e15f9b4..8e690c1 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.strong.transformed.expect
@@ -15,6 +15,6 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
   no-such-method-forwarder method _foo() → void
-    return this.{self::Bar::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::Bar::noSuchMethod}(new core::_InvocationMirror::_withType(#_foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/same.dart.legacy.expect b/pkg/front_end/testcases/no_such_method_forwarders/same.dart.legacy.expect
index beefd088..9ce6d4f 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/same.dart.legacy.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/same.dart.legacy.expect
@@ -10,6 +10,6 @@
     return null;
   }
   no-such-method-forwarder method foo() → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/same.dart.legacy.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/same.dart.legacy.transformed.expect
index beefd088..9ce6d4f 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/same.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/same.dart.legacy.transformed.expect
@@ -10,6 +10,6 @@
     return null;
   }
   no-such-method-forwarder method foo() → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/same.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/same.dart.strong.expect
index beefd088..9ce6d4f 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/same.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/same.dart.strong.expect
@@ -10,6 +10,6 @@
     return null;
   }
   no-such-method-forwarder method foo() → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/same.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/same.dart.strong.transformed.expect
index beefd088..9ce6d4f 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/same.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/same.dart.strong.transformed.expect
@@ -10,6 +10,6 @@
     return null;
   }
   no-such-method-forwarder method foo() → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.legacy.expect b/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.legacy.expect
index 76b4987..8fef0c1 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.legacy.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.legacy.expect
@@ -18,7 +18,7 @@
     ;
   method foo(core::int x) → void {}
   no-such-method-forwarder set foo(core::int x) → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   method noSuchMethod(core::Invocation i) → dynamic
     return null;
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.legacy.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.legacy.transformed.expect
index 76b4987..8fef0c1 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.legacy.transformed.expect
@@ -18,7 +18,7 @@
     ;
   method foo(core::int x) → void {}
   no-such-method-forwarder set foo(core::int x) → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   method noSuchMethod(core::Invocation i) → dynamic
     return null;
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.strong.expect
index 76b4987..8fef0c1 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.strong.expect
@@ -18,7 +18,7 @@
     ;
   method foo(core::int x) → void {}
   no-such-method-forwarder set foo(core::int x) → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   method noSuchMethod(core::Invocation i) → dynamic
     return null;
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.strong.transformed.expect
index 76b4987..8fef0c1 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.strong.transformed.expect
@@ -18,7 +18,7 @@
     ;
   method foo(core::int x) → void {}
   no-such-method-forwarder set foo(core::int x) → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#foo=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   method noSuchMethod(core::Invocation i) → dynamic
     return null;
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.legacy.expect b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.legacy.expect
index 496d32e..7711967 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.legacy.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.legacy.expect
@@ -26,6 +26,6 @@
     : super self::_A&Object&M::•()
     ;
   no-such-method-forwarder method foo() → core::int
-    return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))) as{TypeError} core::int;
+    return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::int;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.legacy.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.legacy.transformed.expect
index 8a1982f..eb168b2 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.legacy.transformed.expect
@@ -29,6 +29,6 @@
     : super self::_A&Object&M::•()
     ;
   no-such-method-forwarder method foo() → core::int
-    return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))) as{TypeError} core::int;
+    return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::int;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.strong.expect
index 496d32e..7711967 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.strong.expect
@@ -26,6 +26,6 @@
     : super self::_A&Object&M::•()
     ;
   no-such-method-forwarder method foo() → core::int
-    return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))) as{TypeError} core::int;
+    return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::int;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.strong.transformed.expect
index 8a1982f..eb168b2 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.strong.transformed.expect
@@ -29,6 +29,6 @@
     : super self::_A&Object&M::•()
     ;
   no-such-method-forwarder method foo() → core::int
-    return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))) as{TypeError} core::int;
+    return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::int;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/no_such_method_private_setter.dart.legacy.expect b/pkg/front_end/testcases/no_such_method_private_setter.dart.legacy.expect
index aa11a5b..a545e64 100644
--- a/pkg/front_end/testcases/no_such_method_private_setter.dart.legacy.expect
+++ b/pkg/front_end/testcases/no_such_method_private_setter.dart.legacy.expect
@@ -10,9 +10,9 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder get /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x() → core::int
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))) as{TypeError} core::int;
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#_x, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::int;
   no-such-method-forwarder set /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x(core::int value) → void
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#_x=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {
   no_::baz(new self::Foo::•());
diff --git a/pkg/front_end/testcases/no_such_method_private_setter.dart.legacy.transformed.expect b/pkg/front_end/testcases/no_such_method_private_setter.dart.legacy.transformed.expect
index aa11a5b..a545e64 100644
--- a/pkg/front_end/testcases/no_such_method_private_setter.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_private_setter.dart.legacy.transformed.expect
@@ -10,9 +10,9 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder get /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x() → core::int
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))) as{TypeError} core::int;
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#_x, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::int;
   no-such-method-forwarder set /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x(core::int value) → void
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#_x=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {
   no_::baz(new self::Foo::•());
diff --git a/pkg/front_end/testcases/no_such_method_private_setter.dart.strong.expect b/pkg/front_end/testcases/no_such_method_private_setter.dart.strong.expect
index aa11a5b..a545e64 100644
--- a/pkg/front_end/testcases/no_such_method_private_setter.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_private_setter.dart.strong.expect
@@ -10,9 +10,9 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder get /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x() → core::int
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))) as{TypeError} core::int;
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#_x, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::int;
   no-such-method-forwarder set /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x(core::int value) → void
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#_x=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {
   no_::baz(new self::Foo::•());
diff --git a/pkg/front_end/testcases/no_such_method_private_setter.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_private_setter.dart.strong.transformed.expect
index aa11a5b..a545e64 100644
--- a/pkg/front_end/testcases/no_such_method_private_setter.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_private_setter.dart.strong.transformed.expect
@@ -10,9 +10,9 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder get /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x() → core::int
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))) as{TypeError} core::int;
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#_x, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} core::int;
   no-such-method-forwarder set /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x(core::int value) → void
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#_x=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {
   no_::baz(new self::Foo::•());
diff --git a/pkg/front_end/testcases/optional.dart.strong.expect b/pkg/front_end/testcases/optional.dart.strong.expect
index ff16fe6..d74b9fc 100644
--- a/pkg/front_end/testcases/optional.dart.strong.expect
+++ b/pkg/front_end/testcases/optional.dart.strong.expect
@@ -34,7 +34,7 @@
   synthetic constructor •() → self::Foo
     : super core::Object::•()
     ;
-  method method(dynamic x, [dynamic y = #C1, dynamic z = #C1]) → dynamic {
+  method method(dynamic x, [dynamic y = null, dynamic z = null]) → dynamic {
     return "string";
   }
 }
@@ -42,32 +42,32 @@
   synthetic constructor •() → self::External
     : super core::Object::•()
     ;
-  abstract method externalMethod(core::int x, [core::int y = #C1, core::int z = #C1]) → core::String;
+  abstract method externalMethod(core::int x, [core::int y = null, core::int z = null]) → core::String;
   abstract method listen(self::Listener listener) → void;
 }
 abstract class Listener extends core::Object {
   synthetic constructor •() → self::Listener
     : super core::Object::•()
     ;
-  abstract method event(core::String input, [core::int x = #C1, core::int y = #C1]) → void;
+  abstract method event(core::String input, [core::int x = null, core::int y = null]) → void;
 }
 class TestListener extends self::Listener {
   synthetic constructor •() → self::TestListener
     : super self::Listener::•()
     ;
-  method event(core::String input, [core::int x = #C1, core::int y = #C1]) → void {}
+  method event(core::String input, [core::int x = null, core::int y = null]) → void {}
 }
 class ExtendedListener extends self::Listener {
   synthetic constructor •() → self::ExtendedListener
     : super self::Listener::•()
     ;
-  method event(core::String input, [core::int x = #C1, core::int y = #C1, dynamic z = #C1]) → void {}
+  method event(core::String input, [core::int x = null, core::int y = null, dynamic z = null]) → void {}
 }
 class InvalidListener extends core::Object {
   synthetic constructor •() → self::InvalidListener
     : super core::Object::•()
     ;
-  method event(dynamic input, [dynamic x = #C1]) → void {}
+  method event(dynamic input, [dynamic x = null]) → void {}
 }
 external static abstract method createExternal() → self::External;
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/override_check_basic.dart.legacy.expect b/pkg/front_end/testcases/override_check_basic.dart.legacy.expect
index df55922..e538a45 100644
--- a/pkg/front_end/testcases/override_check_basic.dart.legacy.expect
+++ b/pkg/front_end/testcases/override_check_basic.dart.legacy.expect
@@ -17,8 +17,8 @@
     : super core::Object::•()
     ;
   method f1(self::A x) → void {}
-  method f2([self::A x = #C1]) → void {}
-  method f3({self::A x = #C1}) → void {}
+  method f2([self::A x = null]) → void {}
+  method f3({self::A x = null}) → void {}
   method f4() → self::A {}
 }
 class D extends self::C {
@@ -26,8 +26,8 @@
     : super self::C::•()
     ;
   method f1(core::Object x) → void {}
-  method f2([core::Object x = #C1]) → void {}
-  method f3({core::Object x = #C1}) → void {}
+  method f2([core::Object x = null]) → void {}
+  method f3({core::Object x = null}) → void {}
   method f4() → self::B {}
 }
 class E extends self::C {
@@ -35,8 +35,8 @@
     : super self::C::•()
     ;
   method f1(self::B x) → void {}
-  method f2([self::B x = #C1]) → void {}
-  method f3({self::B x = #C1}) → void {}
+  method f2([self::B x = null]) → void {}
+  method f3({self::B x = null}) → void {}
   method f4() → core::Object {}
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/override_check_basic.dart.legacy.transformed.expect b/pkg/front_end/testcases/override_check_basic.dart.legacy.transformed.expect
index df55922..e538a45 100644
--- a/pkg/front_end/testcases/override_check_basic.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/override_check_basic.dart.legacy.transformed.expect
@@ -17,8 +17,8 @@
     : super core::Object::•()
     ;
   method f1(self::A x) → void {}
-  method f2([self::A x = #C1]) → void {}
-  method f3({self::A x = #C1}) → void {}
+  method f2([self::A x = null]) → void {}
+  method f3({self::A x = null}) → void {}
   method f4() → self::A {}
 }
 class D extends self::C {
@@ -26,8 +26,8 @@
     : super self::C::•()
     ;
   method f1(core::Object x) → void {}
-  method f2([core::Object x = #C1]) → void {}
-  method f3({core::Object x = #C1}) → void {}
+  method f2([core::Object x = null]) → void {}
+  method f3({core::Object x = null}) → void {}
   method f4() → self::B {}
 }
 class E extends self::C {
@@ -35,8 +35,8 @@
     : super self::C::•()
     ;
   method f1(self::B x) → void {}
-  method f2([self::B x = #C1]) → void {}
-  method f3({self::B x = #C1}) → void {}
+  method f2([self::B x = null]) → void {}
+  method f3({self::B x = null}) → void {}
   method f4() → core::Object {}
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/override_check_basic.dart.strong.expect b/pkg/front_end/testcases/override_check_basic.dart.strong.expect
index 89401f5..e767515 100644
--- a/pkg/front_end/testcases/override_check_basic.dart.strong.expect
+++ b/pkg/front_end/testcases/override_check_basic.dart.strong.expect
@@ -60,8 +60,8 @@
     : super core::Object::•()
     ;
   method f1(self::A x) → void {}
-  method f2([self::A x = #C1]) → void {}
-  method f3({self::A x = #C1}) → void {}
+  method f2([self::A x = null]) → void {}
+  method f3({self::A x = null}) → void {}
   method f4() → self::A {}
 }
 class D extends self::C {
@@ -69,8 +69,8 @@
     : super self::C::•()
     ;
   method f1(core::Object x) → void {}
-  method f2([core::Object x = #C1]) → void {}
-  method f3({core::Object x = #C1}) → void {}
+  method f2([core::Object x = null]) → void {}
+  method f3({core::Object x = null}) → void {}
   method f4() → self::B {}
 }
 class E extends self::C {
@@ -78,8 +78,8 @@
     : super self::C::•()
     ;
   method f1(self::B x) → void {}
-  method f2([self::B x = #C1]) → void {}
-  method f3({self::B x = #C1}) → void {}
+  method f2([self::B x = null]) → void {}
+  method f3({self::B x = null}) → void {}
   method f4() → core::Object {}
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/override_check_generic_method_f_bounded.dart.legacy.expect b/pkg/front_end/testcases/override_check_generic_method_f_bounded.dart.legacy.expect
index 70ebc19..1b50295 100644
--- a/pkg/front_end/testcases/override_check_generic_method_f_bounded.dart.legacy.expect
+++ b/pkg/front_end/testcases/override_check_generic_method_f_bounded.dart.legacy.expect
@@ -17,7 +17,7 @@
   synthetic constructor •() → self::Hest
     : super core::Object::•()
     ;
-  @#C1
+  @core::override
   method fisk<U extends self::Foo<self::Hest::fisk::U> = dynamic>() → void {}
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/override_check_generic_method_f_bounded.dart.legacy.transformed.expect b/pkg/front_end/testcases/override_check_generic_method_f_bounded.dart.legacy.transformed.expect
index 70ebc19..1b50295 100644
--- a/pkg/front_end/testcases/override_check_generic_method_f_bounded.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/override_check_generic_method_f_bounded.dart.legacy.transformed.expect
@@ -17,7 +17,7 @@
   synthetic constructor •() → self::Hest
     : super core::Object::•()
     ;
-  @#C1
+  @core::override
   method fisk<U extends self::Foo<self::Hest::fisk::U> = dynamic>() → void {}
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/override_check_generic_method_f_bounded.dart.strong.expect b/pkg/front_end/testcases/override_check_generic_method_f_bounded.dart.strong.expect
index 906c6d3..ef8c1dc 100644
--- a/pkg/front_end/testcases/override_check_generic_method_f_bounded.dart.strong.expect
+++ b/pkg/front_end/testcases/override_check_generic_method_f_bounded.dart.strong.expect
@@ -17,7 +17,7 @@
   synthetic constructor •() → self::Hest
     : super core::Object::•()
     ;
-  @#C1
+  @core::override
   method fisk<U extends self::Foo<self::Hest::fisk::U> = self::Foo<dynamic>>() → void {}
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/override_check_generic_method_f_bounded.dart.strong.transformed.expect b/pkg/front_end/testcases/override_check_generic_method_f_bounded.dart.strong.transformed.expect
index 906c6d3..ef8c1dc 100644
--- a/pkg/front_end/testcases/override_check_generic_method_f_bounded.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/override_check_generic_method_f_bounded.dart.strong.transformed.expect
@@ -17,7 +17,7 @@
   synthetic constructor •() → self::Hest
     : super core::Object::•()
     ;
-  @#C1
+  @core::override
   method fisk<U extends self::Foo<self::Hest::fisk::U> = self::Foo<dynamic>>() → void {}
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/part_not_part_of.dart.legacy.expect b/pkg/front_end/testcases/part_not_part_of.dart.legacy.expect
index 6f848ed..b9dac32 100644
--- a/pkg/front_end/testcases/part_not_part_of.dart.legacy.expect
+++ b/pkg/front_end/testcases/part_not_part_of.dart.legacy.expect
@@ -11,7 +11,7 @@
 
 import "org-dartlang-testcase:///part_not_part_of_lib2.dart";
 
-@#C1
+@core::override
 part part_not_part_of_lib1.dart;
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/part_not_part_of.dart.legacy.transformed.expect b/pkg/front_end/testcases/part_not_part_of.dart.legacy.transformed.expect
index 6f848ed..b9dac32 100644
--- a/pkg/front_end/testcases/part_not_part_of.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/part_not_part_of.dart.legacy.transformed.expect
@@ -11,7 +11,7 @@
 
 import "org-dartlang-testcase:///part_not_part_of_lib2.dart";
 
-@#C1
+@core::override
 part part_not_part_of_lib1.dart;
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/part_not_part_of.dart.strong.expect b/pkg/front_end/testcases/part_not_part_of.dart.strong.expect
index 6f848ed..b9dac32 100644
--- a/pkg/front_end/testcases/part_not_part_of.dart.strong.expect
+++ b/pkg/front_end/testcases/part_not_part_of.dart.strong.expect
@@ -11,7 +11,7 @@
 
 import "org-dartlang-testcase:///part_not_part_of_lib2.dart";
 
-@#C1
+@core::override
 part part_not_part_of_lib1.dart;
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/part_not_part_of.dart.strong.transformed.expect b/pkg/front_end/testcases/part_not_part_of.dart.strong.transformed.expect
index 6f848ed..b9dac32 100644
--- a/pkg/front_end/testcases/part_not_part_of.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/part_not_part_of.dart.strong.transformed.expect
@@ -11,7 +11,7 @@
 
 import "org-dartlang-testcase:///part_not_part_of_lib2.dart";
 
-@#C1
+@core::override
 part part_not_part_of_lib1.dart;
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/part_not_part_of_same_named_library.dart.legacy.expect b/pkg/front_end/testcases/part_not_part_of_same_named_library.dart.legacy.expect
index 6fb2bf4..4a5e01d 100644
--- a/pkg/front_end/testcases/part_not_part_of_same_named_library.dart.legacy.expect
+++ b/pkg/front_end/testcases/part_not_part_of_same_named_library.dart.legacy.expect
@@ -12,7 +12,7 @@
 
 import "org-dartlang-testcase:///part_not_part_of_same_named_library_lib2.dart";
 
-@#C1
+@core::override
 part part_not_part_of_same_named_library_lib1.dart;
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/part_not_part_of_same_named_library.dart.legacy.transformed.expect b/pkg/front_end/testcases/part_not_part_of_same_named_library.dart.legacy.transformed.expect
index 6fb2bf4..4a5e01d 100644
--- a/pkg/front_end/testcases/part_not_part_of_same_named_library.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/part_not_part_of_same_named_library.dart.legacy.transformed.expect
@@ -12,7 +12,7 @@
 
 import "org-dartlang-testcase:///part_not_part_of_same_named_library_lib2.dart";
 
-@#C1
+@core::override
 part part_not_part_of_same_named_library_lib1.dart;
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/part_not_part_of_same_named_library.dart.strong.expect b/pkg/front_end/testcases/part_not_part_of_same_named_library.dart.strong.expect
index 1c36afa..7426670 100644
--- a/pkg/front_end/testcases/part_not_part_of_same_named_library.dart.strong.expect
+++ b/pkg/front_end/testcases/part_not_part_of_same_named_library.dart.strong.expect
@@ -12,7 +12,7 @@
 
 import "org-dartlang-testcase:///part_not_part_of_same_named_library_lib2.dart";
 
-@#C1
+@core::override
 part part_not_part_of_same_named_library_lib1.dart;
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/part_not_part_of_same_named_library.dart.strong.transformed.expect b/pkg/front_end/testcases/part_not_part_of_same_named_library.dart.strong.transformed.expect
index 1c36afa..7426670 100644
--- a/pkg/front_end/testcases/part_not_part_of_same_named_library.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/part_not_part_of_same_named_library.dart.strong.transformed.expect
@@ -12,7 +12,7 @@
 
 import "org-dartlang-testcase:///part_not_part_of_same_named_library_lib2.dart";
 
-@#C1
+@core::override
 part part_not_part_of_same_named_library_lib1.dart;
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/part_part_of_different_unnamed_library.dart.legacy.expect b/pkg/front_end/testcases/part_part_of_different_unnamed_library.dart.legacy.expect
index 50c5450..85e680d 100644
--- a/pkg/front_end/testcases/part_part_of_different_unnamed_library.dart.legacy.expect
+++ b/pkg/front_end/testcases/part_part_of_different_unnamed_library.dart.legacy.expect
@@ -11,7 +11,7 @@
 
 import "org-dartlang-testcase:///part_part_of_different_unnamed_library_lib2.dart";
 
-@#C1
+@core::override
 part part_part_of_different_unnamed_library_lib1.dart;
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/part_part_of_different_unnamed_library.dart.legacy.transformed.expect b/pkg/front_end/testcases/part_part_of_different_unnamed_library.dart.legacy.transformed.expect
index 50c5450..85e680d 100644
--- a/pkg/front_end/testcases/part_part_of_different_unnamed_library.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/part_part_of_different_unnamed_library.dart.legacy.transformed.expect
@@ -11,7 +11,7 @@
 
 import "org-dartlang-testcase:///part_part_of_different_unnamed_library_lib2.dart";
 
-@#C1
+@core::override
 part part_part_of_different_unnamed_library_lib1.dart;
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/part_part_of_different_unnamed_library.dart.strong.expect b/pkg/front_end/testcases/part_part_of_different_unnamed_library.dart.strong.expect
index 1b709f7..1fb79ff 100644
--- a/pkg/front_end/testcases/part_part_of_different_unnamed_library.dart.strong.expect
+++ b/pkg/front_end/testcases/part_part_of_different_unnamed_library.dart.strong.expect
@@ -11,7 +11,7 @@
 
 import "org-dartlang-testcase:///part_part_of_different_unnamed_library_lib2.dart";
 
-@#C1
+@core::override
 part part_part_of_different_unnamed_library_lib1.dart;
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/part_part_of_different_unnamed_library.dart.strong.transformed.expect b/pkg/front_end/testcases/part_part_of_different_unnamed_library.dart.strong.transformed.expect
index 1b709f7..1fb79ff 100644
--- a/pkg/front_end/testcases/part_part_of_different_unnamed_library.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/part_part_of_different_unnamed_library.dart.strong.transformed.expect
@@ -11,7 +11,7 @@
 
 import "org-dartlang-testcase:///part_part_of_different_unnamed_library_lib2.dart";
 
-@#C1
+@core::override
 part part_part_of_different_unnamed_library_lib1.dart;
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/part_part_of_differently_named_library.dart.legacy.expect b/pkg/front_end/testcases/part_part_of_differently_named_library.dart.legacy.expect
index 81d671e..14fe275 100644
--- a/pkg/front_end/testcases/part_part_of_differently_named_library.dart.legacy.expect
+++ b/pkg/front_end/testcases/part_part_of_differently_named_library.dart.legacy.expect
@@ -11,7 +11,7 @@
 
 import "org-dartlang-testcase:///part_part_of_differently_named_library_lib2.dart";
 
-@#C1
+@core::override
 part part_part_of_differently_named_library_lib1.dart;
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/part_part_of_differently_named_library.dart.legacy.transformed.expect b/pkg/front_end/testcases/part_part_of_differently_named_library.dart.legacy.transformed.expect
index 81d671e..14fe275 100644
--- a/pkg/front_end/testcases/part_part_of_differently_named_library.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/part_part_of_differently_named_library.dart.legacy.transformed.expect
@@ -11,7 +11,7 @@
 
 import "org-dartlang-testcase:///part_part_of_differently_named_library_lib2.dart";
 
-@#C1
+@core::override
 part part_part_of_differently_named_library_lib1.dart;
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/part_part_of_differently_named_library.dart.strong.expect b/pkg/front_end/testcases/part_part_of_differently_named_library.dart.strong.expect
index 3782382..f506b84 100644
--- a/pkg/front_end/testcases/part_part_of_differently_named_library.dart.strong.expect
+++ b/pkg/front_end/testcases/part_part_of_differently_named_library.dart.strong.expect
@@ -11,7 +11,7 @@
 
 import "org-dartlang-testcase:///part_part_of_differently_named_library_lib2.dart";
 
-@#C1
+@core::override
 part part_part_of_differently_named_library_lib1.dart;
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/part_part_of_differently_named_library.dart.strong.transformed.expect b/pkg/front_end/testcases/part_part_of_differently_named_library.dart.strong.transformed.expect
index 3782382..f506b84 100644
--- a/pkg/front_end/testcases/part_part_of_differently_named_library.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/part_part_of_differently_named_library.dart.strong.transformed.expect
@@ -11,7 +11,7 @@
 
 import "org-dartlang-testcase:///part_part_of_differently_named_library_lib2.dart";
 
-@#C1
+@core::override
 part part_part_of_differently_named_library_lib1.dart;
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/private_method_tearoff.dart.legacy.expect b/pkg/front_end/testcases/private_method_tearoff.dart.legacy.expect
index c7b5369..3e521af 100644
--- a/pkg/front_end/testcases/private_method_tearoff.dart.legacy.expect
+++ b/pkg/front_end/testcases/private_method_tearoff.dart.legacy.expect
@@ -10,7 +10,7 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder method /* from org-dartlang-testcase:///private_method_tearoff_lib.dart */ _f() → void
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#_f, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 class Baz extends self::Foo {
   synthetic constructor •() → self::Baz
diff --git a/pkg/front_end/testcases/private_method_tearoff.dart.legacy.transformed.expect b/pkg/front_end/testcases/private_method_tearoff.dart.legacy.transformed.expect
index c7b5369..3e521af 100644
--- a/pkg/front_end/testcases/private_method_tearoff.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/private_method_tearoff.dart.legacy.transformed.expect
@@ -10,7 +10,7 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder method /* from org-dartlang-testcase:///private_method_tearoff_lib.dart */ _f() → void
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#_f, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 class Baz extends self::Foo {
   synthetic constructor •() → self::Baz
diff --git a/pkg/front_end/testcases/private_method_tearoff.dart.strong.expect b/pkg/front_end/testcases/private_method_tearoff.dart.strong.expect
index b586aab..1422ece 100644
--- a/pkg/front_end/testcases/private_method_tearoff.dart.strong.expect
+++ b/pkg/front_end/testcases/private_method_tearoff.dart.strong.expect
@@ -10,7 +10,7 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder method /* from org-dartlang-testcase:///private_method_tearoff_lib.dart */ _f() → void
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#_f, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 class Baz extends self::Foo {
   synthetic constructor •() → self::Baz
diff --git a/pkg/front_end/testcases/private_method_tearoff.dart.strong.transformed.expect b/pkg/front_end/testcases/private_method_tearoff.dart.strong.transformed.expect
index b586aab..1422ece 100644
--- a/pkg/front_end/testcases/private_method_tearoff.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/private_method_tearoff.dart.strong.transformed.expect
@@ -10,7 +10,7 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder method /* from org-dartlang-testcase:///private_method_tearoff_lib.dart */ _f() → void
-    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#_f, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 class Baz extends self::Foo {
   synthetic constructor •() → self::Baz
diff --git a/pkg/front_end/testcases/rasta/bad_constructor_redirection.dart.strong.expect b/pkg/front_end/testcases/rasta/bad_constructor_redirection.dart.strong.expect
index c53e684..cfe717a 100644
--- a/pkg/front_end/testcases/rasta/bad_constructor_redirection.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/bad_constructor_redirection.dart.strong.expect
@@ -23,8 +23,5 @@
 }
 static method main() → dynamic {
   new self::C::•();
-  invalid-expression "pkg/front_end/testcases/rasta/bad_constructor_redirection.dart:6:21: Error: Too many positional arguments: 0 allowed, but 1 found.
-Try removing the extra positional arguments.
-  const C() : this.x(1);
-                    ^";
+  const self::C::•();
 }
diff --git a/pkg/front_end/testcases/rasta/bad_constructor_redirection.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/bad_constructor_redirection.dart.strong.transformed.expect
index c53e684..cfe717a 100644
--- a/pkg/front_end/testcases/rasta/bad_constructor_redirection.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/bad_constructor_redirection.dart.strong.transformed.expect
@@ -23,8 +23,5 @@
 }
 static method main() → dynamic {
   new self::C::•();
-  invalid-expression "pkg/front_end/testcases/rasta/bad_constructor_redirection.dart:6:21: Error: Too many positional arguments: 0 allowed, but 1 found.
-Try removing the extra positional arguments.
-  const C() : this.x(1);
-                    ^";
+  const self::C::•();
 }
diff --git a/pkg/front_end/testcases/rasta/bad_explicit_super_constructor.dart.legacy.expect b/pkg/front_end/testcases/rasta/bad_explicit_super_constructor.dart.legacy.expect
index dbbdaeb..6d07372 100644
--- a/pkg/front_end/testcases/rasta/bad_explicit_super_constructor.dart.legacy.expect
+++ b/pkg/front_end/testcases/rasta/bad_explicit_super_constructor.dart.legacy.expect
@@ -23,7 +23,5 @@
 }
 static method main() → dynamic {
   new self::B::•();
-  invalid-expression "pkg/front_end/testcases/rasta/bad_explicit_super_constructor.dart:10:20: Error: Too few positional arguments: 1 required, 0 given.
-  const B() : super();
-                   ^";
+  const self::B::•();
 }
diff --git a/pkg/front_end/testcases/rasta/bad_explicit_super_constructor.dart.legacy.transformed.expect b/pkg/front_end/testcases/rasta/bad_explicit_super_constructor.dart.legacy.transformed.expect
index dbbdaeb..6d07372 100644
--- a/pkg/front_end/testcases/rasta/bad_explicit_super_constructor.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/rasta/bad_explicit_super_constructor.dart.legacy.transformed.expect
@@ -23,7 +23,5 @@
 }
 static method main() → dynamic {
   new self::B::•();
-  invalid-expression "pkg/front_end/testcases/rasta/bad_explicit_super_constructor.dart:10:20: Error: Too few positional arguments: 1 required, 0 given.
-  const B() : super();
-                   ^";
+  const self::B::•();
 }
diff --git a/pkg/front_end/testcases/rasta/bad_explicit_super_constructor.dart.strong.expect b/pkg/front_end/testcases/rasta/bad_explicit_super_constructor.dart.strong.expect
index 6d09e58..122893d 100644
--- a/pkg/front_end/testcases/rasta/bad_explicit_super_constructor.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/bad_explicit_super_constructor.dart.strong.expect
@@ -23,7 +23,5 @@
 }
 static method main() → dynamic {
   new self::B::•();
-  invalid-expression "pkg/front_end/testcases/rasta/bad_explicit_super_constructor.dart:10:20: Error: Too few positional arguments: 1 required, 0 given.
-  const B() : super();
-                   ^";
+  const self::B::•();
 }
diff --git a/pkg/front_end/testcases/rasta/bad_explicit_super_constructor.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/bad_explicit_super_constructor.dart.strong.transformed.expect
index 6d09e58..122893d 100644
--- a/pkg/front_end/testcases/rasta/bad_explicit_super_constructor.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/bad_explicit_super_constructor.dart.strong.transformed.expect
@@ -23,7 +23,5 @@
 }
 static method main() → dynamic {
   new self::B::•();
-  invalid-expression "pkg/front_end/testcases/rasta/bad_explicit_super_constructor.dart:10:20: Error: Too few positional arguments: 1 required, 0 given.
-  const B() : super();
-                   ^";
+  const self::B::•();
 }
diff --git a/pkg/front_end/testcases/rasta/bad_implicit_super_constructor.dart.legacy.expect b/pkg/front_end/testcases/rasta/bad_implicit_super_constructor.dart.legacy.expect
index 5ab104d..5f6b84a 100644
--- a/pkg/front_end/testcases/rasta/bad_implicit_super_constructor.dart.legacy.expect
+++ b/pkg/front_end/testcases/rasta/bad_implicit_super_constructor.dart.legacy.expect
@@ -29,7 +29,5 @@
 }
 static method main() → dynamic {
   new self::B::•();
-  invalid-expression "pkg/front_end/testcases/rasta/bad_implicit_super_constructor.dart:10:9: Error: The superclass, 'A', has no unnamed constructor that takes no arguments.
-  const B();
-        ^";
+  const self::B::•();
 }
diff --git a/pkg/front_end/testcases/rasta/bad_implicit_super_constructor.dart.legacy.transformed.expect b/pkg/front_end/testcases/rasta/bad_implicit_super_constructor.dart.legacy.transformed.expect
index 5ab104d..5f6b84a 100644
--- a/pkg/front_end/testcases/rasta/bad_implicit_super_constructor.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/rasta/bad_implicit_super_constructor.dart.legacy.transformed.expect
@@ -29,7 +29,5 @@
 }
 static method main() → dynamic {
   new self::B::•();
-  invalid-expression "pkg/front_end/testcases/rasta/bad_implicit_super_constructor.dart:10:9: Error: The superclass, 'A', has no unnamed constructor that takes no arguments.
-  const B();
-        ^";
+  const self::B::•();
 }
diff --git a/pkg/front_end/testcases/rasta/bad_implicit_super_constructor.dart.strong.expect b/pkg/front_end/testcases/rasta/bad_implicit_super_constructor.dart.strong.expect
index 5ab104d..5f6b84a 100644
--- a/pkg/front_end/testcases/rasta/bad_implicit_super_constructor.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/bad_implicit_super_constructor.dart.strong.expect
@@ -29,7 +29,5 @@
 }
 static method main() → dynamic {
   new self::B::•();
-  invalid-expression "pkg/front_end/testcases/rasta/bad_implicit_super_constructor.dart:10:9: Error: The superclass, 'A', has no unnamed constructor that takes no arguments.
-  const B();
-        ^";
+  const self::B::•();
 }
diff --git a/pkg/front_end/testcases/rasta/bad_implicit_super_constructor.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/bad_implicit_super_constructor.dart.strong.transformed.expect
index 5ab104d..5f6b84a 100644
--- a/pkg/front_end/testcases/rasta/bad_implicit_super_constructor.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/bad_implicit_super_constructor.dart.strong.transformed.expect
@@ -29,7 +29,5 @@
 }
 static method main() → dynamic {
   new self::B::•();
-  invalid-expression "pkg/front_end/testcases/rasta/bad_implicit_super_constructor.dart:10:9: Error: The superclass, 'A', has no unnamed constructor that takes no arguments.
-  const B();
-        ^";
+  const self::B::•();
 }
diff --git a/pkg/front_end/testcases/rasta/bad_interpolation.dart.legacy.expect b/pkg/front_end/testcases/rasta/bad_interpolation.dart.legacy.expect
index 63302b1..fba617b 100644
--- a/pkg/front_end/testcases/rasta/bad_interpolation.dart.legacy.expect
+++ b/pkg/front_end/testcases/rasta/bad_interpolation.dart.legacy.expect
@@ -22,5 +22,5 @@
 import "dart:core" as core;
 
 static method main() → dynamic {
-  core::print(" ${throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 33, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)))}.);\"");
+  core::print(" ${throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#x, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))}.);\"");
 }
diff --git a/pkg/front_end/testcases/rasta/bad_interpolation.dart.legacy.transformed.expect b/pkg/front_end/testcases/rasta/bad_interpolation.dart.legacy.transformed.expect
index 63302b1..fba617b 100644
--- a/pkg/front_end/testcases/rasta/bad_interpolation.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/rasta/bad_interpolation.dart.legacy.transformed.expect
@@ -22,5 +22,5 @@
 import "dart:core" as core;
 
 static method main() → dynamic {
-  core::print(" ${throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 33, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)))}.);\"");
+  core::print(" ${throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#x, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))}.);\"");
 }
diff --git a/pkg/front_end/testcases/rasta/constant_get_and_invoke.dart.legacy.expect b/pkg/front_end/testcases/rasta/constant_get_and_invoke.dart.legacy.expect
index 9d1dcd1..eb9688c 100644
--- a/pkg/front_end/testcases/rasta/constant_get_and_invoke.dart.legacy.expect
+++ b/pkg/front_end/testcases/rasta/constant_get_and_invoke.dart.legacy.expect
@@ -1,9 +1,8 @@
 library;
 import self as self;
-import "dart:core" as core;
 
-static const field dynamic c = #C1;
+static const field dynamic c = 1;
 static method main() → dynamic {
-  #C1;
-  (#C1).call();
+  self::c;
+  self::c.call();
 }
diff --git a/pkg/front_end/testcases/rasta/constant_get_and_invoke.dart.legacy.transformed.expect b/pkg/front_end/testcases/rasta/constant_get_and_invoke.dart.legacy.transformed.expect
index 9d1dcd1..eb9688c 100644
--- a/pkg/front_end/testcases/rasta/constant_get_and_invoke.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/rasta/constant_get_and_invoke.dart.legacy.transformed.expect
@@ -1,9 +1,8 @@
 library;
 import self as self;
-import "dart:core" as core;
 
-static const field dynamic c = #C1;
+static const field dynamic c = 1;
 static method main() → dynamic {
-  #C1;
-  (#C1).call();
+  self::c;
+  self::c.call();
 }
diff --git a/pkg/front_end/testcases/rasta/constant_get_and_invoke.dart.strong.expect b/pkg/front_end/testcases/rasta/constant_get_and_invoke.dart.strong.expect
index 436bbff..cecd01b 100644
--- a/pkg/front_end/testcases/rasta/constant_get_and_invoke.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/constant_get_and_invoke.dart.strong.expect
@@ -10,9 +10,9 @@
 import self as self;
 import "dart:core" as core;
 
-static const field core::int c = #C1;
+static const field core::int c = 1;
 static method main() → dynamic {
-  #C1;
+  self::c;
   invalid-expression "pkg/front_end/testcases/rasta/constant_get_and_invoke.dart:8:4: Error: The method 'call' isn't defined for the class 'int'.
 Try correcting the name to the name of an existing method, or defining a method named 'call'.
   c();
diff --git a/pkg/front_end/testcases/rasta/constant_get_and_invoke.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/constant_get_and_invoke.dart.strong.transformed.expect
index 436bbff..cecd01b 100644
--- a/pkg/front_end/testcases/rasta/constant_get_and_invoke.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/constant_get_and_invoke.dart.strong.transformed.expect
@@ -10,9 +10,9 @@
 import self as self;
 import "dart:core" as core;
 
-static const field core::int c = #C1;
+static const field core::int c = 1;
 static method main() → dynamic {
-  #C1;
+  self::c;
   invalid-expression "pkg/front_end/testcases/rasta/constant_get_and_invoke.dart:8:4: Error: The method 'call' isn't defined for the class 'int'.
 Try correcting the name to the name of an existing method, or defining a method named 'call'.
   c();
diff --git a/pkg/front_end/testcases/rasta/deferred_load.dart.legacy.expect b/pkg/front_end/testcases/rasta/deferred_load.dart.legacy.expect
index 47afadc..84bbb0d 100644
--- a/pkg/front_end/testcases/rasta/deferred_load.dart.legacy.expect
+++ b/pkg/front_end/testcases/rasta/deferred_load.dart.legacy.expect
@@ -5,7 +5,7 @@
 import "org-dartlang-testcase:///deferred_lib.dart" deferred as lib;
 
 static method main() → dynamic {
-  #C1;
+  self::__loadLibrary_lib;
   LoadLibrary(lib);
 }
 static method __loadLibrary_lib() → asy::Future<dynamic>
diff --git a/pkg/front_end/testcases/rasta/deferred_load.dart.strong.expect b/pkg/front_end/testcases/rasta/deferred_load.dart.strong.expect
index 47afadc..84bbb0d 100644
--- a/pkg/front_end/testcases/rasta/deferred_load.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/deferred_load.dart.strong.expect
@@ -5,7 +5,7 @@
 import "org-dartlang-testcase:///deferred_lib.dart" deferred as lib;
 
 static method main() → dynamic {
-  #C1;
+  self::__loadLibrary_lib;
   LoadLibrary(lib);
 }
 static method __loadLibrary_lib() → asy::Future<dynamic>
diff --git a/pkg/front_end/testcases/rasta/deferred_load.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/deferred_load.dart.strong.transformed.expect
index 47afadc..84bbb0d 100644
--- a/pkg/front_end/testcases/rasta/deferred_load.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/deferred_load.dart.strong.transformed.expect
@@ -5,7 +5,7 @@
 import "org-dartlang-testcase:///deferred_lib.dart" deferred as lib;
 
 static method main() → dynamic {
-  #C1;
+  self::__loadLibrary_lib;
   LoadLibrary(lib);
 }
 static method __loadLibrary_lib() → asy::Future<dynamic>
diff --git a/pkg/front_end/testcases/rasta/enum.dart.legacy.expect b/pkg/front_end/testcases/rasta/enum.dart.legacy.expect
index ac39218..111e2dc 100644
--- a/pkg/front_end/testcases/rasta/enum.dart.legacy.expect
+++ b/pkg/front_end/testcases/rasta/enum.dart.legacy.expect
@@ -5,9 +5,9 @@
 class Foo extends core::Object {
   final field core::int index;
   final field core::String _name;
-  static const field core::List<self::Foo> values = #C7;
-  static const field self::Foo ec1 = #C3;
-  static const field self::Foo ec2 = #C6;
+  static const field core::List<self::Foo> values = const <self::Foo>[self::Foo::ec1, self::Foo::ec2];
+  static const field self::Foo ec1 = const self::Foo::•(0, "Foo.ec1");
+  static const field self::Foo ec2 = const self::Foo::•(1, "Foo.ec2");
   const constructor •(core::int index, core::String _name) → self::Foo
     : self::Foo::index = index, self::Foo::_name = _name, super core::Object::•()
     ;
diff --git a/pkg/front_end/testcases/rasta/enum.dart.legacy.transformed.expect b/pkg/front_end/testcases/rasta/enum.dart.legacy.transformed.expect
index ac39218..111e2dc 100644
--- a/pkg/front_end/testcases/rasta/enum.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/rasta/enum.dart.legacy.transformed.expect
@@ -5,9 +5,9 @@
 class Foo extends core::Object {
   final field core::int index;
   final field core::String _name;
-  static const field core::List<self::Foo> values = #C7;
-  static const field self::Foo ec1 = #C3;
-  static const field self::Foo ec2 = #C6;
+  static const field core::List<self::Foo> values = const <self::Foo>[self::Foo::ec1, self::Foo::ec2];
+  static const field self::Foo ec1 = const self::Foo::•(0, "Foo.ec1");
+  static const field self::Foo ec2 = const self::Foo::•(1, "Foo.ec2");
   const constructor •(core::int index, core::String _name) → self::Foo
     : self::Foo::index = index, self::Foo::_name = _name, super core::Object::•()
     ;
diff --git a/pkg/front_end/testcases/rasta/enum.dart.strong.expect b/pkg/front_end/testcases/rasta/enum.dart.strong.expect
index ac39218..111e2dc 100644
--- a/pkg/front_end/testcases/rasta/enum.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/enum.dart.strong.expect
@@ -5,9 +5,9 @@
 class Foo extends core::Object {
   final field core::int index;
   final field core::String _name;
-  static const field core::List<self::Foo> values = #C7;
-  static const field self::Foo ec1 = #C3;
-  static const field self::Foo ec2 = #C6;
+  static const field core::List<self::Foo> values = const <self::Foo>[self::Foo::ec1, self::Foo::ec2];
+  static const field self::Foo ec1 = const self::Foo::•(0, "Foo.ec1");
+  static const field self::Foo ec2 = const self::Foo::•(1, "Foo.ec2");
   const constructor •(core::int index, core::String _name) → self::Foo
     : self::Foo::index = index, self::Foo::_name = _name, super core::Object::•()
     ;
diff --git a/pkg/front_end/testcases/rasta/enum.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/enum.dart.strong.transformed.expect
index ac39218..111e2dc 100644
--- a/pkg/front_end/testcases/rasta/enum.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/enum.dart.strong.transformed.expect
@@ -5,9 +5,9 @@
 class Foo extends core::Object {
   final field core::int index;
   final field core::String _name;
-  static const field core::List<self::Foo> values = #C7;
-  static const field self::Foo ec1 = #C3;
-  static const field self::Foo ec2 = #C6;
+  static const field core::List<self::Foo> values = const <self::Foo>[self::Foo::ec1, self::Foo::ec2];
+  static const field self::Foo ec1 = const self::Foo::•(0, "Foo.ec1");
+  static const field self::Foo ec2 = const self::Foo::•(1, "Foo.ec2");
   const constructor •(core::int index, core::String _name) → self::Foo
     : self::Foo::index = index, self::Foo::_name = _name, super core::Object::•()
     ;
diff --git a/pkg/front_end/testcases/rasta/issue_000034.dart.legacy.expect b/pkg/front_end/testcases/rasta/issue_000034.dart.legacy.expect
index a9764b1..6a631bc 100644
--- a/pkg/front_end/testcases/rasta/issue_000034.dart.legacy.expect
+++ b/pkg/front_end/testcases/rasta/issue_000034.dart.legacy.expect
@@ -22,7 +22,5 @@
     ;
 }
 static method main() → dynamic {
-  invalid-expression "pkg/front_end/testcases/rasta/issue_000034.dart:6:15: Error: This couldn't be parsed.
-  const C() : this.x;
-              ^";
+  const self::C::•();
 }
diff --git a/pkg/front_end/testcases/rasta/issue_000034.dart.legacy.transformed.expect b/pkg/front_end/testcases/rasta/issue_000034.dart.legacy.transformed.expect
index a9764b1..6a631bc 100644
--- a/pkg/front_end/testcases/rasta/issue_000034.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000034.dart.legacy.transformed.expect
@@ -22,7 +22,5 @@
     ;
 }
 static method main() → dynamic {
-  invalid-expression "pkg/front_end/testcases/rasta/issue_000034.dart:6:15: Error: This couldn't be parsed.
-  const C() : this.x;
-              ^";
+  const self::C::•();
 }
diff --git a/pkg/front_end/testcases/rasta/issue_000034.dart.strong.expect b/pkg/front_end/testcases/rasta/issue_000034.dart.strong.expect
index a9764b1..6a631bc 100644
--- a/pkg/front_end/testcases/rasta/issue_000034.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/issue_000034.dart.strong.expect
@@ -22,7 +22,5 @@
     ;
 }
 static method main() → dynamic {
-  invalid-expression "pkg/front_end/testcases/rasta/issue_000034.dart:6:15: Error: This couldn't be parsed.
-  const C() : this.x;
-              ^";
+  const self::C::•();
 }
diff --git a/pkg/front_end/testcases/rasta/issue_000034.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/issue_000034.dart.strong.transformed.expect
index a9764b1..6a631bc 100644
--- a/pkg/front_end/testcases/rasta/issue_000034.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000034.dart.strong.transformed.expect
@@ -22,7 +22,5 @@
     ;
 }
 static method main() → dynamic {
-  invalid-expression "pkg/front_end/testcases/rasta/issue_000034.dart:6:15: Error: This couldn't be parsed.
-  const C() : this.x;
-              ^";
+  const self::C::•();
 }
diff --git a/pkg/front_end/testcases/rasta/issue_000042.dart.strong.expect b/pkg/front_end/testcases/rasta/issue_000042.dart.strong.expect
index 1006fac..da8f0c6 100644
--- a/pkg/front_end/testcases/rasta/issue_000042.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/issue_000042.dart.strong.expect
@@ -47,12 +47,12 @@
   #L3:
   switch(1) {
     #L4:
-    case #C1:
+    case 1:
       {
         break #L3;
       }
     #L5:
-    case #C2:
+    case 2:
       {
         break #L3;
       }
diff --git a/pkg/front_end/testcases/rasta/issue_000042.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/issue_000042.dart.strong.transformed.expect
index 1006fac..da8f0c6 100644
--- a/pkg/front_end/testcases/rasta/issue_000042.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000042.dart.strong.transformed.expect
@@ -47,12 +47,12 @@
   #L3:
   switch(1) {
     #L4:
-    case #C1:
+    case 1:
       {
         break #L3;
       }
     #L5:
-    case #C2:
+    case 2:
       {
         break #L3;
       }
diff --git a/pkg/front_end/testcases/rasta/issue_000044.dart.strong.expect b/pkg/front_end/testcases/rasta/issue_000044.dart.strong.expect
index b903e11..801849b 100644
--- a/pkg/front_end/testcases/rasta/issue_000044.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/issue_000044.dart.strong.expect
@@ -92,11 +92,11 @@
          ^" as{TypeError} invalid-type;
 static method main() → dynamic {
   self::C c = null;
-  core::print(#C1);
+  core::print(const self::C::constant());
   core::print(invalid-expression "pkg/front_end/testcases/rasta/issue_000044.dart:27:15: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
 Try using a constructor or factory that is 'const'.
   print(const C.missingFactoryKeyword());
               ^");
-  core::print(#C1);
+  core::print(const self::C::constant());
   core::print(new self::C::constant().{self::C::notEvenAConstructor}(null));
 }
diff --git a/pkg/front_end/testcases/rasta/issue_000044.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/issue_000044.dart.strong.transformed.expect
index c35e350..6ea0318 100644
--- a/pkg/front_end/testcases/rasta/issue_000044.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000044.dart.strong.transformed.expect
@@ -92,11 +92,11 @@
          ^" as{TypeError} invalid-type;
 static method main() → dynamic {
   self::C c = null;
-  core::print(#C1);
+  core::print(const self::C::constant());
   core::print(invalid-expression "pkg/front_end/testcases/rasta/issue_000044.dart:27:15: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
 Try using a constructor or factory that is 'const'.
   print(const C.missingFactoryKeyword());
               ^");
-  core::print(#C1);
+  core::print(const self::C::constant());
   core::print(new self::C::constant().{self::C::notEvenAConstructor}(null));
 }
diff --git a/pkg/front_end/testcases/rasta/issue_000070.dart.legacy.expect b/pkg/front_end/testcases/rasta/issue_000070.dart.legacy.expect
index fd8f5ae..1deecbc 100644
--- a/pkg/front_end/testcases/rasta/issue_000070.dart.legacy.expect
+++ b/pkg/front_end/testcases/rasta/issue_000070.dart.legacy.expect
@@ -15,7 +15,7 @@
   constructor empty() → self::A<self::A::N, self::A::S, self::A::U>
     : self::A::field = null, super core::Object::•() {}
   const constructor c(self::A::U u, self::A::S s) → self::A<self::A::N, self::A::S, self::A::U>
-    : self::A::field = #C2, super core::Object::•()
+    : self::A::field = const <dynamic>[null], super core::Object::•()
     ;
   static factory f<N extends core::Object = dynamic, S extends core::Object = dynamic, U extends core::Object = dynamic>(self::A::f::S s) → self::A<self::A::f::N, self::A::f::S, self::A::f::U> {
     exp::Expect::isTrue(s is self::A::f::S);
@@ -39,7 +39,7 @@
 static method main() → dynamic {
   new self::A::•<core::num, core::double, core::List<dynamic>>(1, 2.0);
   self::A<dynamic, dynamic, dynamic> a = self::A::f<core::int, core::int, core::int>(1);
-  #C3;
+  const self::A::c<core::int, core::int, core::List<dynamic>>(const <dynamic>[], 1);
   dynamic z = a.getter;
   a.setter = 1;
 }
diff --git a/pkg/front_end/testcases/rasta/issue_000070.dart.legacy.transformed.expect b/pkg/front_end/testcases/rasta/issue_000070.dart.legacy.transformed.expect
index 47887f1..6f8f772 100644
--- a/pkg/front_end/testcases/rasta/issue_000070.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000070.dart.legacy.transformed.expect
@@ -15,7 +15,7 @@
   constructor empty() → self::A<self::A::N, self::A::S, self::A::U>
     : self::A::field = null, super core::Object::•() {}
   const constructor c(self::A::U u, self::A::S s) → self::A<self::A::N, self::A::S, self::A::U>
-    : self::A::field = #C2, super core::Object::•()
+    : self::A::field = const <dynamic>[null], super core::Object::•()
     ;
   static factory f<N extends core::Object = dynamic, S extends core::Object = dynamic, U extends core::Object = dynamic>(self::A::f::S s) → self::A<self::A::f::N, self::A::f::S, self::A::f::U> {
     exp::Expect::isTrue(s is self::A::f::S);
@@ -39,7 +39,7 @@
 static method main() → dynamic {
   new self::A::•<core::num, core::double, core::List<dynamic>>(1, 2.0);
   self::A<dynamic, dynamic, dynamic> a = self::A::f<core::int, core::int, core::int>(1);
-  #C3;
+  const self::A::c<core::int, core::int, core::List<dynamic>>(const <dynamic>[], 1);
   dynamic z = a.getter;
   a.setter = 1;
 }
diff --git a/pkg/front_end/testcases/rasta/issue_000070.dart.strong.expect b/pkg/front_end/testcases/rasta/issue_000070.dart.strong.expect
index e887e66..82beacc 100644
--- a/pkg/front_end/testcases/rasta/issue_000070.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/issue_000070.dart.strong.expect
@@ -15,7 +15,7 @@
   constructor empty() → self::A<self::A::N, self::A::S, self::A::U>
     : self::A::field = null, super core::Object::•() {}
   const constructor c(self::A::U u, self::A::S s) → self::A<self::A::N, self::A::S, self::A::U>
-    : self::A::field = #C2, super core::Object::•()
+    : self::A::field = const <core::Null>[null], super core::Object::•()
     ;
   static factory f<N extends core::Object = dynamic, S extends core::Object = dynamic, U extends core::Object = dynamic>(self::A::f::S s) → self::A<self::A::f::N, self::A::f::S, self::A::f::U> {
     exp::Expect::isTrue(s is self::A::f::S);
@@ -39,7 +39,7 @@
 static method main() → dynamic {
   new self::A::•<core::num, core::double, core::List<dynamic>>(1, 2.0);
   self::A<dynamic, dynamic, dynamic> a = self::A::f<core::int, core::int, core::int>(1);
-  #C3;
+  const self::A::c<core::int, core::int, core::List<dynamic>>(const <dynamic>[], 1);
   core::List<dynamic> z = a.{self::A::getter};
   a.{self::A::setter} = 1;
 }
diff --git a/pkg/front_end/testcases/rasta/issue_000070.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/issue_000070.dart.strong.transformed.expect
index 682a454..e99b7e6 100644
--- a/pkg/front_end/testcases/rasta/issue_000070.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000070.dart.strong.transformed.expect
@@ -15,7 +15,7 @@
   constructor empty() → self::A<self::A::N, self::A::S, self::A::U>
     : self::A::field = null, super core::Object::•() {}
   const constructor c(self::A::U u, self::A::S s) → self::A<self::A::N, self::A::S, self::A::U>
-    : self::A::field = #C2, super core::Object::•()
+    : self::A::field = const <core::Null>[null], super core::Object::•()
     ;
   static factory f<N extends core::Object = dynamic, S extends core::Object = dynamic, U extends core::Object = dynamic>(self::A::f::S s) → self::A<self::A::f::N, self::A::f::S, self::A::f::U> {
     exp::Expect::isTrue(s is self::A::f::S);
@@ -39,7 +39,7 @@
 static method main() → dynamic {
   new self::A::•<core::num, core::double, core::List<dynamic>>(1, 2.0);
   self::A<dynamic, dynamic, dynamic> a = self::A::f<core::int, core::int, core::int>(1);
-  #C3;
+  const self::A::c<core::int, core::int, core::List<dynamic>>(const <dynamic>[], 1);
   core::List<dynamic> z = a.{self::A::getter};
   a.{self::A::setter} = 1;
 }
diff --git a/pkg/front_end/testcases/rasta/mandatory_parameter_initializer.dart.strong.expect b/pkg/front_end/testcases/rasta/mandatory_parameter_initializer.dart.strong.expect
index 8fc1e32..f49eacf 100644
--- a/pkg/front_end/testcases/rasta/mandatory_parameter_initializer.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/mandatory_parameter_initializer.dart.strong.expect
@@ -1,13 +1,3 @@
-//
-// Problems in component:
-//
-// pkg/front_end/testcases/rasta/mandatory_parameter_initializer.dart:5:18: Error: Can't have a non-constant List literal within a const context.
-// main(arguments = [x]) {
-//                  ^
-// pkg/front_end/testcases/rasta/mandatory_parameter_initializer.dart:5:6: Context: While analyzing:
-// main(arguments = [x]) {
-//      ^
-//
 library;
 //
 // Problems in library:
@@ -23,4 +13,6 @@
 //
 import self as self;
 
-static method main(dynamic arguments = invalid-expression "Can't have a non-constant List literal within a const context.") → dynamic {}
+static method main(dynamic arguments = <dynamic>[invalid-expression "pkg/front_end/testcases/rasta/mandatory_parameter_initializer.dart:5:19: Error: Getter not found: 'x'.
+main(arguments = [x]) {
+                  ^"]) → dynamic {}
diff --git a/pkg/front_end/testcases/rasta/mandatory_parameter_initializer.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/mandatory_parameter_initializer.dart.strong.transformed.expect
index 8fc1e32..f49eacf 100644
--- a/pkg/front_end/testcases/rasta/mandatory_parameter_initializer.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/mandatory_parameter_initializer.dart.strong.transformed.expect
@@ -1,13 +1,3 @@
-//
-// Problems in component:
-//
-// pkg/front_end/testcases/rasta/mandatory_parameter_initializer.dart:5:18: Error: Can't have a non-constant List literal within a const context.
-// main(arguments = [x]) {
-//                  ^
-// pkg/front_end/testcases/rasta/mandatory_parameter_initializer.dart:5:6: Context: While analyzing:
-// main(arguments = [x]) {
-//      ^
-//
 library;
 //
 // Problems in library:
@@ -23,4 +13,6 @@
 //
 import self as self;
 
-static method main(dynamic arguments = invalid-expression "Can't have a non-constant List literal within a const context.") → dynamic {}
+static method main(dynamic arguments = <dynamic>[invalid-expression "pkg/front_end/testcases/rasta/mandatory_parameter_initializer.dart:5:19: Error: Getter not found: 'x'.
+main(arguments = [x]) {
+                  ^"]) → dynamic {}
diff --git a/pkg/front_end/testcases/rasta/native_is_illegal.dart.strong.expect b/pkg/front_end/testcases/rasta/native_is_illegal.dart.strong.expect
index 61d7cd0..12904aa 100644
--- a/pkg/front_end/testcases/rasta/native_is_illegal.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/native_is_illegal.dart.strong.expect
@@ -4,14 +4,14 @@
 import "dart:_internal" as _in;
 
 class Bar extends core::Object {
-  @#C2
+  @_in::ExternalName::•("Bar_get_x")
   external get x() → self::Bar;
-  @#C4
+  @_in::ExternalName::•("Bar_set_x")
   external set x(self::Bar value) → void;
-  @#C6
+  @_in::ExternalName::•("Bar_f")
   external method f() → dynamic;
-  @#C8
+  @_in::ExternalName::•("Bar_constructor")
   external static factory •() → self::Bar;
 }
-@#C10
+@_in::ExternalName::•("foo")
 external static method foo() → dynamic;
diff --git a/pkg/front_end/testcases/rasta/native_is_illegal.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/native_is_illegal.dart.strong.transformed.expect
index 61d7cd0..12904aa 100644
--- a/pkg/front_end/testcases/rasta/native_is_illegal.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/native_is_illegal.dart.strong.transformed.expect
@@ -4,14 +4,14 @@
 import "dart:_internal" as _in;
 
 class Bar extends core::Object {
-  @#C2
+  @_in::ExternalName::•("Bar_get_x")
   external get x() → self::Bar;
-  @#C4
+  @_in::ExternalName::•("Bar_set_x")
   external set x(self::Bar value) → void;
-  @#C6
+  @_in::ExternalName::•("Bar_f")
   external method f() → dynamic;
-  @#C8
+  @_in::ExternalName::•("Bar_constructor")
   external static factory •() → self::Bar;
 }
-@#C10
+@_in::ExternalName::•("foo")
 external static method foo() → dynamic;
diff --git a/pkg/front_end/testcases/rasta/parser_error.dart.legacy.expect b/pkg/front_end/testcases/rasta/parser_error.dart.legacy.expect
index 996f60c..43a8c2d 100644
--- a/pkg/front_end/testcases/rasta/parser_error.dart.legacy.expect
+++ b/pkg/front_end/testcases/rasta/parser_error.dart.legacy.expect
@@ -20,7 +20,7 @@
 
 import "package:expect/expect.dart";
 
-static method test(dynamic a, {dynamic b = #C1, dynamic c = #C1}) → core::int {
+static method test(dynamic a, {dynamic b = null, dynamic c = null}) → core::int {
   if(invalid-expression "pkg/front_end/testcases/rasta/parser_error.dart:10:7: Error: This couldn't be parsed.
   if (?b) return b;  /// 01: compile-time error
       ^" ? b : invalid-expression "pkg/front_end/testcases/rasta/parser_error.dart:10:9: Error: This couldn't be parsed.
diff --git a/pkg/front_end/testcases/rasta/parser_error.dart.strong.expect b/pkg/front_end/testcases/rasta/parser_error.dart.strong.expect
index 250b541..1e7100e 100644
--- a/pkg/front_end/testcases/rasta/parser_error.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/parser_error.dart.strong.expect
@@ -20,7 +20,7 @@
 
 import "package:expect/expect.dart";
 
-static method test(dynamic a, {dynamic b = #C1, dynamic c = #C1}) → core::int {
+static method test(dynamic a, {dynamic b = null, dynamic c = null}) → core::int {
   if((invalid-expression "pkg/front_end/testcases/rasta/parser_error.dart:10:7: Error: This couldn't be parsed.
   if (?b) return b;  /// 01: compile-time error
       ^" as{TypeError} core::bool ?{dynamic} b : invalid-expression "pkg/front_end/testcases/rasta/parser_error.dart:10:9: Error: This couldn't be parsed.
diff --git a/pkg/front_end/testcases/rasta/parser_error.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/parser_error.dart.strong.transformed.expect
index 250b541..1e7100e 100644
--- a/pkg/front_end/testcases/rasta/parser_error.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/parser_error.dart.strong.transformed.expect
@@ -20,7 +20,7 @@
 
 import "package:expect/expect.dart";
 
-static method test(dynamic a, {dynamic b = #C1, dynamic c = #C1}) → core::int {
+static method test(dynamic a, {dynamic b = null, dynamic c = null}) → core::int {
   if((invalid-expression "pkg/front_end/testcases/rasta/parser_error.dart:10:7: Error: This couldn't be parsed.
   if (?b) return b;  /// 01: compile-time error
       ^" as{TypeError} core::bool ?{dynamic} b : invalid-expression "pkg/front_end/testcases/rasta/parser_error.dart:10:9: Error: This couldn't be parsed.
diff --git a/pkg/front_end/testcases/rasta/static.dart.legacy.expect b/pkg/front_end/testcases/rasta/static.dart.legacy.expect
index 5ca8d74..70d0f8c 100644
--- a/pkg/front_end/testcases/rasta/static.dart.legacy.expect
+++ b/pkg/front_end/testcases/rasta/static.dart.legacy.expect
@@ -142,7 +142,7 @@
 import "dart:core" as core;
 
 class Foo extends core::Object {
-  static const field dynamic staticConstant = #C1;
+  static const field dynamic staticConstant = 42;
   static field dynamic staticField = 42;
   synthetic constructor •() → self::Foo
     : super core::Object::•()
@@ -158,66 +158,66 @@
 }
 static method main() → dynamic {
   try {
-    #C1;
-    self::use(#C1);
+    self::Foo::staticConstant;
+    self::use(self::Foo::staticConstant);
     self::Foo::staticField;
     self::use(self::Foo::staticField);
-    #C2;
-    self::use(#C2);
+    self::Foo::staticFunction;
+    self::use(self::Foo::staticFunction);
     self::Foo::staticGetter;
     self::use(self::Foo::staticGetter);
-    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C3, 33, #C4, #C5, core::Map::unmodifiable<core::Symbol, dynamic>(#C6)));
-    self::use(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C3, 33, #C4, #C5, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))));
-    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C7, 34, #C4, core::List::unmodifiable<dynamic>(<dynamic>[(#C1).+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(#C6)));
-    self::use(let final dynamic #t1 = #C1 in let final dynamic #t2 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C7, 34, #C4, core::List::unmodifiable<dynamic>(<dynamic>[#t1.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(#C6))) in #t1);
+    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+    self::use(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
+    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticConstant, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticConstant.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+    self::use(let final dynamic #t1 = self::Foo::staticConstant in let final dynamic #t2 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticConstant, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[#t1.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) in #t1);
     self::Foo::staticField = self::Foo::staticField.+(1);
     self::use(let final dynamic #t3 = self::Foo::staticField in let final dynamic #t4 = self::Foo::staticField = #t3.+(1) in #t3);
-    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C8, 34, #C4, core::List::unmodifiable<dynamic>(<dynamic>[(#C2).+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(#C6)));
-    self::use(let final dynamic #t5 = #C2 in let final dynamic #t6 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C8, 34, #C4, core::List::unmodifiable<dynamic>(<dynamic>[#t5.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(#C6))) in #t5);
-    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C9, 34, #C4, core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticGetter.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(#C6)));
-    self::use(let final dynamic #t7 = self::Foo::staticGetter in let final dynamic #t8 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C9, 34, #C4, core::List::unmodifiable<dynamic>(<dynamic>[#t7.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(#C6))) in #t7);
-    self::Foo::staticSetter = (throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C3, 33, #C4, #C5, core::Map::unmodifiable<core::Symbol, dynamic>(#C6)))).+(1);
-    self::use(let final dynamic #t9 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C3, 33, #C4, #C5, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))) in let final dynamic #t10 = self::Foo::staticSetter = #t9.+(1) in #t9);
-    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C7, 34, #C4, core::List::unmodifiable<dynamic>(<dynamic>[(#C1).+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(#C6)));
-    self::use(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C7, 34, #C4, core::List::unmodifiable<dynamic>(<dynamic>[(#C1).+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(#C6))));
+    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticFunction.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+    self::use(let final dynamic #t5 = self::Foo::staticFunction in let final dynamic #t6 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[#t5.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) in #t5);
+    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticGetter, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticGetter.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+    self::use(let final dynamic #t7 = self::Foo::staticGetter in let final dynamic #t8 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticGetter, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[#t7.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) in #t7);
+    self::Foo::staticSetter = (throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))).+(1);
+    self::use(let final dynamic #t9 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) in let final dynamic #t10 = self::Foo::staticSetter = #t9.+(1) in #t9);
+    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticConstant, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticConstant.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+    self::use(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticConstant, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticConstant.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
     self::Foo::staticField = self::Foo::staticField.+(1);
     self::use(self::Foo::staticField = self::Foo::staticField.+(1));
-    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C8, 34, #C4, core::List::unmodifiable<dynamic>(<dynamic>[(#C2).+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(#C6)));
-    self::use(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C8, 34, #C4, core::List::unmodifiable<dynamic>(<dynamic>[(#C2).+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(#C6))));
-    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C9, 34, #C4, core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticGetter.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(#C6)));
-    self::use(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C9, 34, #C4, core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticGetter.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(#C6))));
-    self::Foo::staticSetter = (throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C3, 33, #C4, #C5, core::Map::unmodifiable<core::Symbol, dynamic>(#C6)))).+(1);
-    self::use(self::Foo::staticSetter = (throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C3, 33, #C4, #C5, core::Map::unmodifiable<core::Symbol, dynamic>(#C6)))).+(1));
-    (#C1).call();
-    self::use((#C1).call());
+    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticFunction.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+    self::use(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticFunction.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
+    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticGetter, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticGetter.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+    self::use(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticGetter, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticGetter.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
+    self::Foo::staticSetter = (throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))).+(1);
+    self::use(self::Foo::staticSetter = (throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))).+(1));
+    self::Foo::staticConstant.call();
+    self::use(self::Foo::staticConstant.call());
     self::Foo::staticField.call();
     self::use(self::Foo::staticField.call());
     self::Foo::staticFunction();
     self::use(self::Foo::staticFunction());
     self::Foo::staticGetter.call();
     self::use(self::Foo::staticGetter.call());
-    (throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C3, 33, #C4, #C5, core::Map::unmodifiable<core::Symbol, dynamic>(#C6)))).call();
-    self::use((throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C3, 33, #C4, #C5, core::Map::unmodifiable<core::Symbol, dynamic>(#C6)))).call());
-    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C7, 34, #C4, core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(#C6)));
-    self::use(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C7, 34, #C4, core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(#C6))));
+    (throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))).call();
+    self::use((throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))).call());
+    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticConstant, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+    self::use(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticConstant, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
     self::Foo::staticField = 87;
     self::use(self::Foo::staticField = 87);
-    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C8, 34, #C4, core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(#C6)));
-    self::use(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C8, 34, #C4, core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(#C6))));
-    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C9, 34, #C4, core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(#C6)));
-    self::use(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C9, 34, #C4, core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(#C6))));
+    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+    self::use(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
+    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticGetter, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+    self::use(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticGetter, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
     self::Foo::staticSetter = 87;
     self::use(self::Foo::staticSetter = 87);
-    (#C1).==(null) ? throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C7, 34, #C4, core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(#C6))) : null;
-    self::use(let final dynamic #t11 = #C1 in #t11.==(null) ? throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C7, 34, #C4, core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(#C6))) : #t11);
+    self::Foo::staticConstant.==(null) ? throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticConstant, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) : null;
+    self::use(let final dynamic #t11 = self::Foo::staticConstant in #t11.==(null) ? throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticConstant, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) : #t11);
     self::Foo::staticField.==(null) ? self::Foo::staticField = 87 : null;
     self::use(let final dynamic #t12 = self::Foo::staticField in #t12.==(null) ? self::Foo::staticField = 87 : #t12);
-    (#C2).==(null) ? throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C8, 34, #C4, core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(#C6))) : null;
-    self::use(let final dynamic #t13 = #C2 in #t13.==(null) ? throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C8, 34, #C4, core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(#C6))) : #t13);
-    self::Foo::staticGetter.==(null) ? throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C9, 34, #C4, core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(#C6))) : null;
-    self::use(let final dynamic #t14 = self::Foo::staticGetter in #t14.==(null) ? throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C9, 34, #C4, core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(#C6))) : #t14);
-    (throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C3, 33, #C4, #C5, core::Map::unmodifiable<core::Symbol, dynamic>(#C6)))).==(null) ? self::Foo::staticSetter = 87 : null;
-    self::use(let final dynamic #t15 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C3, 33, #C4, #C5, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))) in #t15.==(null) ? self::Foo::staticSetter = 87 : #t15);
+    self::Foo::staticFunction.==(null) ? throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) : null;
+    self::use(let final dynamic #t13 = self::Foo::staticFunction in #t13.==(null) ? throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) : #t13);
+    self::Foo::staticGetter.==(null) ? throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticGetter, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) : null;
+    self::use(let final dynamic #t14 = self::Foo::staticGetter in #t14.==(null) ? throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticGetter, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) : #t14);
+    (throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))).==(null) ? self::Foo::staticSetter = 87 : null;
+    self::use(let final dynamic #t15 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) in #t15.==(null) ? self::Foo::staticSetter = 87 : #t15);
   }
   on core::NoSuchMethodError catch(no-exception-var) {
   }
diff --git a/pkg/front_end/testcases/rasta/static.dart.legacy.transformed.expect b/pkg/front_end/testcases/rasta/static.dart.legacy.transformed.expect
index 5ca8d74..70d0f8c 100644
--- a/pkg/front_end/testcases/rasta/static.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/rasta/static.dart.legacy.transformed.expect
@@ -142,7 +142,7 @@
 import "dart:core" as core;
 
 class Foo extends core::Object {
-  static const field dynamic staticConstant = #C1;
+  static const field dynamic staticConstant = 42;
   static field dynamic staticField = 42;
   synthetic constructor •() → self::Foo
     : super core::Object::•()
@@ -158,66 +158,66 @@
 }
 static method main() → dynamic {
   try {
-    #C1;
-    self::use(#C1);
+    self::Foo::staticConstant;
+    self::use(self::Foo::staticConstant);
     self::Foo::staticField;
     self::use(self::Foo::staticField);
-    #C2;
-    self::use(#C2);
+    self::Foo::staticFunction;
+    self::use(self::Foo::staticFunction);
     self::Foo::staticGetter;
     self::use(self::Foo::staticGetter);
-    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C3, 33, #C4, #C5, core::Map::unmodifiable<core::Symbol, dynamic>(#C6)));
-    self::use(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C3, 33, #C4, #C5, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))));
-    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C7, 34, #C4, core::List::unmodifiable<dynamic>(<dynamic>[(#C1).+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(#C6)));
-    self::use(let final dynamic #t1 = #C1 in let final dynamic #t2 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C7, 34, #C4, core::List::unmodifiable<dynamic>(<dynamic>[#t1.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(#C6))) in #t1);
+    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+    self::use(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
+    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticConstant, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticConstant.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+    self::use(let final dynamic #t1 = self::Foo::staticConstant in let final dynamic #t2 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticConstant, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[#t1.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) in #t1);
     self::Foo::staticField = self::Foo::staticField.+(1);
     self::use(let final dynamic #t3 = self::Foo::staticField in let final dynamic #t4 = self::Foo::staticField = #t3.+(1) in #t3);
-    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C8, 34, #C4, core::List::unmodifiable<dynamic>(<dynamic>[(#C2).+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(#C6)));
-    self::use(let final dynamic #t5 = #C2 in let final dynamic #t6 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C8, 34, #C4, core::List::unmodifiable<dynamic>(<dynamic>[#t5.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(#C6))) in #t5);
-    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C9, 34, #C4, core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticGetter.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(#C6)));
-    self::use(let final dynamic #t7 = self::Foo::staticGetter in let final dynamic #t8 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C9, 34, #C4, core::List::unmodifiable<dynamic>(<dynamic>[#t7.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(#C6))) in #t7);
-    self::Foo::staticSetter = (throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C3, 33, #C4, #C5, core::Map::unmodifiable<core::Symbol, dynamic>(#C6)))).+(1);
-    self::use(let final dynamic #t9 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C3, 33, #C4, #C5, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))) in let final dynamic #t10 = self::Foo::staticSetter = #t9.+(1) in #t9);
-    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C7, 34, #C4, core::List::unmodifiable<dynamic>(<dynamic>[(#C1).+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(#C6)));
-    self::use(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C7, 34, #C4, core::List::unmodifiable<dynamic>(<dynamic>[(#C1).+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(#C6))));
+    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticFunction.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+    self::use(let final dynamic #t5 = self::Foo::staticFunction in let final dynamic #t6 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[#t5.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) in #t5);
+    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticGetter, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticGetter.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+    self::use(let final dynamic #t7 = self::Foo::staticGetter in let final dynamic #t8 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticGetter, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[#t7.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) in #t7);
+    self::Foo::staticSetter = (throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))).+(1);
+    self::use(let final dynamic #t9 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) in let final dynamic #t10 = self::Foo::staticSetter = #t9.+(1) in #t9);
+    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticConstant, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticConstant.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+    self::use(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticConstant, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticConstant.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
     self::Foo::staticField = self::Foo::staticField.+(1);
     self::use(self::Foo::staticField = self::Foo::staticField.+(1));
-    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C8, 34, #C4, core::List::unmodifiable<dynamic>(<dynamic>[(#C2).+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(#C6)));
-    self::use(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C8, 34, #C4, core::List::unmodifiable<dynamic>(<dynamic>[(#C2).+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(#C6))));
-    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C9, 34, #C4, core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticGetter.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(#C6)));
-    self::use(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C9, 34, #C4, core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticGetter.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(#C6))));
-    self::Foo::staticSetter = (throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C3, 33, #C4, #C5, core::Map::unmodifiable<core::Symbol, dynamic>(#C6)))).+(1);
-    self::use(self::Foo::staticSetter = (throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C3, 33, #C4, #C5, core::Map::unmodifiable<core::Symbol, dynamic>(#C6)))).+(1));
-    (#C1).call();
-    self::use((#C1).call());
+    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticFunction.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+    self::use(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticFunction.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
+    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticGetter, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticGetter.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+    self::use(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticGetter, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticGetter.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
+    self::Foo::staticSetter = (throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))).+(1);
+    self::use(self::Foo::staticSetter = (throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))).+(1));
+    self::Foo::staticConstant.call();
+    self::use(self::Foo::staticConstant.call());
     self::Foo::staticField.call();
     self::use(self::Foo::staticField.call());
     self::Foo::staticFunction();
     self::use(self::Foo::staticFunction());
     self::Foo::staticGetter.call();
     self::use(self::Foo::staticGetter.call());
-    (throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C3, 33, #C4, #C5, core::Map::unmodifiable<core::Symbol, dynamic>(#C6)))).call();
-    self::use((throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C3, 33, #C4, #C5, core::Map::unmodifiable<core::Symbol, dynamic>(#C6)))).call());
-    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C7, 34, #C4, core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(#C6)));
-    self::use(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C7, 34, #C4, core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(#C6))));
+    (throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))).call();
+    self::use((throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))).call());
+    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticConstant, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+    self::use(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticConstant, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
     self::Foo::staticField = 87;
     self::use(self::Foo::staticField = 87);
-    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C8, 34, #C4, core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(#C6)));
-    self::use(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C8, 34, #C4, core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(#C6))));
-    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C9, 34, #C4, core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(#C6)));
-    self::use(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C9, 34, #C4, core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(#C6))));
+    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+    self::use(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
+    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticGetter, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+    self::use(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticGetter, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
     self::Foo::staticSetter = 87;
     self::use(self::Foo::staticSetter = 87);
-    (#C1).==(null) ? throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C7, 34, #C4, core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(#C6))) : null;
-    self::use(let final dynamic #t11 = #C1 in #t11.==(null) ? throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C7, 34, #C4, core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(#C6))) : #t11);
+    self::Foo::staticConstant.==(null) ? throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticConstant, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) : null;
+    self::use(let final dynamic #t11 = self::Foo::staticConstant in #t11.==(null) ? throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticConstant, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) : #t11);
     self::Foo::staticField.==(null) ? self::Foo::staticField = 87 : null;
     self::use(let final dynamic #t12 = self::Foo::staticField in #t12.==(null) ? self::Foo::staticField = 87 : #t12);
-    (#C2).==(null) ? throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C8, 34, #C4, core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(#C6))) : null;
-    self::use(let final dynamic #t13 = #C2 in #t13.==(null) ? throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C8, 34, #C4, core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(#C6))) : #t13);
-    self::Foo::staticGetter.==(null) ? throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C9, 34, #C4, core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(#C6))) : null;
-    self::use(let final dynamic #t14 = self::Foo::staticGetter in #t14.==(null) ? throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C9, 34, #C4, core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(#C6))) : #t14);
-    (throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C3, 33, #C4, #C5, core::Map::unmodifiable<core::Symbol, dynamic>(#C6)))).==(null) ? self::Foo::staticSetter = 87 : null;
-    self::use(let final dynamic #t15 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C3, 33, #C4, #C5, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))) in #t15.==(null) ? self::Foo::staticSetter = 87 : #t15);
+    self::Foo::staticFunction.==(null) ? throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) : null;
+    self::use(let final dynamic #t13 = self::Foo::staticFunction in #t13.==(null) ? throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) : #t13);
+    self::Foo::staticGetter.==(null) ? throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticGetter, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) : null;
+    self::use(let final dynamic #t14 = self::Foo::staticGetter in #t14.==(null) ? throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticGetter, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) : #t14);
+    (throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))).==(null) ? self::Foo::staticSetter = 87 : null;
+    self::use(let final dynamic #t15 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) in #t15.==(null) ? self::Foo::staticSetter = 87 : #t15);
   }
   on core::NoSuchMethodError catch(no-exception-var) {
   }
diff --git a/pkg/front_end/testcases/rasta/static.dart.strong.expect b/pkg/front_end/testcases/rasta/static.dart.strong.expect
index 2996569..34a6ee1 100644
--- a/pkg/front_end/testcases/rasta/static.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/static.dart.strong.expect
@@ -182,7 +182,7 @@
 import "dart:core" as core;
 
 class Foo extends core::Object {
-  static const field core::int staticConstant = #C1;
+  static const field core::int staticConstant = 42;
   static field core::int staticField = 42;
   synthetic constructor •() → self::Foo
     : super core::Object::•()
@@ -198,12 +198,12 @@
 }
 static method main() → dynamic {
   try {
-    #C1;
-    self::use(#C1);
+    self::Foo::staticConstant;
+    self::use(self::Foo::staticConstant);
     self::Foo::staticField;
     self::use(self::Foo::staticField);
-    #C2;
-    self::use(#C2);
+    self::Foo::staticFunction;
+    self::use(self::Foo::staticFunction);
     self::Foo::staticGetter;
     self::use(self::Foo::staticGetter);
     invalid-expression "pkg/front_end/testcases/rasta/static.dart:28:9: Error: Getter not found: 'staticSetter'.
@@ -215,7 +215,7 @@
     invalid-expression "pkg/front_end/testcases/rasta/static.dart:31:9: Error: Setter not found: 'staticConstant'.
     Foo.staticConstant++;
         ^^^^^^^^^^^^^^";
-    self::use(let final core::int #t1 = #C1 in let final core::int #t2 = invalid-expression "pkg/front_end/testcases/rasta/static.dart:32:13: Error: Setter not found: 'staticConstant'.
+    self::use(let final core::int #t1 = self::Foo::staticConstant in let final core::int #t2 = invalid-expression "pkg/front_end/testcases/rasta/static.dart:32:13: Error: Setter not found: 'staticConstant'.
     use(Foo.staticConstant++);
             ^^^^^^^^^^^^^^" in #t1);
     self::Foo::staticField = self::Foo::staticField.{core::num::+}(1);
@@ -223,7 +223,7 @@
     invalid-expression "pkg/front_end/testcases/rasta/static.dart:35:9: Error: Setter not found: 'staticFunction'.
     Foo.staticFunction++;
         ^^^^^^^^^^^^^^";
-    self::use(let final () → dynamic #t5 = #C2 in let final dynamic #t6 = invalid-expression "pkg/front_end/testcases/rasta/static.dart:36:13: Error: Setter not found: 'staticFunction'.
+    self::use(let final () → dynamic #t5 = self::Foo::staticFunction in let final dynamic #t6 = invalid-expression "pkg/front_end/testcases/rasta/static.dart:36:13: Error: Setter not found: 'staticFunction'.
     use(Foo.staticFunction++);
             ^^^^^^^^^^^^^^" in #t5);
     invalid-expression "pkg/front_end/testcases/rasta/static.dart:37:9: Error: Setter not found: 'staticGetter'.
@@ -312,18 +312,18 @@
             ^^^^^^^^^^^^");
     self::Foo::staticSetter = 87;
     self::use(self::Foo::staticSetter = 87);
-    (#C1).{core::Object::==}(null) ?{core::int} invalid-expression "pkg/front_end/testcases/rasta/static.dart:75:9: Error: Setter not found: 'staticConstant'.
+    self::Foo::staticConstant.{core::Object::==}(null) ?{core::int} invalid-expression "pkg/front_end/testcases/rasta/static.dart:75:9: Error: Setter not found: 'staticConstant'.
     Foo.staticConstant ??= 87;
         ^^^^^^^^^^^^^^" : null;
-    self::use(let final core::int #t11 = #C1 in #t11.{core::Object::==}(null) ?{core::int} invalid-expression "pkg/front_end/testcases/rasta/static.dart:76:13: Error: Setter not found: 'staticConstant'.
+    self::use(let final core::int #t11 = self::Foo::staticConstant in #t11.{core::Object::==}(null) ?{core::int} invalid-expression "pkg/front_end/testcases/rasta/static.dart:76:13: Error: Setter not found: 'staticConstant'.
     use(Foo.staticConstant ??= 87);
             ^^^^^^^^^^^^^^" : #t11);
     self::Foo::staticField.{core::num::==}(null) ?{core::int} self::Foo::staticField = 87 : null;
     self::use(let final core::int #t12 = self::Foo::staticField in #t12.{core::num::==}(null) ?{core::int} self::Foo::staticField = 87 : #t12);
-    (#C2).{core::Object::==}(null) ?{core::Object} invalid-expression "pkg/front_end/testcases/rasta/static.dart:79:9: Error: Setter not found: 'staticFunction'.
+    self::Foo::staticFunction.{core::Object::==}(null) ?{core::Object} invalid-expression "pkg/front_end/testcases/rasta/static.dart:79:9: Error: Setter not found: 'staticFunction'.
     Foo.staticFunction ??= 87;
         ^^^^^^^^^^^^^^" : null;
-    self::use(let final () → dynamic #t13 = #C2 in #t13.{core::Object::==}(null) ?{core::Object} invalid-expression "pkg/front_end/testcases/rasta/static.dart:80:13: Error: Setter not found: 'staticFunction'.
+    self::use(let final () → dynamic #t13 = self::Foo::staticFunction in #t13.{core::Object::==}(null) ?{core::Object} invalid-expression "pkg/front_end/testcases/rasta/static.dart:80:13: Error: Setter not found: 'staticFunction'.
     use(Foo.staticFunction ??= 87);
             ^^^^^^^^^^^^^^" : #t13);
     self::Foo::staticGetter.{core::Object::==}(null) ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/static.dart:81:9: Error: Setter not found: 'staticGetter'.
diff --git a/pkg/front_end/testcases/rasta/static.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/static.dart.strong.transformed.expect
index 2996569..34a6ee1 100644
--- a/pkg/front_end/testcases/rasta/static.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/static.dart.strong.transformed.expect
@@ -182,7 +182,7 @@
 import "dart:core" as core;
 
 class Foo extends core::Object {
-  static const field core::int staticConstant = #C1;
+  static const field core::int staticConstant = 42;
   static field core::int staticField = 42;
   synthetic constructor •() → self::Foo
     : super core::Object::•()
@@ -198,12 +198,12 @@
 }
 static method main() → dynamic {
   try {
-    #C1;
-    self::use(#C1);
+    self::Foo::staticConstant;
+    self::use(self::Foo::staticConstant);
     self::Foo::staticField;
     self::use(self::Foo::staticField);
-    #C2;
-    self::use(#C2);
+    self::Foo::staticFunction;
+    self::use(self::Foo::staticFunction);
     self::Foo::staticGetter;
     self::use(self::Foo::staticGetter);
     invalid-expression "pkg/front_end/testcases/rasta/static.dart:28:9: Error: Getter not found: 'staticSetter'.
@@ -215,7 +215,7 @@
     invalid-expression "pkg/front_end/testcases/rasta/static.dart:31:9: Error: Setter not found: 'staticConstant'.
     Foo.staticConstant++;
         ^^^^^^^^^^^^^^";
-    self::use(let final core::int #t1 = #C1 in let final core::int #t2 = invalid-expression "pkg/front_end/testcases/rasta/static.dart:32:13: Error: Setter not found: 'staticConstant'.
+    self::use(let final core::int #t1 = self::Foo::staticConstant in let final core::int #t2 = invalid-expression "pkg/front_end/testcases/rasta/static.dart:32:13: Error: Setter not found: 'staticConstant'.
     use(Foo.staticConstant++);
             ^^^^^^^^^^^^^^" in #t1);
     self::Foo::staticField = self::Foo::staticField.{core::num::+}(1);
@@ -223,7 +223,7 @@
     invalid-expression "pkg/front_end/testcases/rasta/static.dart:35:9: Error: Setter not found: 'staticFunction'.
     Foo.staticFunction++;
         ^^^^^^^^^^^^^^";
-    self::use(let final () → dynamic #t5 = #C2 in let final dynamic #t6 = invalid-expression "pkg/front_end/testcases/rasta/static.dart:36:13: Error: Setter not found: 'staticFunction'.
+    self::use(let final () → dynamic #t5 = self::Foo::staticFunction in let final dynamic #t6 = invalid-expression "pkg/front_end/testcases/rasta/static.dart:36:13: Error: Setter not found: 'staticFunction'.
     use(Foo.staticFunction++);
             ^^^^^^^^^^^^^^" in #t5);
     invalid-expression "pkg/front_end/testcases/rasta/static.dart:37:9: Error: Setter not found: 'staticGetter'.
@@ -312,18 +312,18 @@
             ^^^^^^^^^^^^");
     self::Foo::staticSetter = 87;
     self::use(self::Foo::staticSetter = 87);
-    (#C1).{core::Object::==}(null) ?{core::int} invalid-expression "pkg/front_end/testcases/rasta/static.dart:75:9: Error: Setter not found: 'staticConstant'.
+    self::Foo::staticConstant.{core::Object::==}(null) ?{core::int} invalid-expression "pkg/front_end/testcases/rasta/static.dart:75:9: Error: Setter not found: 'staticConstant'.
     Foo.staticConstant ??= 87;
         ^^^^^^^^^^^^^^" : null;
-    self::use(let final core::int #t11 = #C1 in #t11.{core::Object::==}(null) ?{core::int} invalid-expression "pkg/front_end/testcases/rasta/static.dart:76:13: Error: Setter not found: 'staticConstant'.
+    self::use(let final core::int #t11 = self::Foo::staticConstant in #t11.{core::Object::==}(null) ?{core::int} invalid-expression "pkg/front_end/testcases/rasta/static.dart:76:13: Error: Setter not found: 'staticConstant'.
     use(Foo.staticConstant ??= 87);
             ^^^^^^^^^^^^^^" : #t11);
     self::Foo::staticField.{core::num::==}(null) ?{core::int} self::Foo::staticField = 87 : null;
     self::use(let final core::int #t12 = self::Foo::staticField in #t12.{core::num::==}(null) ?{core::int} self::Foo::staticField = 87 : #t12);
-    (#C2).{core::Object::==}(null) ?{core::Object} invalid-expression "pkg/front_end/testcases/rasta/static.dart:79:9: Error: Setter not found: 'staticFunction'.
+    self::Foo::staticFunction.{core::Object::==}(null) ?{core::Object} invalid-expression "pkg/front_end/testcases/rasta/static.dart:79:9: Error: Setter not found: 'staticFunction'.
     Foo.staticFunction ??= 87;
         ^^^^^^^^^^^^^^" : null;
-    self::use(let final () → dynamic #t13 = #C2 in #t13.{core::Object::==}(null) ?{core::Object} invalid-expression "pkg/front_end/testcases/rasta/static.dart:80:13: Error: Setter not found: 'staticFunction'.
+    self::use(let final () → dynamic #t13 = self::Foo::staticFunction in #t13.{core::Object::==}(null) ?{core::Object} invalid-expression "pkg/front_end/testcases/rasta/static.dart:80:13: Error: Setter not found: 'staticFunction'.
     use(Foo.staticFunction ??= 87);
             ^^^^^^^^^^^^^^" : #t13);
     self::Foo::staticGetter.{core::Object::==}(null) ?{dynamic} invalid-expression "pkg/front_end/testcases/rasta/static.dart:81:9: Error: Setter not found: 'staticGetter'.
diff --git a/pkg/front_end/testcases/rasta/supports_reflection.dart.legacy.expect b/pkg/front_end/testcases/rasta/supports_reflection.dart.legacy.expect
index 7951cdb..b7bfa56 100644
--- a/pkg/front_end/testcases/rasta/supports_reflection.dart.legacy.expect
+++ b/pkg/front_end/testcases/rasta/supports_reflection.dart.legacy.expect
@@ -3,5 +3,5 @@
 import "dart:core" as core;
 
 static method main() → dynamic {
-  core::print(#C2);
+  core::print(const core::bool::fromEnvironment("dart.library.mirrors"));
 }
diff --git a/pkg/front_end/testcases/rasta/supports_reflection.dart.legacy.transformed.expect b/pkg/front_end/testcases/rasta/supports_reflection.dart.legacy.transformed.expect
index 7951cdb..b7bfa56 100644
--- a/pkg/front_end/testcases/rasta/supports_reflection.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/rasta/supports_reflection.dart.legacy.transformed.expect
@@ -3,5 +3,5 @@
 import "dart:core" as core;
 
 static method main() → dynamic {
-  core::print(#C2);
+  core::print(const core::bool::fromEnvironment("dart.library.mirrors"));
 }
diff --git a/pkg/front_end/testcases/rasta/supports_reflection.dart.strong.expect b/pkg/front_end/testcases/rasta/supports_reflection.dart.strong.expect
index 7951cdb..b7bfa56 100644
--- a/pkg/front_end/testcases/rasta/supports_reflection.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/supports_reflection.dart.strong.expect
@@ -3,5 +3,5 @@
 import "dart:core" as core;
 
 static method main() → dynamic {
-  core::print(#C2);
+  core::print(const core::bool::fromEnvironment("dart.library.mirrors"));
 }
diff --git a/pkg/front_end/testcases/rasta/supports_reflection.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/supports_reflection.dart.strong.transformed.expect
index 7951cdb..b7bfa56 100644
--- a/pkg/front_end/testcases/rasta/supports_reflection.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/supports_reflection.dart.strong.transformed.expect
@@ -3,5 +3,5 @@
 import "dart:core" as core;
 
 static method main() → dynamic {
-  core::print(#C2);
+  core::print(const core::bool::fromEnvironment("dart.library.mirrors"));
 }
diff --git a/pkg/front_end/testcases/rasta/switch_execution_case_t02.dart.legacy.expect b/pkg/front_end/testcases/rasta/switch_execution_case_t02.dart.legacy.expect
index 95464df..3dec981 100644
--- a/pkg/front_end/testcases/rasta/switch_execution_case_t02.dart.legacy.expect
+++ b/pkg/front_end/testcases/rasta/switch_execution_case_t02.dart.legacy.expect
@@ -22,19 +22,19 @@
   #L1:
   switch(value) {
     #L2:
-    case #C1:
+    case 1:
       {
         result = 1;
         break #L1;
       }
     #L3:
-    case #C2:
+    case 2:
       {
         result = 2;
         throw new core::FallThroughError::_create("org-dartlang-testcase:///switch_execution_case_t02.dart", 35);
       }
     #L4:
-    case #C3:
+    case 3:
       {
         result = 3;
         throw new core::FallThroughError::_create("org-dartlang-testcase:///switch_execution_case_t02.dart", 36);
@@ -52,22 +52,22 @@
   #L6:
   switch(value) {
     #L7:
-    case #C1:
-    case #C2:
+    case 1:
+    case 2:
       {
         result = 1;
         throw new core::FallThroughError::_create("org-dartlang-testcase:///switch_execution_case_t02.dart", 46);
       }
     #L8:
-    case #C3:
-    case #C4:
+    case 3:
+    case 4:
       {
         result = 2;
         break #L6;
       }
     #L9:
-    case #C5:
-    case #C6:
+    case 5:
+    case 6:
     default:
       {}
   }
diff --git a/pkg/front_end/testcases/rasta/switch_execution_case_t02.dart.legacy.transformed.expect b/pkg/front_end/testcases/rasta/switch_execution_case_t02.dart.legacy.transformed.expect
index 95464df..3dec981 100644
--- a/pkg/front_end/testcases/rasta/switch_execution_case_t02.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/rasta/switch_execution_case_t02.dart.legacy.transformed.expect
@@ -22,19 +22,19 @@
   #L1:
   switch(value) {
     #L2:
-    case #C1:
+    case 1:
       {
         result = 1;
         break #L1;
       }
     #L3:
-    case #C2:
+    case 2:
       {
         result = 2;
         throw new core::FallThroughError::_create("org-dartlang-testcase:///switch_execution_case_t02.dart", 35);
       }
     #L4:
-    case #C3:
+    case 3:
       {
         result = 3;
         throw new core::FallThroughError::_create("org-dartlang-testcase:///switch_execution_case_t02.dart", 36);
@@ -52,22 +52,22 @@
   #L6:
   switch(value) {
     #L7:
-    case #C1:
-    case #C2:
+    case 1:
+    case 2:
       {
         result = 1;
         throw new core::FallThroughError::_create("org-dartlang-testcase:///switch_execution_case_t02.dart", 46);
       }
     #L8:
-    case #C3:
-    case #C4:
+    case 3:
+    case 4:
       {
         result = 2;
         break #L6;
       }
     #L9:
-    case #C5:
-    case #C6:
+    case 5:
+    case 6:
     default:
       {}
   }
diff --git a/pkg/front_end/testcases/rasta/switch_execution_case_t02.dart.strong.expect b/pkg/front_end/testcases/rasta/switch_execution_case_t02.dart.strong.expect
index 2306aca..4ad744c 100644
--- a/pkg/front_end/testcases/rasta/switch_execution_case_t02.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/switch_execution_case_t02.dart.strong.expect
@@ -22,19 +22,19 @@
   #L1:
   switch(value) {
     #L2:
-    case #C1:
+    case 1:
       {
         result = 1;
         break #L1;
       }
     #L3:
-    case #C2:
+    case 2:
       {
         result = 2;
         throw new core::FallThroughError::_create("org-dartlang-testcase:///switch_execution_case_t02.dart", 35);
       }
     #L4:
-    case #C3:
+    case 3:
       {
         result = 3;
         throw new core::FallThroughError::_create("org-dartlang-testcase:///switch_execution_case_t02.dart", 36);
@@ -52,22 +52,22 @@
   #L6:
   switch(value) {
     #L7:
-    case #C1:
-    case #C2:
+    case 1:
+    case 2:
       {
         result = 1;
         throw new core::FallThroughError::_create("org-dartlang-testcase:///switch_execution_case_t02.dart", 46);
       }
     #L8:
-    case #C3:
-    case #C4:
+    case 3:
+    case 4:
       {
         result = 2;
         break #L6;
       }
     #L9:
-    case #C5:
-    case #C6:
+    case 5:
+    case 6:
     default:
       {}
   }
diff --git a/pkg/front_end/testcases/rasta/switch_execution_case_t02.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/switch_execution_case_t02.dart.strong.transformed.expect
index 2306aca..4ad744c 100644
--- a/pkg/front_end/testcases/rasta/switch_execution_case_t02.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/switch_execution_case_t02.dart.strong.transformed.expect
@@ -22,19 +22,19 @@
   #L1:
   switch(value) {
     #L2:
-    case #C1:
+    case 1:
       {
         result = 1;
         break #L1;
       }
     #L3:
-    case #C2:
+    case 2:
       {
         result = 2;
         throw new core::FallThroughError::_create("org-dartlang-testcase:///switch_execution_case_t02.dart", 35);
       }
     #L4:
-    case #C3:
+    case 3:
       {
         result = 3;
         throw new core::FallThroughError::_create("org-dartlang-testcase:///switch_execution_case_t02.dart", 36);
@@ -52,22 +52,22 @@
   #L6:
   switch(value) {
     #L7:
-    case #C1:
-    case #C2:
+    case 1:
+    case 2:
       {
         result = 1;
         throw new core::FallThroughError::_create("org-dartlang-testcase:///switch_execution_case_t02.dart", 46);
       }
     #L8:
-    case #C3:
-    case #C4:
+    case 3:
+    case 4:
       {
         result = 2;
         break #L6;
       }
     #L9:
-    case #C5:
-    case #C6:
+    case 5:
+    case 6:
     default:
       {}
   }
diff --git a/pkg/front_end/testcases/rasta/switch_fall_through.dart.legacy.expect b/pkg/front_end/testcases/rasta/switch_fall_through.dart.legacy.expect
index cc7bf71..917a871 100644
--- a/pkg/front_end/testcases/rasta/switch_fall_through.dart.legacy.expect
+++ b/pkg/front_end/testcases/rasta/switch_fall_through.dart.legacy.expect
@@ -29,7 +29,7 @@
   #L1:
   switch(1) {
     #L2:
-    case #C1:
+    case 1:
       {
         {
           "No fall-through error needed.";
@@ -39,7 +39,7 @@
         throw new core::FallThroughError::_create("org-dartlang-testcase:///switch_fall_through.dart", 7);
       }
     #L3:
-    case #C2:
+    case 2:
       {
         {
           "Fall-through error needed.";
@@ -50,7 +50,7 @@
         throw new core::FallThroughError::_create("org-dartlang-testcase:///switch_fall_through.dart", 13);
       }
     #L4:
-    case #C3:
+    case 3:
       {
         try {
           "No fall-through error needed.";
@@ -61,7 +61,7 @@
         throw new core::FallThroughError::_create("org-dartlang-testcase:///switch_fall_through.dart", 20);
       }
     #L5:
-    case #C4:
+    case 4:
       {
         try {
           "No fall-through error needed.";
@@ -72,7 +72,7 @@
         throw new core::FallThroughError::_create("org-dartlang-testcase:///switch_fall_through.dart", 26);
       }
     #L6:
-    case #C5:
+    case 5:
       {
         try {
           "Fall-through error needed.";
@@ -82,7 +82,7 @@
         throw new core::FallThroughError::_create("org-dartlang-testcase:///switch_fall_through.dart", 31);
       }
     #L7:
-    case #C6:
+    case 10000:
       {
         "Should be last. No fall-through error, falling through allowed here.";
       }
diff --git a/pkg/front_end/testcases/rasta/switch_fall_through.dart.legacy.transformed.expect b/pkg/front_end/testcases/rasta/switch_fall_through.dart.legacy.transformed.expect
index cc7bf71..917a871 100644
--- a/pkg/front_end/testcases/rasta/switch_fall_through.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/rasta/switch_fall_through.dart.legacy.transformed.expect
@@ -29,7 +29,7 @@
   #L1:
   switch(1) {
     #L2:
-    case #C1:
+    case 1:
       {
         {
           "No fall-through error needed.";
@@ -39,7 +39,7 @@
         throw new core::FallThroughError::_create("org-dartlang-testcase:///switch_fall_through.dart", 7);
       }
     #L3:
-    case #C2:
+    case 2:
       {
         {
           "Fall-through error needed.";
@@ -50,7 +50,7 @@
         throw new core::FallThroughError::_create("org-dartlang-testcase:///switch_fall_through.dart", 13);
       }
     #L4:
-    case #C3:
+    case 3:
       {
         try {
           "No fall-through error needed.";
@@ -61,7 +61,7 @@
         throw new core::FallThroughError::_create("org-dartlang-testcase:///switch_fall_through.dart", 20);
       }
     #L5:
-    case #C4:
+    case 4:
       {
         try {
           "No fall-through error needed.";
@@ -72,7 +72,7 @@
         throw new core::FallThroughError::_create("org-dartlang-testcase:///switch_fall_through.dart", 26);
       }
     #L6:
-    case #C5:
+    case 5:
       {
         try {
           "Fall-through error needed.";
@@ -82,7 +82,7 @@
         throw new core::FallThroughError::_create("org-dartlang-testcase:///switch_fall_through.dart", 31);
       }
     #L7:
-    case #C6:
+    case 10000:
       {
         "Should be last. No fall-through error, falling through allowed here.";
       }
diff --git a/pkg/front_end/testcases/rasta/switch_fall_through.dart.strong.expect b/pkg/front_end/testcases/rasta/switch_fall_through.dart.strong.expect
index cc93faf..4370b01 100644
--- a/pkg/front_end/testcases/rasta/switch_fall_through.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/switch_fall_through.dart.strong.expect
@@ -29,7 +29,7 @@
   #L1:
   switch(1) {
     #L2:
-    case #C1:
+    case 1:
       {
         {
           "No fall-through error needed.";
@@ -39,7 +39,7 @@
         throw new core::FallThroughError::_create("org-dartlang-testcase:///switch_fall_through.dart", 7);
       }
     #L3:
-    case #C2:
+    case 2:
       {
         {
           "Fall-through error needed.";
@@ -50,7 +50,7 @@
         throw new core::FallThroughError::_create("org-dartlang-testcase:///switch_fall_through.dart", 13);
       }
     #L4:
-    case #C3:
+    case 3:
       {
         try {
           "No fall-through error needed.";
@@ -61,7 +61,7 @@
         throw new core::FallThroughError::_create("org-dartlang-testcase:///switch_fall_through.dart", 20);
       }
     #L5:
-    case #C4:
+    case 4:
       {
         try {
           "No fall-through error needed.";
@@ -72,7 +72,7 @@
         throw new core::FallThroughError::_create("org-dartlang-testcase:///switch_fall_through.dart", 26);
       }
     #L6:
-    case #C5:
+    case 5:
       {
         try {
           "Fall-through error needed.";
@@ -82,7 +82,7 @@
         throw new core::FallThroughError::_create("org-dartlang-testcase:///switch_fall_through.dart", 31);
       }
     #L7:
-    case #C6:
+    case 10000:
       {
         "Should be last. No fall-through error, falling through allowed here.";
       }
diff --git a/pkg/front_end/testcases/rasta/switch_fall_through.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/switch_fall_through.dart.strong.transformed.expect
index cc93faf..4370b01 100644
--- a/pkg/front_end/testcases/rasta/switch_fall_through.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/switch_fall_through.dart.strong.transformed.expect
@@ -29,7 +29,7 @@
   #L1:
   switch(1) {
     #L2:
-    case #C1:
+    case 1:
       {
         {
           "No fall-through error needed.";
@@ -39,7 +39,7 @@
         throw new core::FallThroughError::_create("org-dartlang-testcase:///switch_fall_through.dart", 7);
       }
     #L3:
-    case #C2:
+    case 2:
       {
         {
           "Fall-through error needed.";
@@ -50,7 +50,7 @@
         throw new core::FallThroughError::_create("org-dartlang-testcase:///switch_fall_through.dart", 13);
       }
     #L4:
-    case #C3:
+    case 3:
       {
         try {
           "No fall-through error needed.";
@@ -61,7 +61,7 @@
         throw new core::FallThroughError::_create("org-dartlang-testcase:///switch_fall_through.dart", 20);
       }
     #L5:
-    case #C4:
+    case 4:
       {
         try {
           "No fall-through error needed.";
@@ -72,7 +72,7 @@
         throw new core::FallThroughError::_create("org-dartlang-testcase:///switch_fall_through.dart", 26);
       }
     #L6:
-    case #C5:
+    case 5:
       {
         try {
           "Fall-through error needed.";
@@ -82,7 +82,7 @@
         throw new core::FallThroughError::_create("org-dartlang-testcase:///switch_fall_through.dart", 31);
       }
     #L7:
-    case #C6:
+    case 10000:
       {
         "Should be last. No fall-through error, falling through allowed here.";
       }
diff --git a/pkg/front_end/testcases/rasta/unresolved_for_in.dart.legacy.expect b/pkg/front_end/testcases/rasta/unresolved_for_in.dart.legacy.expect
index 6b8bc3b..ceda317 100644
--- a/pkg/front_end/testcases/rasta/unresolved_for_in.dart.legacy.expect
+++ b/pkg/front_end/testcases/rasta/unresolved_for_in.dart.legacy.expect
@@ -90,7 +90,7 @@
       core::print(this.key);
     }
     for (final dynamic #t2 in x) {
-      throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 34, #C2, core::List::unmodifiable<dynamic>(<dynamic>[#t2]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+      throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Fisk, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[#t2]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
       core::print(self::Fisk);
     }
     for (final dynamic #t3 in x) {
@@ -102,7 +102,7 @@
             ^^^^^^^^^^");
     }
     for (final dynamic #t4 in x) {
-      throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C5, 34, #C2, core::List::unmodifiable<dynamic>(<dynamic>[#t4]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+      throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#VoidFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[#t4]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
       core::print(() → void);
     }
     {
@@ -122,11 +122,11 @@
 static method main(dynamic arguments) → dynamic {
   new self::Fisk::•();
   for (final dynamic #t6 in arguments) {
-    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C6, 34, #C2, core::List::unmodifiable<dynamic>(<dynamic>[#t6]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
-    core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C6, 33, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))));
+    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#key, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[#t6]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+    core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#key, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
   }
   for (final dynamic #t7 in arguments) {
-    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 34, #C2, core::List::unmodifiable<dynamic>(<dynamic>[#t7]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Fisk, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[#t7]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
     core::print(self::Fisk);
   }
   for (final dynamic #t8 in arguments) {
@@ -138,7 +138,7 @@
           ^^^^^^^^^^");
   }
   for (final dynamic #t9 in arguments) {
-    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C5, 34, #C2, core::List::unmodifiable<dynamic>(<dynamic>[#t9]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#VoidFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[#t9]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
     core::print(() → void);
   }
   {
@@ -150,7 +150,7 @@
   for (1 in arguments) {
        ^";
       1;
-      core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C6, 33, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))));
+      core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#key, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
     }
   }
 }
diff --git a/pkg/front_end/testcases/rasta/unresolved_for_in.dart.legacy.transformed.expect b/pkg/front_end/testcases/rasta/unresolved_for_in.dart.legacy.transformed.expect
index 6b8bc3b..ceda317 100644
--- a/pkg/front_end/testcases/rasta/unresolved_for_in.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/rasta/unresolved_for_in.dart.legacy.transformed.expect
@@ -90,7 +90,7 @@
       core::print(this.key);
     }
     for (final dynamic #t2 in x) {
-      throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 34, #C2, core::List::unmodifiable<dynamic>(<dynamic>[#t2]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+      throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Fisk, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[#t2]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
       core::print(self::Fisk);
     }
     for (final dynamic #t3 in x) {
@@ -102,7 +102,7 @@
             ^^^^^^^^^^");
     }
     for (final dynamic #t4 in x) {
-      throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C5, 34, #C2, core::List::unmodifiable<dynamic>(<dynamic>[#t4]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+      throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#VoidFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[#t4]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
       core::print(() → void);
     }
     {
@@ -122,11 +122,11 @@
 static method main(dynamic arguments) → dynamic {
   new self::Fisk::•();
   for (final dynamic #t6 in arguments) {
-    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C6, 34, #C2, core::List::unmodifiable<dynamic>(<dynamic>[#t6]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
-    core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C6, 33, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))));
+    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#key, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[#t6]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+    core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#key, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
   }
   for (final dynamic #t7 in arguments) {
-    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 34, #C2, core::List::unmodifiable<dynamic>(<dynamic>[#t7]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Fisk, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[#t7]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
     core::print(self::Fisk);
   }
   for (final dynamic #t8 in arguments) {
@@ -138,7 +138,7 @@
           ^^^^^^^^^^");
   }
   for (final dynamic #t9 in arguments) {
-    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C5, 34, #C2, core::List::unmodifiable<dynamic>(<dynamic>[#t9]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#VoidFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[#t9]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
     core::print(() → void);
   }
   {
@@ -150,7 +150,7 @@
   for (1 in arguments) {
        ^";
       1;
-      core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C6, 33, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))));
+      core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#key, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
     }
   }
 }
diff --git a/pkg/front_end/testcases/redirecting_factory_const_inference.dart.legacy.expect b/pkg/front_end/testcases/redirecting_factory_const_inference.dart.legacy.expect
index 140d364..97f89e1 100644
--- a/pkg/front_end/testcases/redirecting_factory_const_inference.dart.legacy.expect
+++ b/pkg/front_end/testcases/redirecting_factory_const_inference.dart.legacy.expect
@@ -20,7 +20,7 @@
 }
 class B<T extends core::Object = dynamic> extends self::A<self::B::T> {
   constructor •() → self::B<self::B::T>
-    : super self::A::•(#C1)
+    : super self::A::•(const self::_Y::•<dynamic>())
     ;
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/redirecting_factory_const_inference.dart.legacy.transformed.expect b/pkg/front_end/testcases/redirecting_factory_const_inference.dart.legacy.transformed.expect
index 140d364..97f89e1 100644
--- a/pkg/front_end/testcases/redirecting_factory_const_inference.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/redirecting_factory_const_inference.dart.legacy.transformed.expect
@@ -20,7 +20,7 @@
 }
 class B<T extends core::Object = dynamic> extends self::A<self::B::T> {
   constructor •() → self::B<self::B::T>
-    : super self::A::•(#C1)
+    : super self::A::•(const self::_Y::•<dynamic>())
     ;
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/redirecting_factory_const_inference.dart.strong.expect b/pkg/front_end/testcases/redirecting_factory_const_inference.dart.strong.expect
index 5da7c06..0b4d35b 100644
--- a/pkg/front_end/testcases/redirecting_factory_const_inference.dart.strong.expect
+++ b/pkg/front_end/testcases/redirecting_factory_const_inference.dart.strong.expect
@@ -20,7 +20,7 @@
 }
 class B<T extends core::Object = dynamic> extends self::A<self::B::T> {
   constructor •() → self::B<self::B::T>
-    : super self::A::•(#C1)
+    : super self::A::•(const self::_Y::•<core::Null>())
     ;
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/redirecting_factory_const_inference.dart.strong.transformed.expect b/pkg/front_end/testcases/redirecting_factory_const_inference.dart.strong.transformed.expect
index e33ae9a..ee3ea48 100644
--- a/pkg/front_end/testcases/redirecting_factory_const_inference.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/redirecting_factory_const_inference.dart.strong.transformed.expect
@@ -20,7 +20,7 @@
 }
 class B<T extends core::Object = dynamic> extends self::A<self::B::T> {
   constructor •() → self::B<self::B::T>
-    : super self::A::•(#C1)
+    : super self::A::•(const self::_Y::•<core::Null>())
     ;
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/redirecting_factory_metadata.dart.legacy.expect b/pkg/front_end/testcases/redirecting_factory_metadata.dart.legacy.expect
index 9ec2d41..166f99e 100644
--- a/pkg/front_end/testcases/redirecting_factory_metadata.dart.legacy.expect
+++ b/pkg/front_end/testcases/redirecting_factory_metadata.dart.legacy.expect
@@ -7,11 +7,11 @@
   constructor named(dynamic p) → self::Foo
     : super core::Object::•()
     ;
-  @#C1
-  static factory •(@#C2 @#C3 dynamic p) → self::Foo
+  @self::forFactoryItself
+  static factory •(@self::forParameter @self::anotherForParameter dynamic p) → self::Foo
     let dynamic #redirecting_factory = self::Foo::named in invalid-expression;
 }
-static const field dynamic forParameter = #C2;
-static const field dynamic forFactoryItself = #C1;
-static const field dynamic anotherForParameter = #C3;
+static const field dynamic forParameter = 1;
+static const field dynamic forFactoryItself = 2;
+static const field dynamic anotherForParameter = 3;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/redirecting_factory_metadata.dart.legacy.transformed.expect b/pkg/front_end/testcases/redirecting_factory_metadata.dart.legacy.transformed.expect
index 9ec2d41..166f99e 100644
--- a/pkg/front_end/testcases/redirecting_factory_metadata.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/redirecting_factory_metadata.dart.legacy.transformed.expect
@@ -7,11 +7,11 @@
   constructor named(dynamic p) → self::Foo
     : super core::Object::•()
     ;
-  @#C1
-  static factory •(@#C2 @#C3 dynamic p) → self::Foo
+  @self::forFactoryItself
+  static factory •(@self::forParameter @self::anotherForParameter dynamic p) → self::Foo
     let dynamic #redirecting_factory = self::Foo::named in invalid-expression;
 }
-static const field dynamic forParameter = #C2;
-static const field dynamic forFactoryItself = #C1;
-static const field dynamic anotherForParameter = #C3;
+static const field dynamic forParameter = 1;
+static const field dynamic forFactoryItself = 2;
+static const field dynamic anotherForParameter = 3;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/redirecting_factory_metadata.dart.strong.expect b/pkg/front_end/testcases/redirecting_factory_metadata.dart.strong.expect
index 7a35b33..f6f89a4 100644
--- a/pkg/front_end/testcases/redirecting_factory_metadata.dart.strong.expect
+++ b/pkg/front_end/testcases/redirecting_factory_metadata.dart.strong.expect
@@ -7,11 +7,11 @@
   constructor named(dynamic p) → self::Foo
     : super core::Object::•()
     ;
-  @#C1
-  static factory •(@#C2 @#C3 dynamic p) → self::Foo
+  @self::forFactoryItself
+  static factory •(@self::forParameter @self::anotherForParameter dynamic p) → self::Foo
     let dynamic #redirecting_factory = self::Foo::named in invalid-expression;
 }
-static const field core::int forParameter = #C2;
-static const field core::int forFactoryItself = #C1;
-static const field core::int anotherForParameter = #C3;
+static const field core::int forParameter = 1;
+static const field core::int forFactoryItself = 2;
+static const field core::int anotherForParameter = 3;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/redirecting_factory_metadata.dart.strong.transformed.expect b/pkg/front_end/testcases/redirecting_factory_metadata.dart.strong.transformed.expect
index de39cb7..a4f3bab 100644
--- a/pkg/front_end/testcases/redirecting_factory_metadata.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/redirecting_factory_metadata.dart.strong.transformed.expect
@@ -7,11 +7,11 @@
   constructor named(dynamic p) → self::Foo
     : super core::Object::•()
     ;
-  @#C1
-  static factory •(@#C2 @#C3 dynamic p) → self::Foo
+  @self::forFactoryItself
+  static factory •(@self::forParameter @self::anotherForParameter dynamic p) → self::Foo
     let<BottomType> #redirecting_factory = self::Foo::named in invalid-expression;
 }
-static const field core::int forParameter = #C2;
-static const field core::int forFactoryItself = #C1;
-static const field core::int anotherForParameter = #C3;
+static const field core::int forParameter = 1;
+static const field core::int forFactoryItself = 2;
+static const field core::int anotherForParameter = 3;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/redirecting_initializer_arguments_assignable_test.dart.legacy.expect b/pkg/front_end/testcases/redirecting_initializer_arguments_assignable_test.dart.legacy.expect
index 23e1d9d..f3bfb14 100644
--- a/pkg/front_end/testcases/redirecting_initializer_arguments_assignable_test.dart.legacy.expect
+++ b/pkg/front_end/testcases/redirecting_initializer_arguments_assignable_test.dart.legacy.expect
@@ -15,7 +15,7 @@
   constructor fromT(self::Foo::T _init) → self::Foo<self::Foo::T>
     : this self::Foo::_internal(x: _init)
     ;
-  constructor _internal({self::Foo::T x = #C1}) → self::Foo<self::Foo::T>
+  constructor _internal({self::Foo::T x = null}) → self::Foo<self::Foo::T>
     : self::Foo::x = x, super core::Object::•()
     ;
 }
diff --git a/pkg/front_end/testcases/redirecting_initializer_arguments_assignable_test.dart.legacy.transformed.expect b/pkg/front_end/testcases/redirecting_initializer_arguments_assignable_test.dart.legacy.transformed.expect
index 23e1d9d..f3bfb14 100644
--- a/pkg/front_end/testcases/redirecting_initializer_arguments_assignable_test.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/redirecting_initializer_arguments_assignable_test.dart.legacy.transformed.expect
@@ -15,7 +15,7 @@
   constructor fromT(self::Foo::T _init) → self::Foo<self::Foo::T>
     : this self::Foo::_internal(x: _init)
     ;
-  constructor _internal({self::Foo::T x = #C1}) → self::Foo<self::Foo::T>
+  constructor _internal({self::Foo::T x = null}) → self::Foo<self::Foo::T>
     : self::Foo::x = x, super core::Object::•()
     ;
 }
diff --git a/pkg/front_end/testcases/redirecting_initializer_arguments_assignable_test.dart.strong.expect b/pkg/front_end/testcases/redirecting_initializer_arguments_assignable_test.dart.strong.expect
index 6c6faed..224bb84 100644
--- a/pkg/front_end/testcases/redirecting_initializer_arguments_assignable_test.dart.strong.expect
+++ b/pkg/front_end/testcases/redirecting_initializer_arguments_assignable_test.dart.strong.expect
@@ -15,7 +15,7 @@
   constructor fromT(self::Foo::T _init) → self::Foo<self::Foo::T>
     : this self::Foo::_internal(x: _init)
     ;
-  constructor _internal({self::Foo::T x = #C1}) → self::Foo<self::Foo::T>
+  constructor _internal({self::Foo::T x = null}) → self::Foo<self::Foo::T>
     : self::Foo::x = x, super core::Object::•()
     ;
 }
diff --git a/pkg/front_end/testcases/redirecting_initializer_arguments_assignable_test.dart.strong.transformed.expect b/pkg/front_end/testcases/redirecting_initializer_arguments_assignable_test.dart.strong.transformed.expect
index 6c6faed..224bb84 100644
--- a/pkg/front_end/testcases/redirecting_initializer_arguments_assignable_test.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/redirecting_initializer_arguments_assignable_test.dart.strong.transformed.expect
@@ -15,7 +15,7 @@
   constructor fromT(self::Foo::T _init) → self::Foo<self::Foo::T>
     : this self::Foo::_internal(x: _init)
     ;
-  constructor _internal({self::Foo::T x = #C1}) → self::Foo<self::Foo::T>
+  constructor _internal({self::Foo::T x = null}) → self::Foo<self::Foo::T>
     : self::Foo::x = x, super core::Object::•()
     ;
 }
diff --git a/pkg/front_end/testcases/redirecting_initializer_arguments_test.dart.legacy.expect b/pkg/front_end/testcases/redirecting_initializer_arguments_test.dart.legacy.expect
index 17c8e20..b36d718 100644
--- a/pkg/front_end/testcases/redirecting_initializer_arguments_test.dart.legacy.expect
+++ b/pkg/front_end/testcases/redirecting_initializer_arguments_test.dart.legacy.expect
@@ -7,7 +7,7 @@
   constructor from(core::String _init) → self::Foo<self::Foo::T>
     : this self::Foo::_internal(x: _init)
     ;
-  constructor _internal({self::Foo::T x = #C1}) → self::Foo<self::Foo::T>
+  constructor _internal({self::Foo::T x = null}) → self::Foo<self::Foo::T>
     : self::Foo::x = x, super core::Object::•()
     ;
 }
diff --git a/pkg/front_end/testcases/redirecting_initializer_arguments_test.dart.legacy.transformed.expect b/pkg/front_end/testcases/redirecting_initializer_arguments_test.dart.legacy.transformed.expect
index 17c8e20..b36d718 100644
--- a/pkg/front_end/testcases/redirecting_initializer_arguments_test.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/redirecting_initializer_arguments_test.dart.legacy.transformed.expect
@@ -7,7 +7,7 @@
   constructor from(core::String _init) → self::Foo<self::Foo::T>
     : this self::Foo::_internal(x: _init)
     ;
-  constructor _internal({self::Foo::T x = #C1}) → self::Foo<self::Foo::T>
+  constructor _internal({self::Foo::T x = null}) → self::Foo<self::Foo::T>
     : self::Foo::x = x, super core::Object::•()
     ;
 }
diff --git a/pkg/front_end/testcases/redirecting_initializer_arguments_test.dart.strong.expect b/pkg/front_end/testcases/redirecting_initializer_arguments_test.dart.strong.expect
index d35c3bc..2856067 100644
--- a/pkg/front_end/testcases/redirecting_initializer_arguments_test.dart.strong.expect
+++ b/pkg/front_end/testcases/redirecting_initializer_arguments_test.dart.strong.expect
@@ -18,7 +18,7 @@
   Foo.from(String _init) : this._internal(x: _init);
                                              ^" in _init as{TypeError} <BottomType>)
     ;
-  constructor _internal({self::Foo::T x = #C1}) → self::Foo<self::Foo::T>
+  constructor _internal({self::Foo::T x = null}) → self::Foo<self::Foo::T>
     : self::Foo::x = x, super core::Object::•()
     ;
 }
diff --git a/pkg/front_end/testcases/redirecting_initializer_arguments_test.dart.strong.transformed.expect b/pkg/front_end/testcases/redirecting_initializer_arguments_test.dart.strong.transformed.expect
index d35c3bc..2856067 100644
--- a/pkg/front_end/testcases/redirecting_initializer_arguments_test.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/redirecting_initializer_arguments_test.dart.strong.transformed.expect
@@ -18,7 +18,7 @@
   Foo.from(String _init) : this._internal(x: _init);
                                              ^" in _init as{TypeError} <BottomType>)
     ;
-  constructor _internal({self::Foo::T x = #C1}) → self::Foo<self::Foo::T>
+  constructor _internal({self::Foo::T x = null}) → self::Foo<self::Foo::T>
     : self::Foo::x = x, super core::Object::•()
     ;
 }
diff --git a/pkg/front_end/testcases/redirection_type_arguments.dart.legacy.expect b/pkg/front_end/testcases/redirection_type_arguments.dart.legacy.expect
index 99686c3..2fff34d 100644
--- a/pkg/front_end/testcases/redirection_type_arguments.dart.legacy.expect
+++ b/pkg/front_end/testcases/redirection_type_arguments.dart.legacy.expect
@@ -21,5 +21,5 @@
     return "${self::B::T}";
 }
 static method main() → void {
-  exp::Expect::equals("${#C1}", "String");
+  exp::Expect::equals("${const self::B::•<core::String>()}", "String");
 }
diff --git a/pkg/front_end/testcases/redirection_type_arguments.dart.legacy.transformed.expect b/pkg/front_end/testcases/redirection_type_arguments.dart.legacy.transformed.expect
index 99686c3..2fff34d 100644
--- a/pkg/front_end/testcases/redirection_type_arguments.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/redirection_type_arguments.dart.legacy.transformed.expect
@@ -21,5 +21,5 @@
     return "${self::B::T}";
 }
 static method main() → void {
-  exp::Expect::equals("${#C1}", "String");
+  exp::Expect::equals("${const self::B::•<core::String>()}", "String");
 }
diff --git a/pkg/front_end/testcases/redirection_type_arguments.dart.strong.expect b/pkg/front_end/testcases/redirection_type_arguments.dart.strong.expect
index 02a38a4..0dc1e9e 100644
--- a/pkg/front_end/testcases/redirection_type_arguments.dart.strong.expect
+++ b/pkg/front_end/testcases/redirection_type_arguments.dart.strong.expect
@@ -21,5 +21,5 @@
     return "${self::B::T}";
 }
 static method main() → void {
-  exp::Expect::equals("${#C1}", "String");
+  exp::Expect::equals("${const self::B::•<core::String>()}", "String");
 }
diff --git a/pkg/front_end/testcases/redirection_type_arguments.dart.strong.transformed.expect b/pkg/front_end/testcases/redirection_type_arguments.dart.strong.transformed.expect
index 3ea55ee..d3d9485 100644
--- a/pkg/front_end/testcases/redirection_type_arguments.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/redirection_type_arguments.dart.strong.transformed.expect
@@ -21,5 +21,5 @@
     return "${self::B::T}";
 }
 static method main() → void {
-  exp::Expect::equals("${#C1}", "String");
+  exp::Expect::equals("${const self::B::•<core::String>()}", "String");
 }
diff --git a/pkg/front_end/testcases/regress/issue_29976.dart.legacy.expect b/pkg/front_end/testcases/regress/issue_29976.dart.legacy.expect
index 90f7385..467f45c 100644
--- a/pkg/front_end/testcases/regress/issue_29976.dart.legacy.expect
+++ b/pkg/front_end/testcases/regress/issue_29976.dart.legacy.expect
@@ -43,5 +43,5 @@
 static get x() → dynamic
   return null;
 static method main() → void {
-  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 32, #C2, core::List::unmodifiable<dynamic>(<dynamic>["x${self::x.*("'")}"]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#f, 32, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>["x${self::x.*("'")}"]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
diff --git a/pkg/front_end/testcases/regress/issue_29976.dart.legacy.transformed.expect b/pkg/front_end/testcases/regress/issue_29976.dart.legacy.transformed.expect
index 90f7385..467f45c 100644
--- a/pkg/front_end/testcases/regress/issue_29976.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_29976.dart.legacy.transformed.expect
@@ -43,5 +43,5 @@
 static get x() → dynamic
   return null;
 static method main() → void {
-  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 32, #C2, core::List::unmodifiable<dynamic>(<dynamic>["x${self::x.*("'")}"]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#f, 32, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>["x${self::x.*("'")}"]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
diff --git a/pkg/front_end/testcases/regress/issue_29982.dart.legacy.expect b/pkg/front_end/testcases/regress/issue_29982.dart.legacy.expect
index e7b201a..e7b79bd 100644
--- a/pkg/front_end/testcases/regress/issue_29982.dart.legacy.expect
+++ b/pkg/front_end/testcases/regress/issue_29982.dart.legacy.expect
@@ -42,5 +42,5 @@
 
 static method main() → dynamic {
   dynamic eh = <dynamic, dynamic>{"\u0233h": "\u0233h"};
-  core::print("${eh.[](throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 33, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))))}");
+  core::print("${eh.[](throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#éh, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))))}");
 }
diff --git a/pkg/front_end/testcases/regress/issue_29982.dart.legacy.transformed.expect b/pkg/front_end/testcases/regress/issue_29982.dart.legacy.transformed.expect
index e7b201a..e7b79bd 100644
--- a/pkg/front_end/testcases/regress/issue_29982.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_29982.dart.legacy.transformed.expect
@@ -42,5 +42,5 @@
 
 static method main() → dynamic {
   dynamic eh = <dynamic, dynamic>{"\u0233h": "\u0233h"};
-  core::print("${eh.[](throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 33, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))))}");
+  core::print("${eh.[](throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#éh, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))))}");
 }
diff --git a/pkg/front_end/testcases/regress/issue_29984.dart.legacy.expect b/pkg/front_end/testcases/regress/issue_29984.dart.legacy.expect
index 334c4e9..bbf49cd 100644
--- a/pkg/front_end/testcases/regress/issue_29984.dart.legacy.expect
+++ b/pkg/front_end/testcases/regress/issue_29984.dart.legacy.expect
@@ -19,7 +19,7 @@
 static method bad() → dynamic {
   for (core::int i = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/regress/issue_29984.dart:6:12: Error: Can't declare 'i' because it was already used in this scope.
   for (int i = i;; false) {}
-           ^" in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 33, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))); ; false) {
+           ^" in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#i, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))); ; false) {
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/regress/issue_29984.dart.legacy.transformed.expect b/pkg/front_end/testcases/regress/issue_29984.dart.legacy.transformed.expect
index 334c4e9..bbf49cd 100644
--- a/pkg/front_end/testcases/regress/issue_29984.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_29984.dart.legacy.transformed.expect
@@ -19,7 +19,7 @@
 static method bad() → dynamic {
   for (core::int i = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/regress/issue_29984.dart:6:12: Error: Can't declare 'i' because it was already used in this scope.
   for (int i = i;; false) {}
-           ^" in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 33, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))); ; false) {
+           ^" in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#i, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))); ; false) {
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/regress/issue_29985.dart.legacy.expect b/pkg/front_end/testcases/regress/issue_29985.dart.legacy.expect
index 7313d85..f483f0394 100644
--- a/pkg/front_end/testcases/regress/issue_29985.dart.legacy.expect
+++ b/pkg/front_end/testcases/regress/issue_29985.dart.legacy.expect
@@ -19,6 +19,6 @@
 import "dart:core" as core;
 
 static method bad() → dynamic {
-  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 33, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#🔛, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/regress/issue_29985.dart.legacy.transformed.expect b/pkg/front_end/testcases/regress/issue_29985.dart.legacy.transformed.expect
index 7313d85..f483f0394 100644
--- a/pkg/front_end/testcases/regress/issue_29985.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_29985.dart.legacy.transformed.expect
@@ -19,6 +19,6 @@
 import "dart:core" as core;
 
 static method bad() → dynamic {
-  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 33, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#🔛, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/regress/issue_30838.dart.legacy.expect b/pkg/front_end/testcases/regress/issue_30838.dart.legacy.expect
index ef3ff61..01ce7fe 100644
--- a/pkg/front_end/testcases/regress/issue_30838.dart.legacy.expect
+++ b/pkg/front_end/testcases/regress/issue_30838.dart.legacy.expect
@@ -15,7 +15,7 @@
 static method foo<T extends core::Object = dynamic>(self::foo::T x) → core::int
   return 3;
 static method bar() → <T extends core::Object = dynamic>(T) → core::int
-  return #C1;
+  return self::foo;
 static method test1() → void {
   self::bar().call<core::String>("hello");
 }
diff --git a/pkg/front_end/testcases/regress/issue_30838.dart.legacy.transformed.expect b/pkg/front_end/testcases/regress/issue_30838.dart.legacy.transformed.expect
index ef3ff61..01ce7fe 100644
--- a/pkg/front_end/testcases/regress/issue_30838.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_30838.dart.legacy.transformed.expect
@@ -15,7 +15,7 @@
 static method foo<T extends core::Object = dynamic>(self::foo::T x) → core::int
   return 3;
 static method bar() → <T extends core::Object = dynamic>(T) → core::int
-  return #C1;
+  return self::foo;
 static method test1() → void {
   self::bar().call<core::String>("hello");
 }
diff --git a/pkg/front_end/testcases/regress/issue_30838.dart.strong.expect b/pkg/front_end/testcases/regress/issue_30838.dart.strong.expect
index f56be9b..a856d1f 100644
--- a/pkg/front_end/testcases/regress/issue_30838.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_30838.dart.strong.expect
@@ -15,7 +15,7 @@
 static method foo<T extends core::Object = dynamic>(self::foo::T x) → core::int
   return 3;
 static method bar() → <T extends core::Object = dynamic>(T) → core::int
-  return #C1;
+  return self::foo;
 static method test1() → void {
   self::bar().call<core::String>("hello");
 }
diff --git a/pkg/front_end/testcases/regress/issue_30838.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_30838.dart.strong.transformed.expect
index f56be9b..a856d1f 100644
--- a/pkg/front_end/testcases/regress/issue_30838.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_30838.dart.strong.transformed.expect
@@ -15,7 +15,7 @@
 static method foo<T extends core::Object = dynamic>(self::foo::T x) → core::int
   return 3;
 static method bar() → <T extends core::Object = dynamic>(T) → core::int
-  return #C1;
+  return self::foo;
 static method test1() → void {
   self::bar().call<core::String>("hello");
 }
diff --git a/pkg/front_end/testcases/regress/issue_31188.dart.legacy.expect b/pkg/front_end/testcases/regress/issue_31188.dart.legacy.expect
index 6a41f00..ee42a18 100644
--- a/pkg/front_end/testcases/regress/issue_31188.dart.legacy.expect
+++ b/pkg/front_end/testcases/regress/issue_31188.dart.legacy.expect
@@ -25,6 +25,6 @@
 import self as self;
 import "dart:core" as core;
 
-static field invalid-type T = core::Map<dynamic, dynamic>.<(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 33, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))));
+static field invalid-type T = core::Map<dynamic, dynamic>.<(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#A, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
 static field invalid-type B;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/regress/issue_31188.dart.legacy.transformed.expect b/pkg/front_end/testcases/regress/issue_31188.dart.legacy.transformed.expect
index 6a41f00..ee42a18 100644
--- a/pkg/front_end/testcases/regress/issue_31188.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_31188.dart.legacy.transformed.expect
@@ -25,6 +25,6 @@
 import self as self;
 import "dart:core" as core;
 
-static field invalid-type T = core::Map<dynamic, dynamic>.<(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 33, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))));
+static field invalid-type T = core::Map<dynamic, dynamic>.<(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#A, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
 static field invalid-type B;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/regress/issue_31299.dart.legacy.expect b/pkg/front_end/testcases/regress/issue_31299.dart.legacy.expect
index ad94046..00cb07e 100644
--- a/pkg/front_end/testcases/regress/issue_31299.dart.legacy.expect
+++ b/pkg/front_end/testcases/regress/issue_31299.dart.legacy.expect
@@ -28,6 +28,6 @@
   new self::A::•().foo();
   new self::A::•().foo(1, 2);
   new self::A::foo();
-  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 32, #C2, core::List::unmodifiable<dynamic>(<dynamic>[1, 2]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#foo, 32, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[1, 2]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/regress/issue_31299.dart.legacy.transformed.expect b/pkg/front_end/testcases/regress/issue_31299.dart.legacy.transformed.expect
index ad94046..00cb07e 100644
--- a/pkg/front_end/testcases/regress/issue_31299.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_31299.dart.legacy.transformed.expect
@@ -28,6 +28,6 @@
   new self::A::•().foo();
   new self::A::•().foo(1, 2);
   new self::A::foo();
-  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 32, #C2, core::List::unmodifiable<dynamic>(<dynamic>[1, 2]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#foo, 32, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[1, 2]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/regress/issue_31846.dart.legacy.expect b/pkg/front_end/testcases/regress/issue_31846.dart.legacy.expect
index 99325d5..f71d395 100644
--- a/pkg/front_end/testcases/regress/issue_31846.dart.legacy.expect
+++ b/pkg/front_end/testcases/regress/issue_31846.dart.legacy.expect
@@ -3,7 +3,7 @@
 import "dart:core" as core;
 
 static method main() → dynamic {
-  core::print((#C1) is () → dynamic);
+  core::print(self::main is () → dynamic);
   core::print((<T extends core::Object = dynamic>(T x) → dynamic => x).runtimeType);
   core::print((<T extends core::num = dynamic>(T x) → dynamic => x).runtimeType);
   core::print((<T extends core::Comparable<T> = dynamic>(T x) → dynamic => x).runtimeType);
diff --git a/pkg/front_end/testcases/regress/issue_31846.dart.legacy.transformed.expect b/pkg/front_end/testcases/regress/issue_31846.dart.legacy.transformed.expect
index 99325d5..f71d395 100644
--- a/pkg/front_end/testcases/regress/issue_31846.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_31846.dart.legacy.transformed.expect
@@ -3,7 +3,7 @@
 import "dart:core" as core;
 
 static method main() → dynamic {
-  core::print((#C1) is () → dynamic);
+  core::print(self::main is () → dynamic);
   core::print((<T extends core::Object = dynamic>(T x) → dynamic => x).runtimeType);
   core::print((<T extends core::num = dynamic>(T x) → dynamic => x).runtimeType);
   core::print((<T extends core::Comparable<T> = dynamic>(T x) → dynamic => x).runtimeType);
diff --git a/pkg/front_end/testcases/regress/issue_31846.dart.strong.expect b/pkg/front_end/testcases/regress/issue_31846.dart.strong.expect
index 0542ebd..b07df45 100644
--- a/pkg/front_end/testcases/regress/issue_31846.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_31846.dart.strong.expect
@@ -3,7 +3,7 @@
 import "dart:core" as core;
 
 static method main() → dynamic {
-  core::print((#C1) is () → dynamic);
+  core::print(self::main is () → dynamic);
   core::print((<T extends core::Object = dynamic>(T x) → T => x).{core::Object::runtimeType});
   core::print((<T extends core::num = core::num>(T x) → T => x).{core::Object::runtimeType});
   core::print((<T extends core::Comparable<T> = core::Comparable<dynamic>>(T x) → T => x).{core::Object::runtimeType});
diff --git a/pkg/front_end/testcases/regress/issue_31846.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_31846.dart.strong.transformed.expect
index 0542ebd..b07df45 100644
--- a/pkg/front_end/testcases/regress/issue_31846.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_31846.dart.strong.transformed.expect
@@ -3,7 +3,7 @@
 import "dart:core" as core;
 
 static method main() → dynamic {
-  core::print((#C1) is () → dynamic);
+  core::print(self::main is () → dynamic);
   core::print((<T extends core::Object = dynamic>(T x) → T => x).{core::Object::runtimeType});
   core::print((<T extends core::num = core::num>(T x) → T => x).{core::Object::runtimeType});
   core::print((<T extends core::Comparable<T> = core::Comparable<dynamic>>(T x) → T => x).{core::Object::runtimeType});
diff --git a/pkg/front_end/testcases/regress/issue_32660.dart.legacy.expect b/pkg/front_end/testcases/regress/issue_32660.dart.legacy.expect
index 97a1d07..46f8dc2 100644
--- a/pkg/front_end/testcases/regress/issue_32660.dart.legacy.expect
+++ b/pkg/front_end/testcases/regress/issue_32660.dart.legacy.expect
@@ -13,7 +13,7 @@
   synthetic constructor •() → self::B
     : super core::Object::•()
     ;
-  method foo(core::int x, {core::int y = #C1}) → dynamic
+  method foo(core::int x, {core::int y = null}) → dynamic
     return y;
 }
 class C extends self::A implements self::B {
@@ -36,7 +36,7 @@
   synthetic constructor •() → self::E
     : super self::D::•()
     ;
-  abstract method foo(core::int x, {core::int y = #C1}) → dynamic;
+  abstract method foo(core::int x, {core::int y = null}) → dynamic;
   method noSuchMethod(dynamic i) → dynamic {
     core::print(i.namedArguments);
     return 42;
diff --git a/pkg/front_end/testcases/regress/issue_32660.dart.legacy.transformed.expect b/pkg/front_end/testcases/regress/issue_32660.dart.legacy.transformed.expect
index 97a1d07..46f8dc2 100644
--- a/pkg/front_end/testcases/regress/issue_32660.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_32660.dart.legacy.transformed.expect
@@ -13,7 +13,7 @@
   synthetic constructor •() → self::B
     : super core::Object::•()
     ;
-  method foo(core::int x, {core::int y = #C1}) → dynamic
+  method foo(core::int x, {core::int y = null}) → dynamic
     return y;
 }
 class C extends self::A implements self::B {
@@ -36,7 +36,7 @@
   synthetic constructor •() → self::E
     : super self::D::•()
     ;
-  abstract method foo(core::int x, {core::int y = #C1}) → dynamic;
+  abstract method foo(core::int x, {core::int y = null}) → dynamic;
   method noSuchMethod(dynamic i) → dynamic {
     core::print(i.namedArguments);
     return 42;
diff --git a/pkg/front_end/testcases/regress/issue_32660.dart.strong.expect b/pkg/front_end/testcases/regress/issue_32660.dart.strong.expect
index bf05dff..910fc65 100644
--- a/pkg/front_end/testcases/regress/issue_32660.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_32660.dart.strong.expect
@@ -36,7 +36,7 @@
   synthetic constructor •() → self::B
     : super core::Object::•()
     ;
-  method foo(core::int x, {core::int y = #C1}) → dynamic
+  method foo(core::int x, {core::int y = null}) → dynamic
     return y;
 }
 class C extends self::A implements self::B {
@@ -47,7 +47,7 @@
     core::print("No such method!");
     return 42;
   }
-  abstract forwarding-stub method foo(core::int x, {core::int y = #C1}) → dynamic;
+  abstract forwarding-stub method foo(core::int x, {core::int y = null}) → dynamic;
 }
 class D extends core::Object {
   synthetic constructor •() → self::D
@@ -60,7 +60,7 @@
   synthetic constructor •() → self::E
     : super self::D::•()
     ;
-  abstract method foo(core::int x, {core::int y = #C1}) → dynamic;
+  abstract method foo(core::int x, {core::int y = null}) → dynamic;
   method noSuchMethod(core::Invocation i) → dynamic {
     core::print(i.{core::Invocation::namedArguments});
     return 42;
diff --git a/pkg/front_end/testcases/regress/issue_32660.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_32660.dart.strong.transformed.expect
index bf05dff..910fc65 100644
--- a/pkg/front_end/testcases/regress/issue_32660.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_32660.dart.strong.transformed.expect
@@ -36,7 +36,7 @@
   synthetic constructor •() → self::B
     : super core::Object::•()
     ;
-  method foo(core::int x, {core::int y = #C1}) → dynamic
+  method foo(core::int x, {core::int y = null}) → dynamic
     return y;
 }
 class C extends self::A implements self::B {
@@ -47,7 +47,7 @@
     core::print("No such method!");
     return 42;
   }
-  abstract forwarding-stub method foo(core::int x, {core::int y = #C1}) → dynamic;
+  abstract forwarding-stub method foo(core::int x, {core::int y = null}) → dynamic;
 }
 class D extends core::Object {
   synthetic constructor •() → self::D
@@ -60,7 +60,7 @@
   synthetic constructor •() → self::E
     : super self::D::•()
     ;
-  abstract method foo(core::int x, {core::int y = #C1}) → dynamic;
+  abstract method foo(core::int x, {core::int y = null}) → dynamic;
   method noSuchMethod(core::Invocation i) → dynamic {
     core::print(i.{core::Invocation::namedArguments});
     return 42;
diff --git a/pkg/front_end/testcases/regress/issue_32972.dart.legacy.expect b/pkg/front_end/testcases/regress/issue_32972.dart.legacy.expect
index 2982517..d112e29 100644
--- a/pkg/front_end/testcases/regress/issue_32972.dart.legacy.expect
+++ b/pkg/front_end/testcases/regress/issue_32972.dart.legacy.expect
@@ -46,13 +46,13 @@
   core::print(i);
 }
 static method main() → dynamic {
-  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 32, core::List::unmodifiable<dynamic>(<core::Type>[core::String, core::String]), core::List::unmodifiable<dynamic>(<dynamic>["hello world"]), core::Map::unmodifiable<core::Symbol, dynamic>(#C3)));
+  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#foo, 32, core::List::unmodifiable<dynamic>(<core::Type>[core::String, core::String]), core::List::unmodifiable<dynamic>(<dynamic>["hello world"]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   self::foo<core::String>("hello world");
-  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 32, core::List::unmodifiable<dynamic>(<core::Type>[core::int, core::int]), core::List::unmodifiable<dynamic>(<dynamic>[42]), core::Map::unmodifiable<core::Symbol, dynamic>(#C3)));
+  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#foo, 32, core::List::unmodifiable<dynamic>(<core::Type>[core::int, core::int]), core::List::unmodifiable<dynamic>(<dynamic>[42]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   self::Foo::foo<core::int>(42);
   self::Foo f = new self::Foo::•();
   f.bar<core::double, core::double>(42.42);
   f.bar<core::double>(42.42);
-  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C4, 32, core::List::unmodifiable<dynamic>(<core::Type>[core::String]), #C2, core::Map::unmodifiable<core::Symbol, dynamic>(#C3)));
+  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#, 32, core::List::unmodifiable<dynamic>(<core::Type>[core::String]), const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   new self::Bar::•<core::String, core::String>();
 }
diff --git a/pkg/front_end/testcases/regress/issue_32972.dart.legacy.transformed.expect b/pkg/front_end/testcases/regress/issue_32972.dart.legacy.transformed.expect
index 2982517..d112e29 100644
--- a/pkg/front_end/testcases/regress/issue_32972.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_32972.dart.legacy.transformed.expect
@@ -46,13 +46,13 @@
   core::print(i);
 }
 static method main() → dynamic {
-  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 32, core::List::unmodifiable<dynamic>(<core::Type>[core::String, core::String]), core::List::unmodifiable<dynamic>(<dynamic>["hello world"]), core::Map::unmodifiable<core::Symbol, dynamic>(#C3)));
+  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#foo, 32, core::List::unmodifiable<dynamic>(<core::Type>[core::String, core::String]), core::List::unmodifiable<dynamic>(<dynamic>["hello world"]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   self::foo<core::String>("hello world");
-  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 32, core::List::unmodifiable<dynamic>(<core::Type>[core::int, core::int]), core::List::unmodifiable<dynamic>(<dynamic>[42]), core::Map::unmodifiable<core::Symbol, dynamic>(#C3)));
+  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#foo, 32, core::List::unmodifiable<dynamic>(<core::Type>[core::int, core::int]), core::List::unmodifiable<dynamic>(<dynamic>[42]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   self::Foo::foo<core::int>(42);
   self::Foo f = new self::Foo::•();
   f.bar<core::double, core::double>(42.42);
   f.bar<core::double>(42.42);
-  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C4, 32, core::List::unmodifiable<dynamic>(<core::Type>[core::String]), #C2, core::Map::unmodifiable<core::Symbol, dynamic>(#C3)));
+  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#, 32, core::List::unmodifiable<dynamic>(<core::Type>[core::String]), const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   new self::Bar::•<core::String, core::String>();
 }
diff --git a/pkg/front_end/testcases/regress/issue_33452.dart.legacy.expect b/pkg/front_end/testcases/regress/issue_33452.dart.legacy.expect
index c09855e..12ba7ad 100644
--- a/pkg/front_end/testcases/regress/issue_33452.dart.legacy.expect
+++ b/pkg/front_end/testcases/regress/issue_33452.dart.legacy.expect
@@ -35,10 +35,10 @@
     ;
 }
 static method main() → dynamic {
-  dynamic x = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 32, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
-  x = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C5, 32, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
-  x = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C5, 32, core::List::unmodifiable<dynamic>(<core::Type>[core::String]), #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
-  x = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 32, core::List::unmodifiable<dynamic>(<core::Type>[core::String]), #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
-  x = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 32, core::List::unmodifiable<dynamic>(<core::Type>[core::String, core::String]), #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
-  x = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C6, 32, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+  dynamic x = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#ExistingClass.nonExistingConstructor, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+  x = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#ExistingClass, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+  x = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#ExistingClass, 32, core::List::unmodifiable<dynamic>(<core::Type>[core::String]), const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+  x = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#ExistingClass.nonExistingConstructor, 32, core::List::unmodifiable<dynamic>(<core::Type>[core::String]), const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+  x = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#ExistingClass.nonExistingConstructor, 32, core::List::unmodifiable<dynamic>(<core::Type>[core::String, core::String]), const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+  x = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#NonExistingClass, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
diff --git a/pkg/front_end/testcases/regress/issue_33452.dart.legacy.transformed.expect b/pkg/front_end/testcases/regress/issue_33452.dart.legacy.transformed.expect
index c09855e..12ba7ad 100644
--- a/pkg/front_end/testcases/regress/issue_33452.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_33452.dart.legacy.transformed.expect
@@ -35,10 +35,10 @@
     ;
 }
 static method main() → dynamic {
-  dynamic x = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 32, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
-  x = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C5, 32, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
-  x = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C5, 32, core::List::unmodifiable<dynamic>(<core::Type>[core::String]), #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
-  x = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 32, core::List::unmodifiable<dynamic>(<core::Type>[core::String]), #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
-  x = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 32, core::List::unmodifiable<dynamic>(<core::Type>[core::String, core::String]), #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
-  x = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C6, 32, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+  dynamic x = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#ExistingClass.nonExistingConstructor, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+  x = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#ExistingClass, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+  x = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#ExistingClass, 32, core::List::unmodifiable<dynamic>(<core::Type>[core::String]), const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+  x = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#ExistingClass.nonExistingConstructor, 32, core::List::unmodifiable<dynamic>(<core::Type>[core::String]), const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+  x = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#ExistingClass.nonExistingConstructor, 32, core::List::unmodifiable<dynamic>(<core::Type>[core::String, core::String]), const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+  x = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#NonExistingClass, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
diff --git a/pkg/front_end/testcases/regress/issue_34403.dart.legacy.expect b/pkg/front_end/testcases/regress/issue_34403.dart.legacy.expect
index 585fc01..6411f4c 100644
--- a/pkg/front_end/testcases/regress/issue_34403.dart.legacy.expect
+++ b/pkg/front_end/testcases/regress/issue_34403.dart.legacy.expect
@@ -107,10 +107,14 @@
   c3.toString();
   dynamic c4 = new self::C::bar<core::String>();
   c4.toString();
-  (#C1).toString();
-  (#C1).toString();
-  (#C2).toString();
-  (#C2).toString();
+  const dynamic d1 = const self::D::foo<core::int>();
+  d1.toString();
+  const dynamic d2 = const self::D::foo<core::int>();
+  d2.toString();
+  const dynamic d3 = const self::D::foo<core::String>();
+  d3.toString();
+  const dynamic d4 = const self::D::foo<core::String>();
+  d4.toString();
   dynamic e1 = new iss::E::bar<core::int>();
   e1.toString();
   dynamic e2 = new iss::E::bar<dynamic>();
@@ -119,10 +123,14 @@
   e3.toString();
   dynamic e4 = new iss::E::bar<core::String>();
   e4.toString();
-  (#C3).toString();
-  (#C4).toString();
-  (#C5).toString();
-  (#C5).toString();
+  const dynamic f1 = const iss::F::foo<core::int>();
+  f1.toString();
+  const dynamic f2 = const iss::F::foo<dynamic>();
+  f2.toString();
+  const dynamic f3 = const iss::F::foo<core::String>();
+  f3.toString();
+  const dynamic f4 = const iss::F::foo<core::String>();
+  f4.toString();
 }
 
 library;
diff --git a/pkg/front_end/testcases/regress/issue_34403.dart.legacy.transformed.expect b/pkg/front_end/testcases/regress/issue_34403.dart.legacy.transformed.expect
index 585fc01..6411f4c 100644
--- a/pkg/front_end/testcases/regress/issue_34403.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_34403.dart.legacy.transformed.expect
@@ -107,10 +107,14 @@
   c3.toString();
   dynamic c4 = new self::C::bar<core::String>();
   c4.toString();
-  (#C1).toString();
-  (#C1).toString();
-  (#C2).toString();
-  (#C2).toString();
+  const dynamic d1 = const self::D::foo<core::int>();
+  d1.toString();
+  const dynamic d2 = const self::D::foo<core::int>();
+  d2.toString();
+  const dynamic d3 = const self::D::foo<core::String>();
+  d3.toString();
+  const dynamic d4 = const self::D::foo<core::String>();
+  d4.toString();
   dynamic e1 = new iss::E::bar<core::int>();
   e1.toString();
   dynamic e2 = new iss::E::bar<dynamic>();
@@ -119,10 +123,14 @@
   e3.toString();
   dynamic e4 = new iss::E::bar<core::String>();
   e4.toString();
-  (#C3).toString();
-  (#C4).toString();
-  (#C5).toString();
-  (#C5).toString();
+  const dynamic f1 = const iss::F::foo<core::int>();
+  f1.toString();
+  const dynamic f2 = const iss::F::foo<dynamic>();
+  f2.toString();
+  const dynamic f3 = const iss::F::foo<core::String>();
+  f3.toString();
+  const dynamic f4 = const iss::F::foo<core::String>();
+  f4.toString();
 }
 
 library;
diff --git a/pkg/front_end/testcases/regress/issue_34403.dart.strong.expect b/pkg/front_end/testcases/regress/issue_34403.dart.strong.expect
index a24297a..ae029a9 100644
--- a/pkg/front_end/testcases/regress/issue_34403.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_34403.dart.strong.expect
@@ -107,10 +107,14 @@
   c3.{core::Object::toString}();
   self::C<core::String> c4 = new self::C::bar<core::String>();
   c4.{core::Object::toString}();
-  (#C1).{core::Object::toString}();
-  (#C1).{core::Object::toString}();
-  (#C2).{core::Object::toString}();
-  (#C2).{core::Object::toString}();
+  const self::D<core::int> d1 = const self::D::foo<core::int>();
+  d1.{core::Object::toString}();
+  const self::D<core::int> d2 = const self::D::foo<core::int>();
+  d2.{core::Object::toString}();
+  const self::D<core::String> d3 = const self::D::foo<core::String>();
+  d3.{core::Object::toString}();
+  const self::D<core::String> d4 = const self::D::foo<core::String>();
+  d4.{core::Object::toString}();
   iss::E<core::int> e1 = new iss::E::bar<core::int>();
   e1.{core::Object::toString}();
   iss::E<dynamic> e2 = new iss::E::bar<dynamic>();
@@ -119,10 +123,14 @@
   e3.{core::Object::toString}();
   iss::E<core::String> e4 = new iss::E::bar<core::String>();
   e4.{core::Object::toString}();
-  (#C3).{core::Object::toString}();
-  (#C4).{core::Object::toString}();
-  (#C5).{core::Object::toString}();
-  (#C5).{core::Object::toString}();
+  const iss::F<core::int> f1 = const iss::F::foo<core::int>();
+  f1.{core::Object::toString}();
+  const iss::F<dynamic> f2 = const iss::F::foo<dynamic>();
+  f2.{core::Object::toString}();
+  const iss::F<core::String> f3 = const iss::F::foo<core::String>();
+  f3.{core::Object::toString}();
+  const iss::F<core::String> f4 = const iss::F::foo<core::String>();
+  f4.{core::Object::toString}();
 }
 
 library;
diff --git a/pkg/front_end/testcases/regress/issue_34403.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_34403.dart.strong.transformed.expect
index a24297a..ae029a9 100644
--- a/pkg/front_end/testcases/regress/issue_34403.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_34403.dart.strong.transformed.expect
@@ -107,10 +107,14 @@
   c3.{core::Object::toString}();
   self::C<core::String> c4 = new self::C::bar<core::String>();
   c4.{core::Object::toString}();
-  (#C1).{core::Object::toString}();
-  (#C1).{core::Object::toString}();
-  (#C2).{core::Object::toString}();
-  (#C2).{core::Object::toString}();
+  const self::D<core::int> d1 = const self::D::foo<core::int>();
+  d1.{core::Object::toString}();
+  const self::D<core::int> d2 = const self::D::foo<core::int>();
+  d2.{core::Object::toString}();
+  const self::D<core::String> d3 = const self::D::foo<core::String>();
+  d3.{core::Object::toString}();
+  const self::D<core::String> d4 = const self::D::foo<core::String>();
+  d4.{core::Object::toString}();
   iss::E<core::int> e1 = new iss::E::bar<core::int>();
   e1.{core::Object::toString}();
   iss::E<dynamic> e2 = new iss::E::bar<dynamic>();
@@ -119,10 +123,14 @@
   e3.{core::Object::toString}();
   iss::E<core::String> e4 = new iss::E::bar<core::String>();
   e4.{core::Object::toString}();
-  (#C3).{core::Object::toString}();
-  (#C4).{core::Object::toString}();
-  (#C5).{core::Object::toString}();
-  (#C5).{core::Object::toString}();
+  const iss::F<core::int> f1 = const iss::F::foo<core::int>();
+  f1.{core::Object::toString}();
+  const iss::F<dynamic> f2 = const iss::F::foo<dynamic>();
+  f2.{core::Object::toString}();
+  const iss::F<core::String> f3 = const iss::F::foo<core::String>();
+  f3.{core::Object::toString}();
+  const iss::F<core::String> f4 = const iss::F::foo<core::String>();
+  f4.{core::Object::toString}();
 }
 
 library;
diff --git a/pkg/front_end/testcases/regress/issue_35258.dart.legacy.expect b/pkg/front_end/testcases/regress/issue_35258.dart.legacy.expect
index 04e0071..f3cf819 100644
--- a/pkg/front_end/testcases/regress/issue_35258.dart.legacy.expect
+++ b/pkg/front_end/testcases/regress/issue_35258.dart.legacy.expect
@@ -27,5 +27,5 @@
     : super core::Object::•() {}
 }
 static method main() → dynamic {
-  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 32, #C2, core::List::unmodifiable<dynamic>(<dynamic>[42]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C, 32, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[42]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
diff --git a/pkg/front_end/testcases/regress/issue_35258.dart.legacy.transformed.expect b/pkg/front_end/testcases/regress/issue_35258.dart.legacy.transformed.expect
index 04e0071..f3cf819 100644
--- a/pkg/front_end/testcases/regress/issue_35258.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_35258.dart.legacy.transformed.expect
@@ -27,5 +27,5 @@
     : super core::Object::•() {}
 }
 static method main() → dynamic {
-  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 32, #C2, core::List::unmodifiable<dynamic>(<dynamic>[42]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C, 32, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[42]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
diff --git a/pkg/front_end/testcases/regress/issue_35259.dart.legacy.expect b/pkg/front_end/testcases/regress/issue_35259.dart.legacy.expect
index 3c167b5..0360cf4 100644
--- a/pkg/front_end/testcases/regress/issue_35259.dart.legacy.expect
+++ b/pkg/front_end/testcases/regress/issue_35259.dart.legacy.expect
@@ -38,5 +38,5 @@
     let dynamic #redirecting_factory = "Unresolved" in invalid-expression;
 }
 static method main() → dynamic {
-  core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 32, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))));
+  core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Supertype, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
 }
diff --git a/pkg/front_end/testcases/regress/issue_35259.dart.legacy.transformed.expect b/pkg/front_end/testcases/regress/issue_35259.dart.legacy.transformed.expect
index 3c167b5..0360cf4 100644
--- a/pkg/front_end/testcases/regress/issue_35259.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_35259.dart.legacy.transformed.expect
@@ -38,5 +38,5 @@
     let dynamic #redirecting_factory = "Unresolved" in invalid-expression;
 }
 static method main() → dynamic {
-  core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 32, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))));
+  core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Supertype, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
 }
diff --git a/pkg/front_end/testcases/regress/issue_35260.dart.legacy.expect b/pkg/front_end/testcases/regress/issue_35260.dart.legacy.expect
index 55268f8..381ea3c 100644
--- a/pkg/front_end/testcases/regress/issue_35260.dart.legacy.expect
+++ b/pkg/front_end/testcases/regress/issue_35260.dart.legacy.expect
@@ -27,5 +27,5 @@
     ;
 }
 static method main() → dynamic {
-  self::X x = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 32, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+  self::X x = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Supertype, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
diff --git a/pkg/front_end/testcases/regress/issue_35260.dart.legacy.transformed.expect b/pkg/front_end/testcases/regress/issue_35260.dart.legacy.transformed.expect
index 55268f8..381ea3c 100644
--- a/pkg/front_end/testcases/regress/issue_35260.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_35260.dart.legacy.transformed.expect
@@ -27,5 +27,5 @@
     ;
 }
 static method main() → dynamic {
-  self::X x = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 32, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
+  self::X x = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Supertype, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
diff --git a/pkg/front_end/testcases/regress/issue_35266.dart.legacy.expect b/pkg/front_end/testcases/regress/issue_35266.dart.legacy.expect
index f6ce9f3..7821553 100644
--- a/pkg/front_end/testcases/regress/issue_35266.dart.legacy.expect
+++ b/pkg/front_end/testcases/regress/issue_35266.dart.legacy.expect
@@ -37,5 +37,5 @@
     let dynamic #redirecting_factory = "B.foo" in invalid-expression;
 }
 static method main() → dynamic {
-  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 32, core::List::unmodifiable<dynamic>(<core::Type>[dynamic]), #C2, core::Map::unmodifiable<core::Symbol, dynamic>(#C3)));
+  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#B.foo, 32, core::List::unmodifiable<dynamic>(<core::Type>[dynamic]), const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
diff --git a/pkg/front_end/testcases/regress/issue_35266.dart.legacy.transformed.expect b/pkg/front_end/testcases/regress/issue_35266.dart.legacy.transformed.expect
index f6ce9f3..7821553 100644
--- a/pkg/front_end/testcases/regress/issue_35266.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_35266.dart.legacy.transformed.expect
@@ -37,5 +37,5 @@
     let dynamic #redirecting_factory = "B.foo" in invalid-expression;
 }
 static method main() → dynamic {
-  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 32, core::List::unmodifiable<dynamic>(<core::Type>[dynamic]), #C2, core::Map::unmodifiable<core::Symbol, dynamic>(#C3)));
+  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#B.foo, 32, core::List::unmodifiable<dynamic>(<core::Type>[dynamic]), const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
diff --git a/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_tear_off.dart.legacy.expect b/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_tear_off.dart.legacy.expect
index f28644c..a07805e 100644
--- a/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_tear_off.dart.legacy.expect
+++ b/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_tear_off.dart.legacy.expect
@@ -19,6 +19,6 @@
   core::print("${i}");
 }
 static method test() → void {
-  dynamic x = self::g(new self::C::•<core::int>(#C1));
+  dynamic x = self::g(new self::C::•<core::int>(self::h));
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_tear_off.dart.legacy.transformed.expect b/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_tear_off.dart.legacy.transformed.expect
index f28644c..a07805e 100644
--- a/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_tear_off.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_tear_off.dart.legacy.transformed.expect
@@ -19,6 +19,6 @@
   core::print("${i}");
 }
 static method test() → void {
-  dynamic x = self::g(new self::C::•<core::int>(#C1));
+  dynamic x = self::g(new self::C::•<core::int>(self::h));
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_tear_off.dart.strong.expect b/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_tear_off.dart.strong.expect
index 1b0e397..de2d0dc 100644
--- a/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_tear_off.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_tear_off.dart.strong.expect
@@ -19,6 +19,6 @@
   core::print("${i}");
 }
 static method test() → void {
-  () → (core::num) → void x = self::g(new self::C::•<core::int>(#C1));
+  () → (core::num) → void x = self::g(new self::C::•<core::int>(self::h));
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_tear_off.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_tear_off.dart.strong.transformed.expect
index 1b0e397..de2d0dc 100644
--- a/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_tear_off.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/contravariant_generic_return_tear_off.dart.strong.transformed.expect
@@ -19,6 +19,6 @@
   core::print("${i}");
 }
 static method test() → void {
-  () → (core::num) → void x = self::g(new self::C::•<core::int>(#C1));
+  () → (core::num) → void x = self::g(new self::C::•<core::int>(self::h));
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface.dart.legacy.expect b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface.dart.legacy.expect
index 5e34691..96700b1 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface.dart.legacy.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface.dart.legacy.expect
@@ -14,14 +14,14 @@
     : super core::Object::•()
     ;
   method f1(core::int x) → void {}
-  method f2(core::int x, [generic-covariant-impl self::C::U y = #C1]) → void {}
+  method f2(core::int x, [generic-covariant-impl self::C::U y = null]) → void {}
 }
 class D<U extends core::Object = dynamic> extends self::C<self::D::U> {
   synthetic constructor •() → self::D<self::D::U>
     : super self::C::•()
     ;
   method f1(core::int x) → void {}
-  method f2(core::int x, [generic-covariant-impl self::D::U y = #C1]) → void {}
+  method f2(core::int x, [generic-covariant-impl self::D::U y = null]) → void {}
 }
 static method g1(self::C<core::num> c) → void {
   c.f1(1);
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface.dart.legacy.transformed.expect b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface.dart.legacy.transformed.expect
index 5e34691..96700b1 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface.dart.legacy.transformed.expect
@@ -14,14 +14,14 @@
     : super core::Object::•()
     ;
   method f1(core::int x) → void {}
-  method f2(core::int x, [generic-covariant-impl self::C::U y = #C1]) → void {}
+  method f2(core::int x, [generic-covariant-impl self::C::U y = null]) → void {}
 }
 class D<U extends core::Object = dynamic> extends self::C<self::D::U> {
   synthetic constructor •() → self::D<self::D::U>
     : super self::C::•()
     ;
   method f1(core::int x) → void {}
-  method f2(core::int x, [generic-covariant-impl self::D::U y = #C1]) → void {}
+  method f2(core::int x, [generic-covariant-impl self::D::U y = null]) → void {}
 }
 static method g1(self::C<core::num> c) → void {
   c.f1(1);
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface.dart.strong.expect b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface.dart.strong.expect
index 8199884..a04329b 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface.dart.strong.expect
@@ -14,14 +14,14 @@
     : super core::Object::•()
     ;
   method f1(generic-covariant-impl core::int x) → void {}
-  method f2(generic-covariant-impl core::int x, [generic-covariant-impl self::C::U y = #C1]) → void {}
+  method f2(generic-covariant-impl core::int x, [generic-covariant-impl self::C::U y = null]) → void {}
 }
 class D<U extends core::Object = dynamic> extends self::C<self::D::U> {
   synthetic constructor •() → self::D<self::D::U>
     : super self::C::•()
     ;
   method f1(generic-covariant-impl core::int x) → void {}
-  method f2(generic-covariant-impl core::int x, [generic-covariant-impl self::D::U y = #C1]) → void {}
+  method f2(generic-covariant-impl core::int x, [generic-covariant-impl self::D::U y = null]) → void {}
 }
 static method g1(self::C<core::num> c) → void {
   c.{self::C::f1}(1);
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface.dart.strong.transformed.expect
index 8199884..a04329b 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface.dart.strong.transformed.expect
@@ -14,14 +14,14 @@
     : super core::Object::•()
     ;
   method f1(generic-covariant-impl core::int x) → void {}
-  method f2(generic-covariant-impl core::int x, [generic-covariant-impl self::C::U y = #C1]) → void {}
+  method f2(generic-covariant-impl core::int x, [generic-covariant-impl self::C::U y = null]) → void {}
 }
 class D<U extends core::Object = dynamic> extends self::C<self::D::U> {
   synthetic constructor •() → self::D<self::D::U>
     : super self::C::•()
     ;
   method f1(generic-covariant-impl core::int x) → void {}
-  method f2(generic-covariant-impl core::int x, [generic-covariant-impl self::D::U y = #C1]) → void {}
+  method f2(generic-covariant-impl core::int x, [generic-covariant-impl self::D::U y = null]) → void {}
 }
 static method g1(self::C<core::num> c) → void {
   c.{self::C::f1}(1);
diff --git a/pkg/front_end/testcases/runtime_checks/dynamic_invocation_of_getter.dart.legacy.expect b/pkg/front_end/testcases/runtime_checks/dynamic_invocation_of_getter.dart.legacy.expect
index 52ff531..1fe2ff5 100644
--- a/pkg/front_end/testcases/runtime_checks/dynamic_invocation_of_getter.dart.legacy.expect
+++ b/pkg/front_end/testcases/runtime_checks/dynamic_invocation_of_getter.dart.legacy.expect
@@ -13,6 +13,6 @@
 }
 static method h(core::int i) → void {}
 static method test() → void {
-  self::g(new self::C::•(#C1));
+  self::g(new self::C::•(self::h));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/runtime_checks/dynamic_invocation_of_getter.dart.legacy.transformed.expect b/pkg/front_end/testcases/runtime_checks/dynamic_invocation_of_getter.dart.legacy.transformed.expect
index 52ff531..1fe2ff5 100644
--- a/pkg/front_end/testcases/runtime_checks/dynamic_invocation_of_getter.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/dynamic_invocation_of_getter.dart.legacy.transformed.expect
@@ -13,6 +13,6 @@
 }
 static method h(core::int i) → void {}
 static method test() → void {
-  self::g(new self::C::•(#C1));
+  self::g(new self::C::•(self::h));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/runtime_checks/dynamic_invocation_of_getter.dart.strong.expect b/pkg/front_end/testcases/runtime_checks/dynamic_invocation_of_getter.dart.strong.expect
index 4539e8c..1431719 100644
--- a/pkg/front_end/testcases/runtime_checks/dynamic_invocation_of_getter.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks/dynamic_invocation_of_getter.dart.strong.expect
@@ -13,6 +13,6 @@
 }
 static method h(core::int i) → void {}
 static method test() → void {
-  self::g(new self::C::•(#C1));
+  self::g(new self::C::•(self::h));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/runtime_checks/dynamic_invocation_of_getter.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks/dynamic_invocation_of_getter.dart.strong.transformed.expect
index 4539e8c..1431719 100644
--- a/pkg/front_end/testcases/runtime_checks/dynamic_invocation_of_getter.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/dynamic_invocation_of_getter.dart.strong.transformed.expect
@@ -13,6 +13,6 @@
 }
 static method h(core::int i) → void {}
 static method test() → void {
-  self::g(new self::C::•(#C1));
+  self::g(new self::C::•(self::h));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/runtime_checks/forwarding_stub_with_default_values.dart.legacy.expect b/pkg/front_end/testcases/runtime_checks/forwarding_stub_with_default_values.dart.legacy.expect
index 93263fc..82a32ab 100644
--- a/pkg/front_end/testcases/runtime_checks/forwarding_stub_with_default_values.dart.legacy.expect
+++ b/pkg/front_end/testcases/runtime_checks/forwarding_stub_with_default_values.dart.legacy.expect
@@ -7,10 +7,10 @@
   synthetic constructor •() → self::B
     : super core::Object::•()
     ;
-  method f([core::num x = #C1]) → void {
+  method f([core::num x = 10]) → void {
     this.{self::B::_x} = x;
   }
-  method g({core::num x = #C2}) → void {
+  method g({core::num x = 20}) → void {
     this.{self::B::_x} = x;
   }
   method check(core::Object expectedValue) → void {
@@ -23,8 +23,8 @@
   synthetic constructor •() → self::I<self::I::T>
     : super core::Object::•()
     ;
-  abstract method f([generic-covariant-impl self::I::T x = #C3]) → void;
-  abstract method g({generic-covariant-impl self::I::T x = #C3}) → void;
+  abstract method f([generic-covariant-impl self::I::T x = null]) → void;
+  abstract method g({generic-covariant-impl self::I::T x = null}) → void;
 }
 class C extends self::B implements self::I<core::num> {
   synthetic constructor •() → self::C
diff --git a/pkg/front_end/testcases/runtime_checks/forwarding_stub_with_default_values.dart.legacy.transformed.expect b/pkg/front_end/testcases/runtime_checks/forwarding_stub_with_default_values.dart.legacy.transformed.expect
index 93263fc..82a32ab 100644
--- a/pkg/front_end/testcases/runtime_checks/forwarding_stub_with_default_values.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/forwarding_stub_with_default_values.dart.legacy.transformed.expect
@@ -7,10 +7,10 @@
   synthetic constructor •() → self::B
     : super core::Object::•()
     ;
-  method f([core::num x = #C1]) → void {
+  method f([core::num x = 10]) → void {
     this.{self::B::_x} = x;
   }
-  method g({core::num x = #C2}) → void {
+  method g({core::num x = 20}) → void {
     this.{self::B::_x} = x;
   }
   method check(core::Object expectedValue) → void {
@@ -23,8 +23,8 @@
   synthetic constructor •() → self::I<self::I::T>
     : super core::Object::•()
     ;
-  abstract method f([generic-covariant-impl self::I::T x = #C3]) → void;
-  abstract method g({generic-covariant-impl self::I::T x = #C3}) → void;
+  abstract method f([generic-covariant-impl self::I::T x = null]) → void;
+  abstract method g({generic-covariant-impl self::I::T x = null}) → void;
 }
 class C extends self::B implements self::I<core::num> {
   synthetic constructor •() → self::C
diff --git a/pkg/front_end/testcases/runtime_checks/forwarding_stub_with_default_values.dart.strong.expect b/pkg/front_end/testcases/runtime_checks/forwarding_stub_with_default_values.dart.strong.expect
index c01e389..3474b5d 100644
--- a/pkg/front_end/testcases/runtime_checks/forwarding_stub_with_default_values.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks/forwarding_stub_with_default_values.dart.strong.expect
@@ -7,10 +7,10 @@
   synthetic constructor •() → self::B
     : super core::Object::•()
     ;
-  method f([core::num x = #C1]) → void {
+  method f([core::num x = 10]) → void {
     this.{self::B::_x} = x;
   }
-  method g({core::num x = #C2}) → void {
+  method g({core::num x = 20}) → void {
     this.{self::B::_x} = x;
   }
   method check(core::Object expectedValue) → void {
@@ -23,16 +23,16 @@
   synthetic constructor •() → self::I<self::I::T>
     : super core::Object::•()
     ;
-  abstract method f([generic-covariant-impl self::I::T x = #C3]) → void;
-  abstract method g({generic-covariant-impl self::I::T x = #C3}) → void;
+  abstract method f([generic-covariant-impl self::I::T x = null]) → void;
+  abstract method g({generic-covariant-impl self::I::T x = null}) → void;
 }
 class C extends self::B implements self::I<core::num> {
   synthetic constructor •() → self::C
     : super self::B::•()
     ;
-  forwarding-stub method f([generic-covariant-impl core::num x = #C1]) → void
+  forwarding-stub method f([generic-covariant-impl core::num x = 10]) → void
     return super.{self::B::f}(x);
-  forwarding-stub method g({generic-covariant-impl core::num x = #C2}) → void
+  forwarding-stub method g({generic-covariant-impl core::num x = 20}) → void
     return super.{self::B::g}(x: x);
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/runtime_checks/forwarding_stub_with_default_values.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks/forwarding_stub_with_default_values.dart.strong.transformed.expect
index c01e389..3474b5d 100644
--- a/pkg/front_end/testcases/runtime_checks/forwarding_stub_with_default_values.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/forwarding_stub_with_default_values.dart.strong.transformed.expect
@@ -7,10 +7,10 @@
   synthetic constructor •() → self::B
     : super core::Object::•()
     ;
-  method f([core::num x = #C1]) → void {
+  method f([core::num x = 10]) → void {
     this.{self::B::_x} = x;
   }
-  method g({core::num x = #C2}) → void {
+  method g({core::num x = 20}) → void {
     this.{self::B::_x} = x;
   }
   method check(core::Object expectedValue) → void {
@@ -23,16 +23,16 @@
   synthetic constructor •() → self::I<self::I::T>
     : super core::Object::•()
     ;
-  abstract method f([generic-covariant-impl self::I::T x = #C3]) → void;
-  abstract method g({generic-covariant-impl self::I::T x = #C3}) → void;
+  abstract method f([generic-covariant-impl self::I::T x = null]) → void;
+  abstract method g({generic-covariant-impl self::I::T x = null}) → void;
 }
 class C extends self::B implements self::I<core::num> {
   synthetic constructor •() → self::C
     : super self::B::•()
     ;
-  forwarding-stub method f([generic-covariant-impl core::num x = #C1]) → void
+  forwarding-stub method f([generic-covariant-impl core::num x = 10]) → void
     return super.{self::B::f}(x);
-  forwarding-stub method g({generic-covariant-impl core::num x = #C2}) → void
+  forwarding-stub method g({generic-covariant-impl core::num x = 20}) → void
     return super.{self::B::g}(x: x);
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast.dart.strong.expect b/pkg/front_end/testcases/runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast.dart.strong.expect
index d8db435..4e19f32 100644
--- a/pkg/front_end/testcases/runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast.dart.strong.expect
@@ -53,13 +53,13 @@
 static method numToNum(core::num n) → core::num
   return 2;
 static method main() → void {
-  self::D d = new self::D::•(new self::C::•<core::num>(#C1));
+  self::D d = new self::D::•(new self::C::•<core::num>(self::numToInt));
   let final self::D #t1 = d in #t1.{self::D::value} = let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast.dart:49:41: Error: A value of type 'num Function(num)' can't be assigned to a variable of type 'int Function(int)'.
 Try changing the type of the left hand side, or casting the right hand side to 'int Function(int)'.
   d.value /*@checkReturn=(num) -> num*/ += 1;
                                         ^" in (#t1.{self::D::value}.{self::C::+}(1) as{TypeError} (core::num) → core::num) as{TypeError} (core::int) → core::int;
   self::expect(d.{self::D::setValue}(0), 1);
-  d = new self::D::•(new self::C::•<core::num>(#C2));
+  d = new self::D::•(new self::C::•<core::num>(self::numToNum));
   self::expectTypeError(() → core::Null {
     let final self::D #t3 = d in #t3.{self::D::value} = let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast.dart:53:43: Error: A value of type 'num Function(num)' can't be assigned to a variable of type 'int Function(int)'.
 Try changing the type of the left hand side, or casting the right hand side to 'int Function(int)'.
diff --git a/pkg/front_end/testcases/runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast.dart.strong.transformed.expect
index d8db435..4e19f32 100644
--- a/pkg/front_end/testcases/runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast.dart.strong.transformed.expect
@@ -53,13 +53,13 @@
 static method numToNum(core::num n) → core::num
   return 2;
 static method main() → void {
-  self::D d = new self::D::•(new self::C::•<core::num>(#C1));
+  self::D d = new self::D::•(new self::C::•<core::num>(self::numToInt));
   let final self::D #t1 = d in #t1.{self::D::value} = let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast.dart:49:41: Error: A value of type 'num Function(num)' can't be assigned to a variable of type 'int Function(int)'.
 Try changing the type of the left hand side, or casting the right hand side to 'int Function(int)'.
   d.value /*@checkReturn=(num) -> num*/ += 1;
                                         ^" in (#t1.{self::D::value}.{self::C::+}(1) as{TypeError} (core::num) → core::num) as{TypeError} (core::int) → core::int;
   self::expect(d.{self::D::setValue}(0), 1);
-  d = new self::D::•(new self::C::•<core::num>(#C2));
+  d = new self::D::•(new self::C::•<core::num>(self::numToNum));
   self::expectTypeError(() → core::Null {
     let final self::D #t3 = d in #t3.{self::D::value} = let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast.dart:53:43: Error: A value of type 'num Function(num)' can't be assigned to a variable of type 'int Function(int)'.
 Try changing the type of the left hand side, or casting the right hand side to 'int Function(int)'.
diff --git a/pkg/front_end/testcases/runtime_checks_new/derived_class_typed.dart.legacy.expect b/pkg/front_end/testcases/runtime_checks_new/derived_class_typed.dart.legacy.expect
index e0b82b1..9addeea 100644
--- a/pkg/front_end/testcases/runtime_checks_new/derived_class_typed.dart.legacy.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/derived_class_typed.dart.legacy.expect
@@ -7,7 +7,7 @@
     : super core::Object::•()
     ;
   method f(generic-covariant-impl self::B::T x) → void {}
-  method g({generic-covariant-impl self::B::T x = #C1}) → void {}
+  method g({generic-covariant-impl self::B::T x = null}) → void {}
   method h<generic-covariant-impl U extends self::B::T = dynamic>() → void {}
 }
 class C extends self::B<core::int> {
diff --git a/pkg/front_end/testcases/runtime_checks_new/derived_class_typed.dart.legacy.transformed.expect b/pkg/front_end/testcases/runtime_checks_new/derived_class_typed.dart.legacy.transformed.expect
index e0b82b1..9addeea 100644
--- a/pkg/front_end/testcases/runtime_checks_new/derived_class_typed.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/derived_class_typed.dart.legacy.transformed.expect
@@ -7,7 +7,7 @@
     : super core::Object::•()
     ;
   method f(generic-covariant-impl self::B::T x) → void {}
-  method g({generic-covariant-impl self::B::T x = #C1}) → void {}
+  method g({generic-covariant-impl self::B::T x = null}) → void {}
   method h<generic-covariant-impl U extends self::B::T = dynamic>() → void {}
 }
 class C extends self::B<core::int> {
diff --git a/pkg/front_end/testcases/runtime_checks_new/derived_class_typed.dart.strong.expect b/pkg/front_end/testcases/runtime_checks_new/derived_class_typed.dart.strong.expect
index 0547bab..abc52e0 100644
--- a/pkg/front_end/testcases/runtime_checks_new/derived_class_typed.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/derived_class_typed.dart.strong.expect
@@ -7,7 +7,7 @@
     : super core::Object::•()
     ;
   method f(generic-covariant-impl self::B::T x) → void {}
-  method g({generic-covariant-impl self::B::T x = #C1}) → void {}
+  method g({generic-covariant-impl self::B::T x = null}) → void {}
   method h<generic-covariant-impl U extends self::B::T = self::B::T>() → void {}
 }
 class C extends self::B<core::int> {
diff --git a/pkg/front_end/testcases/runtime_checks_new/derived_class_typed.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks_new/derived_class_typed.dart.strong.transformed.expect
index 0547bab..abc52e0 100644
--- a/pkg/front_end/testcases/runtime_checks_new/derived_class_typed.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/derived_class_typed.dart.strong.transformed.expect
@@ -7,7 +7,7 @@
     : super core::Object::•()
     ;
   method f(generic-covariant-impl self::B::T x) → void {}
-  method g({generic-covariant-impl self::B::T x = #C1}) → void {}
+  method g({generic-covariant-impl self::B::T x = null}) → void {}
   method h<generic-covariant-impl U extends self::B::T = self::B::T>() → void {}
 }
 class C extends self::B<core::int> {
diff --git a/pkg/front_end/testcases/sdk_diagnostic.dart.legacy.expect b/pkg/front_end/testcases/sdk_diagnostic.dart.legacy.expect
index 16486a7..15c2801 100644
--- a/pkg/front_end/testcases/sdk_diagnostic.dart.legacy.expect
+++ b/pkg/front_end/testcases/sdk_diagnostic.dart.legacy.expect
@@ -32,6 +32,6 @@
     ;
 }
 static method test() → dynamic {
-  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 32, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: "fisk"})));
+  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#print, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#incorrectArgument: "fisk"})));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/sdk_diagnostic.dart.legacy.transformed.expect b/pkg/front_end/testcases/sdk_diagnostic.dart.legacy.transformed.expect
index 16486a7..15c2801 100644
--- a/pkg/front_end/testcases/sdk_diagnostic.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/sdk_diagnostic.dart.legacy.transformed.expect
@@ -32,6 +32,6 @@
     ;
 }
 static method test() → dynamic {
-  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 32, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C4: "fisk"})));
+  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#print, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#incorrectArgument: "fisk"})));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/statements.dart.legacy.expect b/pkg/front_end/testcases/statements.dart.legacy.expect
index 56df812..412bb2d 100644
--- a/pkg/front_end/testcases/statements.dart.legacy.expect
+++ b/pkg/front_end/testcases/statements.dart.legacy.expect
@@ -80,8 +80,8 @@
   #L1:
   switch(1) {
     #L2:
-    case #C1:
-    case #C2:
+    case 1:
+    case 2:
       {
         core::print("Hello from switch case!");
         break #L1;
@@ -95,25 +95,25 @@
   #L4:
   switch(4) {
     #L5:
-    case #C2:
+    case 2:
       {
         core::print("Hello from case 2!");
         break #L4;
       }
     #L6:
-    case #C1:
+    case 1:
       {
         core::print("Hello from case 1!");
         continue #L5;
       }
     #L7:
-    case #C3:
+    case 0:
       {
         core::print("Hello from case 0!");
         continue #L6;
       }
     #L8:
-    case #C4:
+    case 4:
       {
         core::print("Hello from case 4!");
         continue #L9;
@@ -127,7 +127,7 @@
   #L10:
   switch(4) {
     #L11:
-    case #C1:
+    case 1:
       {
         core::print("Hello from next case 1");
         break #L10;
diff --git a/pkg/front_end/testcases/statements.dart.legacy.transformed.expect b/pkg/front_end/testcases/statements.dart.legacy.transformed.expect
index e507082..606cb49 100644
--- a/pkg/front_end/testcases/statements.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/statements.dart.legacy.transformed.expect
@@ -130,8 +130,8 @@
   #L3:
   switch(1) {
     #L4:
-    case #C1:
-    case #C2:
+    case 1:
+    case 2:
       {
         core::print("Hello from switch case!");
         break #L3;
@@ -145,25 +145,25 @@
   #L6:
   switch(4) {
     #L7:
-    case #C2:
+    case 2:
       {
         core::print("Hello from case 2!");
         break #L6;
       }
     #L8:
-    case #C1:
+    case 1:
       {
         core::print("Hello from case 1!");
         continue #L7;
       }
     #L9:
-    case #C3:
+    case 0:
       {
         core::print("Hello from case 0!");
         continue #L8;
       }
     #L10:
-    case #C4:
+    case 4:
       {
         core::print("Hello from case 4!");
         continue #L11;
@@ -177,7 +177,7 @@
   #L12:
   switch(4) {
     #L13:
-    case #C1:
+    case 1:
       {
         core::print("Hello from next case 1");
         break #L12;
diff --git a/pkg/front_end/testcases/statements.dart.strong.expect b/pkg/front_end/testcases/statements.dart.strong.expect
index d3c5ace..e8366ee 100644
--- a/pkg/front_end/testcases/statements.dart.strong.expect
+++ b/pkg/front_end/testcases/statements.dart.strong.expect
@@ -91,8 +91,8 @@
   #L1:
   switch(1) {
     #L2:
-    case #C1:
-    case #C2:
+    case 1:
+    case 2:
       {
         core::print("Hello from switch case!");
         break #L1;
@@ -106,25 +106,25 @@
   #L4:
   switch(4) {
     #L5:
-    case #C2:
+    case 2:
       {
         core::print("Hello from case 2!");
         break #L4;
       }
     #L6:
-    case #C1:
+    case 1:
       {
         core::print("Hello from case 1!");
         continue #L5;
       }
     #L7:
-    case #C3:
+    case 0:
       {
         core::print("Hello from case 0!");
         continue #L6;
       }
     #L8:
-    case #C4:
+    case 4:
       {
         core::print("Hello from case 4!");
         continue #L9;
@@ -138,7 +138,7 @@
   #L10:
   switch(4) {
     #L11:
-    case #C1:
+    case 1:
       {
         core::print("Hello from next case 1");
         break #L10;
diff --git a/pkg/front_end/testcases/strong.status b/pkg/front_end/testcases/strong.status
index 7589bb3..7b802de 100644
--- a/pkg/front_end/testcases/strong.status
+++ b/pkg/front_end/testcases/strong.status
@@ -154,6 +154,3 @@
 unsound_promotion: RuntimeError
 void_methods: ExpectationFileMismatch
 warn_unresolved_sends: InstrumentationMismatch # Test assumes Dart 1.0 semantics
-mixin_constructors_with_default_values: RuntimeError # Fasta testing framework can't handle fromEnvironment constants.
-nested_implicit_const_with_env_var: RuntimeError # Fasta testing framework can't handle fromEnvironment constants.
-rasta/supports_reflection: RuntimeError # Fasta testing framework can't handle fromEnvironment constants.
diff --git a/pkg/front_end/testcases/super_nsm.dart.legacy.expect b/pkg/front_end/testcases/super_nsm.dart.legacy.expect
index 97a3357..a0c7a8c 100644
--- a/pkg/front_end/testcases/super_nsm.dart.legacy.expect
+++ b/pkg/front_end/testcases/super_nsm.dart.legacy.expect
@@ -15,7 +15,7 @@
   method noSuchMethod(dynamic _) → dynamic
     return "C";
   no-such-method-forwarder method interfaceMethod() → dynamic
-    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))) as{TypeError} dynamic;
+    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#interfaceMethod, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} dynamic;
 }
 class D extends self::C {
   synthetic constructor •() → self::D
diff --git a/pkg/front_end/testcases/super_nsm.dart.legacy.transformed.expect b/pkg/front_end/testcases/super_nsm.dart.legacy.transformed.expect
index 97a3357..a0c7a8c 100644
--- a/pkg/front_end/testcases/super_nsm.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/super_nsm.dart.legacy.transformed.expect
@@ -15,7 +15,7 @@
   method noSuchMethod(dynamic _) → dynamic
     return "C";
   no-such-method-forwarder method interfaceMethod() → dynamic
-    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))) as{TypeError} dynamic;
+    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#interfaceMethod, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} dynamic;
 }
 class D extends self::C {
   synthetic constructor •() → self::D
diff --git a/pkg/front_end/testcases/super_nsm.dart.strong.expect b/pkg/front_end/testcases/super_nsm.dart.strong.expect
index 74cbcf7..679fbdd 100644
--- a/pkg/front_end/testcases/super_nsm.dart.strong.expect
+++ b/pkg/front_end/testcases/super_nsm.dart.strong.expect
@@ -15,7 +15,7 @@
   method noSuchMethod(core::Invocation _) → dynamic
     return "C";
   no-such-method-forwarder method interfaceMethod() → dynamic
-    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))) as{TypeError} dynamic;
+    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#interfaceMethod, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} dynamic;
 }
 class D extends self::C {
   synthetic constructor •() → self::D
diff --git a/pkg/front_end/testcases/super_nsm.dart.strong.transformed.expect b/pkg/front_end/testcases/super_nsm.dart.strong.transformed.expect
index 74cbcf7..679fbdd 100644
--- a/pkg/front_end/testcases/super_nsm.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/super_nsm.dart.strong.transformed.expect
@@ -15,7 +15,7 @@
   method noSuchMethod(core::Invocation _) → dynamic
     return "C";
   no-such-method-forwarder method interfaceMethod() → dynamic
-    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))) as{TypeError} dynamic;
+    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#interfaceMethod, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) as{TypeError} dynamic;
 }
 class D extends self::C {
   synthetic constructor •() → self::D
diff --git a/pkg/front_end/testcases/tabs.dart.legacy.expect b/pkg/front_end/testcases/tabs.dart.legacy.expect
index 6c16343..7397272 100644
--- a/pkg/front_end/testcases/tabs.dart.legacy.expect
+++ b/pkg/front_end/testcases/tabs.dart.legacy.expect
@@ -26,10 +26,10 @@
 import "dart:core" as core;
 
 static method test() → dynamic {
-  core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 33, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))));
-  core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C5, 33, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))));
-  core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C6, 33, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))));
-  core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C7, 33, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))));
-  core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C8, 33, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))));
+  core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#one, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
+  core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#two, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
+  core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#three, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
+  core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#four, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
+  core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#five, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/tabs.dart.legacy.transformed.expect b/pkg/front_end/testcases/tabs.dart.legacy.transformed.expect
index 6c16343..7397272 100644
--- a/pkg/front_end/testcases/tabs.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/tabs.dart.legacy.transformed.expect
@@ -26,10 +26,10 @@
 import "dart:core" as core;
 
 static method test() → dynamic {
-  core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C1, 33, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))));
-  core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C5, 33, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))));
-  core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C6, 33, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))));
-  core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C7, 33, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))));
-  core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#C8, 33, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))));
+  core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#one, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
+  core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#two, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
+  core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#three, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
+  core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#four, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
+  core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#five, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/type_of_null.dart.legacy.expect b/pkg/front_end/testcases/type_of_null.dart.legacy.expect
index 2e97f15..83e584c 100644
--- a/pkg/front_end/testcases/type_of_null.dart.legacy.expect
+++ b/pkg/front_end/testcases/type_of_null.dart.legacy.expect
@@ -11,8 +11,8 @@
   self::map<dynamic>(() → dynamic {}, () → dynamic => throw "hello");
   self::map<dynamic>(() → dynamic => throw "hello", () → dynamic {});
   () → core::Null f = () → dynamic {};
-  self::map<dynamic>(#C1, () → dynamic => throw "hello");
-  self::map<dynamic>(() → dynamic => throw "hello", #C1);
+  self::map<dynamic>(self::foo, () → dynamic => throw "hello");
+  self::map<dynamic>(() → dynamic => throw "hello", self::foo);
   self::map<dynamic>(() → dynamic {
     return null;
   }, () → dynamic => throw "hello");
diff --git a/pkg/front_end/testcases/type_of_null.dart.legacy.transformed.expect b/pkg/front_end/testcases/type_of_null.dart.legacy.transformed.expect
index 2e97f15..83e584c 100644
--- a/pkg/front_end/testcases/type_of_null.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/type_of_null.dart.legacy.transformed.expect
@@ -11,8 +11,8 @@
   self::map<dynamic>(() → dynamic {}, () → dynamic => throw "hello");
   self::map<dynamic>(() → dynamic => throw "hello", () → dynamic {});
   () → core::Null f = () → dynamic {};
-  self::map<dynamic>(#C1, () → dynamic => throw "hello");
-  self::map<dynamic>(() → dynamic => throw "hello", #C1);
+  self::map<dynamic>(self::foo, () → dynamic => throw "hello");
+  self::map<dynamic>(() → dynamic => throw "hello", self::foo);
   self::map<dynamic>(() → dynamic {
     return null;
   }, () → dynamic => throw "hello");
diff --git a/pkg/front_end/testcases/type_of_null.dart.strong.expect b/pkg/front_end/testcases/type_of_null.dart.strong.expect
index 5e8f19a..5bee3f8 100644
--- a/pkg/front_end/testcases/type_of_null.dart.strong.expect
+++ b/pkg/front_end/testcases/type_of_null.dart.strong.expect
@@ -11,8 +11,8 @@
   self::map<core::Null>(() → core::Null {}, () → <BottomType>=> throw "hello");
   self::map<core::Null>(() → <BottomType>=> throw "hello", () → core::Null {});
   () → core::Null f = () → core::Null {};
-  self::map<core::Null>(#C1, () → <BottomType>=> throw "hello");
-  self::map<core::Null>(() → <BottomType>=> throw "hello", #C1);
+  self::map<core::Null>(self::foo, () → <BottomType>=> throw "hello");
+  self::map<core::Null>(() → <BottomType>=> throw "hello", self::foo);
   self::map<core::Null>(() → core::Null {
     return null;
   }, () → <BottomType>=> throw "hello");
diff --git a/pkg/front_end/testcases/type_of_null.dart.strong.transformed.expect b/pkg/front_end/testcases/type_of_null.dart.strong.transformed.expect
index 5e8f19a..5bee3f8 100644
--- a/pkg/front_end/testcases/type_of_null.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/type_of_null.dart.strong.transformed.expect
@@ -11,8 +11,8 @@
   self::map<core::Null>(() → core::Null {}, () → <BottomType>=> throw "hello");
   self::map<core::Null>(() → <BottomType>=> throw "hello", () → core::Null {});
   () → core::Null f = () → core::Null {};
-  self::map<core::Null>(#C1, () → <BottomType>=> throw "hello");
-  self::map<core::Null>(() → <BottomType>=> throw "hello", #C1);
+  self::map<core::Null>(self::foo, () → <BottomType>=> throw "hello");
+  self::map<core::Null>(() → <BottomType>=> throw "hello", self::foo);
   self::map<core::Null>(() → core::Null {
     return null;
   }, () → <BottomType>=> throw "hello");
diff --git a/pkg/front_end/testcases/type_variable_uses.dart.legacy.expect b/pkg/front_end/testcases/type_variable_uses.dart.legacy.expect
index 6e96367..57ef641 100644
--- a/pkg/front_end/testcases/type_variable_uses.dart.legacy.expect
+++ b/pkg/front_end/testcases/type_variable_uses.dart.legacy.expect
@@ -74,22 +74,22 @@
     invalid-type t;
     self::C<invalid-type> l;
     self::C<self::C<invalid-type>> ll;
-    #C1;
-    #C2;
-    #C3;
-    #C5;
-    #C6;
+    const self::C::•<invalid-type>();
+    const <invalid-type>[];
+    const <self::C<invalid-type>>[];
+    const <core::Object>[invalid-type];
+    const <core::Object>[const self::C::•<invalid-type>()];
   }
   method instanceMethod() → self::C<self::C::T> {
     core::print(self::C::T);
     self::C::T t;
     self::C<self::C::T> l;
     self::C<self::C<self::C::T>> ll;
-    #C1;
-    #C2;
-    #C3;
-    #C5;
-    #C6;
+    const self::C::•<invalid-type>();
+    const <invalid-type>[];
+    const <self::C<invalid-type>>[];
+    const <core::Object>[invalid-type];
+    const <core::Object>[const self::C::•<invalid-type>()];
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/type_variable_uses.dart.legacy.transformed.expect b/pkg/front_end/testcases/type_variable_uses.dart.legacy.transformed.expect
index 6e96367..57ef641 100644
--- a/pkg/front_end/testcases/type_variable_uses.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/type_variable_uses.dart.legacy.transformed.expect
@@ -74,22 +74,22 @@
     invalid-type t;
     self::C<invalid-type> l;
     self::C<self::C<invalid-type>> ll;
-    #C1;
-    #C2;
-    #C3;
-    #C5;
-    #C6;
+    const self::C::•<invalid-type>();
+    const <invalid-type>[];
+    const <self::C<invalid-type>>[];
+    const <core::Object>[invalid-type];
+    const <core::Object>[const self::C::•<invalid-type>()];
   }
   method instanceMethod() → self::C<self::C::T> {
     core::print(self::C::T);
     self::C::T t;
     self::C<self::C::T> l;
     self::C<self::C<self::C::T>> ll;
-    #C1;
-    #C2;
-    #C3;
-    #C5;
-    #C6;
+    const self::C::•<invalid-type>();
+    const <invalid-type>[];
+    const <self::C<invalid-type>>[];
+    const <core::Object>[invalid-type];
+    const <core::Object>[const self::C::•<invalid-type>()];
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/type_variable_uses.dart.strong.expect b/pkg/front_end/testcases/type_variable_uses.dart.strong.expect
index 9e0f737..e393464 100644
--- a/pkg/front_end/testcases/type_variable_uses.dart.strong.expect
+++ b/pkg/front_end/testcases/type_variable_uses.dart.strong.expect
@@ -74,22 +74,22 @@
     invalid-type t;
     self::C<invalid-type> l;
     self::C<self::C<invalid-type>> ll;
-    #C1;
-    #C2;
-    #C3;
-    #C5;
-    #C6;
+    const self::C::•<invalid-type>();
+    const <invalid-type>[];
+    const <self::C<invalid-type>>[];
+    const <core::Object>[invalid-type];
+    const <core::Object>[const self::C::•<invalid-type>()];
   }
   method instanceMethod() → self::C<self::C::T> {
     core::print(self::C::T);
     self::C::T t;
     self::C<self::C::T> l;
     self::C<self::C<self::C::T>> ll;
-    #C1;
-    #C2;
-    #C3;
-    #C5;
-    #C6;
+    const self::C::•<invalid-type>();
+    const <invalid-type>[];
+    const <self::C<invalid-type>>[];
+    const <core::Object>[invalid-type];
+    const <core::Object>[const self::C::•<invalid-type>()];
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/type_variable_uses.dart.strong.transformed.expect b/pkg/front_end/testcases/type_variable_uses.dart.strong.transformed.expect
index 9e0f737..e393464 100644
--- a/pkg/front_end/testcases/type_variable_uses.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/type_variable_uses.dart.strong.transformed.expect
@@ -74,22 +74,22 @@
     invalid-type t;
     self::C<invalid-type> l;
     self::C<self::C<invalid-type>> ll;
-    #C1;
-    #C2;
-    #C3;
-    #C5;
-    #C6;
+    const self::C::•<invalid-type>();
+    const <invalid-type>[];
+    const <self::C<invalid-type>>[];
+    const <core::Object>[invalid-type];
+    const <core::Object>[const self::C::•<invalid-type>()];
   }
   method instanceMethod() → self::C<self::C::T> {
     core::print(self::C::T);
     self::C::T t;
     self::C<self::C::T> l;
     self::C<self::C<self::C::T>> ll;
-    #C1;
-    #C2;
-    #C3;
-    #C5;
-    #C6;
+    const self::C::•<invalid-type>();
+    const <invalid-type>[];
+    const <self::C<invalid-type>>[];
+    const <core::Object>[invalid-type];
+    const <core::Object>[const self::C::•<invalid-type>()];
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/typedef.dart.legacy.expect b/pkg/front_end/testcases/typedef.dart.legacy.expect
index 155859a..03c71df 100644
--- a/pkg/front_end/testcases/typedef.dart.legacy.expect
+++ b/pkg/front_end/testcases/typedef.dart.legacy.expect
@@ -6,7 +6,7 @@
 typedef _UnaryFunction = (dynamic) → dynamic;
 typedef _BinaryFunction = (dynamic, dynamic) → dynamic;
 static method main() → dynamic {
-  core::print((#C1) is () → dynamic);
-  core::print((#C1) is (dynamic) → dynamic);
-  core::print((#C1) is (dynamic, dynamic) → dynamic);
+  core::print(self::main is () → dynamic);
+  core::print(self::main is (dynamic) → dynamic);
+  core::print(self::main is (dynamic, dynamic) → dynamic);
 }
diff --git a/pkg/front_end/testcases/typedef.dart.legacy.transformed.expect b/pkg/front_end/testcases/typedef.dart.legacy.transformed.expect
index 155859a..03c71df 100644
--- a/pkg/front_end/testcases/typedef.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/typedef.dart.legacy.transformed.expect
@@ -6,7 +6,7 @@
 typedef _UnaryFunction = (dynamic) → dynamic;
 typedef _BinaryFunction = (dynamic, dynamic) → dynamic;
 static method main() → dynamic {
-  core::print((#C1) is () → dynamic);
-  core::print((#C1) is (dynamic) → dynamic);
-  core::print((#C1) is (dynamic, dynamic) → dynamic);
+  core::print(self::main is () → dynamic);
+  core::print(self::main is (dynamic) → dynamic);
+  core::print(self::main is (dynamic, dynamic) → dynamic);
 }
diff --git a/pkg/front_end/testcases/typedef.dart.strong.expect b/pkg/front_end/testcases/typedef.dart.strong.expect
index 155859a..03c71df 100644
--- a/pkg/front_end/testcases/typedef.dart.strong.expect
+++ b/pkg/front_end/testcases/typedef.dart.strong.expect
@@ -6,7 +6,7 @@
 typedef _UnaryFunction = (dynamic) → dynamic;
 typedef _BinaryFunction = (dynamic, dynamic) → dynamic;
 static method main() → dynamic {
-  core::print((#C1) is () → dynamic);
-  core::print((#C1) is (dynamic) → dynamic);
-  core::print((#C1) is (dynamic, dynamic) → dynamic);
+  core::print(self::main is () → dynamic);
+  core::print(self::main is (dynamic) → dynamic);
+  core::print(self::main is (dynamic, dynamic) → dynamic);
 }
diff --git a/pkg/front_end/testcases/typedef.dart.strong.transformed.expect b/pkg/front_end/testcases/typedef.dart.strong.transformed.expect
index 155859a..03c71df 100644
--- a/pkg/front_end/testcases/typedef.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/typedef.dart.strong.transformed.expect
@@ -6,7 +6,7 @@
 typedef _UnaryFunction = (dynamic) → dynamic;
 typedef _BinaryFunction = (dynamic, dynamic) → dynamic;
 static method main() → dynamic {
-  core::print((#C1) is () → dynamic);
-  core::print((#C1) is (dynamic) → dynamic);
-  core::print((#C1) is (dynamic, dynamic) → dynamic);
+  core::print(self::main is () → dynamic);
+  core::print(self::main is (dynamic) → dynamic);
+  core::print(self::main is (dynamic, dynamic) → dynamic);
 }
diff --git a/tests/co19_2/co19_2-kernel.status b/tests/co19_2/co19_2-kernel.status
index 7bc4c50..e637ca2 100644
--- a/tests/co19_2/co19_2-kernel.status
+++ b/tests/co19_2/co19_2-kernel.status
@@ -128,8 +128,8 @@
 Language/Expressions/Constants/bitwise_operators_t08: Skip # triple-shift flag
 Language/Expressions/Constants/constant_list_t02: MissingCompileTimeError # Legal because of implicit const
 Language/Expressions/Constants/constant_map_t02: MissingCompileTimeError # Legal because of implicit const
-Language/Expressions/Constants/literal_string_t04: Skip # Issue 36595
-Language/Expressions/Constants/no_other_constant_expressions_t17: Skip # Issue 36595
+Language/Expressions/Constants/depending_on_itself_t03: MissingCompileTimeError # Issue 34189
+Language/Expressions/Constants/equals_expression_t03: MissingCompileTimeError # Issue 34192
 Language/Expressions/Equality/syntax_t01: Skip # triple-shift flag
 Language/Expressions/Function_Expressions/syntax_t05: CompileTimeError
 Language/Expressions/Function_Invocation/async_cleanup_t01: CompileTimeError
@@ -150,6 +150,9 @@
 Language/Expressions/Lists/syntax_t01: Skip # triple-shift flag
 Language/Expressions/Maps/constant_map_t02: MissingCompileTimeError
 Language/Expressions/Maps/constant_map_type_t01: CompileTimeError
+Language/Expressions/Maps/equal_keys_t01/01: MissingCompileTimeError
+Language/Expressions/Maps/equal_keys_t01/02: MissingCompileTimeError
+Language/Expressions/Maps/key_value_equals_operator_t01: MissingCompileTimeError # Issue 32557
 Language/Expressions/Maps/syntax_t01: Skip # triple-shift flag
 Language/Expressions/Method_Invocation/Ordinary_Invocation/accessible_instance_member_t04: CompileTimeError
 Language/Expressions/Method_Invocation/Super_Invocation/getter_lookup_failed_t02: CompileTimeError
@@ -553,6 +556,13 @@
 LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t17/01: MissingCompileTimeError
 LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t18/01: MissingCompileTimeError
 LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t19/01: MissingCompileTimeError
+LanguageFeatures/Set-literals/constant_set_literals_A02_t02/01: MissingCompileTimeError
+LanguageFeatures/Set-literals/constant_set_literals_A02_t02/02: MissingCompileTimeError
+LanguageFeatures/Set-literals/constant_set_literals_A02_t02/03: MissingCompileTimeError
+LanguageFeatures/Set-literals/constant_set_literals_A02_t02/04: MissingCompileTimeError
+LanguageFeatures/Set-literals/constant_set_literals_A02_t03/01: MissingCompileTimeError
+LanguageFeatures/Set-literals/constant_set_literals_A02_t03/02: MissingCompileTimeError
+LanguageFeatures/Set-literals/constant_set_literals_A02_t03/03: MissingCompileTimeError
 LanguageFeatures/Set-literals/disambiguating_A02_t02: CompileTimeError
 LanguageFeatures/Set-literals/disambiguating_A02_t03: Crash
 LanguageFeatures/Set-literals/exact_types_of_literals_A01_t03: RuntimeError
@@ -675,10 +685,38 @@
 LibTest/isolate/Isolate/ping_A03_t02: RuntimeError, Pass
 LibTest/isolate/Isolate/removeErrorListener_A02_t01: Crash, Pass
 
+[ $compiler != dart2js && $runtime != vm && $fasta ]
+Language/Classes/Constructors/Constant_Constructors/invalid_constant_initializer_t02: MissingCompileTimeError # Issue 34192
+Language/Expressions/Constants/exception_t01: MissingCompileTimeError # Issue 31936
+Language/Expressions/Constants/exception_t03: MissingCompileTimeError # Issue 31936
+Language/Expressions/Constants/exception_t04: MissingCompileTimeError # Issue 31936
+Language/Expressions/Constants/no_other_constant_expressions_t11: MissingCompileTimeError # Issue 34192
+Language/Expressions/Constants/ternary_operator_t02: MissingCompileTimeError # Issue 34192
+Language/Expressions/Instance_Creation/Const/exception_t01: MissingCompileTimeError # Issue 31936
+Language/Metadata/compilation_t03: MissingCompileTimeError # Issue 34205
+
 [ $compiler != dart2js && $fasta ]
+Language/Expressions/Constants/literal_string_t02: MissingCompileTimeError # Issue 34192
 Language/Statements/Switch/equal_operator_t01: MissingCompileTimeError # Issue 32557
 Language/Statements/Switch/equal_operator_t02: MissingCompileTimeError # Issue 32557
 
+[ $compiler != dartkp && $fasta ]
+LanguageFeatures/Set-literals/constant_set_literals_A02_t04/01: MissingCompileTimeError
+LanguageFeatures/Set-literals/constant_set_literals_A02_t04/02: MissingCompileTimeError
+LanguageFeatures/Set-literals/constant_set_literals_A02_t04/03: MissingCompileTimeError
+LanguageFeatures/Set-literals/constant_set_literals_A02_t04/04: MissingCompileTimeError
+LanguageFeatures/Set-literals/constant_set_literals_A02_t04/05: MissingCompileTimeError
+LanguageFeatures/Set-literals/constant_set_literals_A02_t04/06: MissingCompileTimeError
+LanguageFeatures/Set-literals/constant_set_literals_A05_t01/01: MissingCompileTimeError
+LanguageFeatures/Set-literals/constant_set_literals_A05_t01/02: MissingCompileTimeError
+LanguageFeatures/Set-literals/constant_set_literals_A05_t01/03: MissingCompileTimeError
+LanguageFeatures/Set-literals/constant_set_literals_A05_t01/04: MissingCompileTimeError
+LanguageFeatures/Set-literals/constant_set_literals_A05_t01/05: MissingCompileTimeError
+LanguageFeatures/Set-literals/constant_set_literals_A05_t01/06: MissingCompileTimeError
+LanguageFeatures/Set-literals/constant_set_literals_A05_t01/07: MissingCompileTimeError
+LanguageFeatures/Set-literals/constant_set_literals_A05_t01/08: MissingCompileTimeError
+LanguageFeatures/Set-literals/constant_set_literals_A05_t01/09: MissingCompileTimeError
+
 [ $mode == debug && $runtime == vm && $system == linux && ($compiler == dartk || $compiler == dartkb) ]
 LibTest/io/Stdin/readByteSync_A02_t01: RuntimeError, Pass
 LibTest/io/WebSocket/pingInterval_A01_t01: RuntimeError, Pass
@@ -976,7 +1014,11 @@
 LibTest/isolate/ReceivePort/firstWhere_A02_t01: RuntimeError
 LibTest/isolate/ReceivePort/transform_A01_t01: RuntimeError
 
+[ $runtime != vm && $fasta ]
+Language/Classes/Constructors/Constant_Constructors/potentially_constant_expression_t01: MissingCompileTimeError # Issue 34192
+
 [ $runtime != vm && ($compiler == dartk || $compiler == dartkb) ]
+Language/Classes/Constructors/Constant_Constructors/potentially_constant_expression_t01: Crash
 Language/Expressions/Booleans/Boolean_Conversion/definition_t01: RuntimeError
 Language/Expressions/Unary_Expressions/variable_negative_t03: RuntimeError
 Language/Metadata/before_export_t01: RuntimeError
@@ -1126,6 +1168,7 @@
 [ $strong && ($compiler == dartk || $compiler == dartkb) ]
 Language/Expressions/Additive_Expressions/syntax_t01: RuntimeError
 Language/Expressions/Assignment/null_aware_assignment_static_type_t01: RuntimeError
+Language/Expressions/Constants/depending_on_itself_t03: Crash
 Language/Expressions/Function_Invocation/async_generator_invokation_t08: Fail
 Language/Expressions/Function_Invocation/async_generator_invokation_t10: Fail
 Language/Expressions/Instance_Creation/Const/canonicalized_t05: RuntimeError
diff --git a/tests/corelib_2/corelib_2.status b/tests/corelib_2/corelib_2.status
index c810ed1..45e2873 100644
--- a/tests/corelib_2/corelib_2.status
+++ b/tests/corelib_2/corelib_2.status
@@ -59,6 +59,10 @@
 regexp/lookbehind_test/01: Skip # Flaky in uncatchable way.  Issue 36280
 string_from_environment3_test/03: MissingCompileTimeError
 
+[ $compiler == fasta ]
+bool_from_environment2_test/03: MissingCompileTimeError
+string_from_environment3_test/03: MissingCompileTimeError
+
 [ $compiler == precompiler ]
 bigint_test: Pass, Timeout # --no_intrinsify
 int_parse_radix_test: Pass, Timeout # --no_intrinsify
@@ -231,6 +235,11 @@
 [ $compiler != dartk && $runtime == vm && $checked ]
 apply_test/01: RuntimeError
 
+[ $compiler != dartkb && $compiler != dartkp && $fasta ]
+symbol_reserved_word_test/10: MissingCompileTimeError
+symbol_test/02: MissingCompileTimeError
+symbol_test/03: MissingCompileTimeError
+
 [ $compiler == dartkp && $runtime == dart_precompiled && $strong ]
 iterable_fold_test/02: RuntimeError
 iterable_reduce_test/01: CompileTimeError # Issue 31533
diff --git a/tests/language_2/language_2.status b/tests/language_2/language_2.status
index 9144615..2f8711e 100644
--- a/tests/language_2/language_2.status
+++ b/tests/language_2/language_2.status
@@ -74,6 +74,22 @@
 compile_time_constant_static5_test/23: CompileTimeError # Issue 30546
 type_promotion_more_specific_test/04: CompileTimeError # Issue 30906.
 
+# Detection of compile-time errors that are related to constants can't be fully
+# done at the front end, because constants are evaluated at back ends.  So, some
+# errors aren't detected by fasta, but reported by back ends as compile-time
+# errors.
+[ $compiler != dart2analyzer && $compiler != dart2js && $runtime != dart_precompiled && $runtime != vm && $fasta ]
+implicit_creation/implicit_const_not_default_values_test/e12: MissingCompileTimeError
+implicit_creation/implicit_const_not_default_values_test/e15: MissingCompileTimeError
+implicit_creation/implicit_const_not_default_values_test/e18: MissingCompileTimeError
+implicit_creation/implicit_const_not_default_values_test/e21: MissingCompileTimeError
+implicit_creation/implicit_const_not_default_values_test/e24: MissingCompileTimeError
+implicit_creation/implicit_const_not_default_values_test/e27: MissingCompileTimeError
+implicit_creation/implicit_const_not_default_values_test/e3: MissingCompileTimeError
+implicit_creation/implicit_const_not_default_values_test/e30: MissingCompileTimeError
+implicit_creation/implicit_const_not_default_values_test/e6: MissingCompileTimeError
+implicit_creation/implicit_const_not_default_values_test/e9: MissingCompileTimeError
+
 [ $compiler != dart2js && $compiler != dartdevc && !$checked ]
 function_type/*: Skip # Needs checked mode.
 
diff --git a/tests/language_2/language_2_kernel.status b/tests/language_2/language_2_kernel.status
index e66e0cd..f5b2b09 100644
--- a/tests/language_2/language_2_kernel.status
+++ b/tests/language_2/language_2_kernel.status
@@ -156,13 +156,44 @@
 assertion_initializer_const_error2_test/cc10: MissingCompileTimeError
 async_await_syntax_test/e5: Crash # Assertion error: continuation.dart: Failed assertion: 'node.expression == null || node.expression is NullLiteral': is not true.
 async_await_syntax_test/e6: Crash # Assertion error: continuation.dart: Failed assertion: 'node.expression == null || node.expression is NullLiteral': is not true.
+const_cast1_test/02: MissingCompileTimeError
+const_constructor_nonconst_param_test/01: MissingCompileTimeError
 constructor5_test: CompileTimeError # Verification error
 constructor6_test: CompileTimeError # Verification error
+implicit_creation/implicit_const_not_default_values_test/e1: MissingCompileTimeError
+implicit_creation/implicit_const_not_default_values_test/e10: MissingCompileTimeError
+implicit_creation/implicit_const_not_default_values_test/e11: MissingCompileTimeError
+implicit_creation/implicit_const_not_default_values_test/e13: MissingCompileTimeError
+implicit_creation/implicit_const_not_default_values_test/e14: MissingCompileTimeError
+implicit_creation/implicit_const_not_default_values_test/e16: MissingCompileTimeError
+implicit_creation/implicit_const_not_default_values_test/e17: MissingCompileTimeError
+implicit_creation/implicit_const_not_default_values_test/e19: MissingCompileTimeError
+implicit_creation/implicit_const_not_default_values_test/e2: MissingCompileTimeError
+implicit_creation/implicit_const_not_default_values_test/e20: MissingCompileTimeError
+implicit_creation/implicit_const_not_default_values_test/e22: MissingCompileTimeError
+implicit_creation/implicit_const_not_default_values_test/e23: MissingCompileTimeError
+implicit_creation/implicit_const_not_default_values_test/e25: MissingCompileTimeError
+implicit_creation/implicit_const_not_default_values_test/e26: MissingCompileTimeError
+implicit_creation/implicit_const_not_default_values_test/e28: MissingCompileTimeError
+implicit_creation/implicit_const_not_default_values_test/e29: MissingCompileTimeError
+implicit_creation/implicit_const_not_default_values_test/e4: MissingCompileTimeError
+implicit_creation/implicit_const_not_default_values_test/e5: MissingCompileTimeError
+implicit_creation/implicit_const_not_default_values_test/e7: MissingCompileTimeError
+implicit_creation/implicit_const_not_default_values_test/e8: MissingCompileTimeError
 mixin_method_override_test/G4: Crash # Assertion error: mixin_full_resolution.dart': 'src.typeParameters.length == dst.typeParameters.length': is not true.
+vm/regress_33469_test/01: MissingCompileTimeError
+vm/regress_33469_test/02: MissingCompileTimeError
+vm/regress_33469_test/03: MissingCompileTimeError
+vm/regress_33469_test/04: MissingCompileTimeError
+vm/regression_32912_test/01: MissingCompileTimeError
+vm/regression_32912_test/02: MissingCompileTimeError
+vm/regression_32912_test/03: MissingCompileTimeError
 web_int_literals_test/*: SkipByDesign # Test applies only to JavaScript targets
 
 [ $fasta ]
 async_return_types_test/nestedFuture: MissingCompileTimeError # Issue 33068
+const_cast2_test/01: CompileTimeError # Issue 32517
+const_cast2_test/none: CompileTimeError # Issue 32517
 constants_2018/potential_const_dynamic_test/sh3: CompileTimeError # New test introduced in https://dart-review.googlesource.com/c/sdk/+/97510
 constants_2018/potential_const_type_test/sh3: CompileTimeError # New test introduced in https://dart-review.googlesource.com/c/sdk/+/97510
 deferred_inheritance_constraints_test/extends: MissingCompileTimeError # Fasta/KernelVM bug: Deferred loading kernel issue 30273.
@@ -185,10 +216,18 @@
 mixin_declaration/mixin_declaration_superinvocation_application_test/07: MissingCompileTimeError
 mixin_declaration/mixin_declaration_superinvocation_application_test/08: MissingCompileTimeError
 mixin_method_override_test/G5: Crash # Issue 34354
-mock_writable_final_private_field_test: Skip # Issue 36433
 nnbd/*: Skip
 override_inheritance_field_test/42: MissingCompileTimeError
 regress_22976_test/*: CompileTimeError # Issue 31935
+set_literals/invalid_set_literal_test/08: MissingCompileTimeError # Requires constant evaluation
+set_literals/invalid_set_literal_test/09: MissingCompileTimeError # Requires constant evaluation
+set_literals/invalid_set_literal_test/10: MissingCompileTimeError # Requires constant evaluation
+set_literals/invalid_set_literal_test/29: MissingCompileTimeError # Requires constant evaluation
+set_literals/invalid_set_literal_test/30: MissingCompileTimeError # Requires constant evaluation
+set_literals/invalid_set_literal_test/31: MissingCompileTimeError # Requires constant evaluation
+set_literals/invalid_set_literal_test/32: MissingCompileTimeError # Requires constant evaluation
+set_literals/invalid_set_literal_test/33: MissingCompileTimeError # Requires constant evaluation
+set_literals/invalid_set_literal_test/34: MissingCompileTimeError # Requires constant evaluation
 superinterface_variance/abstract_class_error_test/01: MissingCompileTimeError # Issue dart-lang/language#113
 superinterface_variance/abstract_class_error_test/02: MissingCompileTimeError # Issue dart-lang/language#113
 superinterface_variance/abstract_class_error_test/04: MissingCompileTimeError # Issue dart-lang/language#113
@@ -347,9 +386,9 @@
 syntax_test/33: MissingCompileTimeError # Issue 29763 - low priority
 syntax_test/60: MissingCompileTimeError # Issue 30470
 syntax_test/61: MissingCompileTimeError # Issue 30470
+type_constants_test/04: MissingCompileTimeError # Issue 32557
 vm/debug_break_enabled_vm_test/01: CompileTimeError # KernelVM bug: Bad test using extended break syntax.
 vm/debug_break_enabled_vm_test/none: CompileTimeError # KernelVM bug: Bad test using extended break syntax.
-vm/reflect_core_vm_test: Skip # Issue 36433
 vm/regress_27201_test: CompileTimeError # Fasta/KernelVM bug: Deferred loading kernel issue 30273.
 
 [ $builder_tag == obfuscated && $compiler == dartkp ]
@@ -376,6 +415,33 @@
 vm/causal_async_exception_stack2_test: RuntimeError
 vm/causal_async_exception_stack_test: RuntimeError
 
+[ $compiler != app_jitk && $compiler != dart2analyzer && $compiler != dart2js && $compiler != dartk && $compiler != dartkb && $compiler != dartkp && $fasta ]
+const_optional_args_test/01: MissingCompileTimeError
+
+# The precomilation configuration uses a kernel2kernel constants evaluator
+# which is is more correct than fasta/vm in JIT mode (i.e. it catches more
+# compile-time errors).
+[ $compiler != dart2analyzer && $compiler != dart2js && $compiler != dartkb && $compiler != dartkp && $fasta ]
+compile_time_constant_c_test/02: MissingCompileTimeError
+compile_time_constant_o_test/01: MissingCompileTimeError # Issue 32983
+compile_time_constant_o_test/02: MissingCompileTimeError # Issue 32983
+const_dynamic_type_literal_test/02: MissingCompileTimeError # Issue 32983
+const_syntax_test/05: MissingCompileTimeError
+identical_const_test/01: MissingCompileTimeError # Issue 32983
+identical_const_test/02: MissingCompileTimeError # Issue 32983
+identical_const_test/03: MissingCompileTimeError # Issue 32983
+identical_const_test/04: MissingCompileTimeError # Issue 32983
+
+# The precomilation and bytecode configurations use a kernel2kernel constants evaluator
+# which is is more correct than fasta/vm in JIT mode (i.e. it catches more
+# compile-time errors).
+[ $compiler != dart2analyzer && $compiler != dart2js && $compiler != dartkb && $compiler != dartkp && $fasta && $strong ]
+compile_time_constant_k_test/01: MissingCompileTimeError
+compile_time_constant_k_test/02: MissingCompileTimeError
+compile_time_constant_k_test/03: MissingCompileTimeError
+map_literal3_test/01: MissingCompileTimeError
+map_literal3_test/02: MissingCompileTimeError
+
 [ $compiler != dart2analyzer && $compiler != dart2js && $fasta ]
 switch_bad_case_test/01: MissingCompileTimeError # KernelVM bug: Constant evaluation.
 switch_bad_case_test/02: MissingCompileTimeError # KernelVM bug: Constant evaluation.
@@ -386,6 +452,10 @@
 [ $compiler != dart2analyzer && $compiler != dart2js && $fasta && $strong ]
 super_call4_test/01: MissingCompileTimeError
 
+[ $compiler != dart2analyzer && $fasta ]
+const_map2_test/00: MissingCompileTimeError # KernelVM bug: Constant evaluation.
+const_map3_test/00: MissingCompileTimeError # KernelVM bug: Constant evaluation.
+
 [ $compiler != dart2analyzer && $fasta && $strong ]
 map_literal3_test/03: MissingCompileTimeError
 
@@ -416,12 +486,19 @@
 [ $compiler == dartkb && $runtime == vm && $strong ]
 async_star_test/03: Pass, RuntimeError # Please triage
 async_star_test/04: Pass, RuntimeError # Please triage
+compile_time_constant_o_test/01: Pass
+compile_time_constant_o_test/02: Pass
+const_dynamic_type_literal_test/02: Pass
 map_literal3_test/01: Pass
 map_literal3_test/02: Pass
 vm/bool_check_stack_traces_test/02: Pass
 vm/causal_async_exception_stack2_test: RuntimeError # Please triage
 vm/causal_async_exception_stack_test: RuntimeError # Please triage
 
+[ $compiler != dartkb && $compiler != dartkp && $fasta ]
+vm/symbols_test/01: MissingCompileTimeError
+vm/symbols_test/03: MissingCompileTimeError
+
 [ $compiler == dartkp && $mode == debug && $runtime == dart_precompiled && $strong ]
 external_test/13: Crash
 vm/precompiled_static_initializer_test: Pass, Slow
@@ -719,6 +796,8 @@
 disassemble_test: Pass, Slow
 
 [ $compiler == fasta && $strong ]
+compile_time_constant_static4_test/02: MissingCompileTimeError
+compile_time_constant_static4_test/03: MissingCompileTimeError
 compile_time_constant_static5_test/11: CompileTimeError
 compile_time_constant_static5_test/16: CompileTimeError
 compile_time_constant_static5_test/21: CompileTimeError
@@ -726,6 +805,8 @@
 conditional_import_string_test: CompileTimeError
 conditional_import_test: CompileTimeError
 config_import_corelib_test: CompileTimeError
+const_constructor3_test/04: MissingCompileTimeError
+constants_test/05: MissingCompileTimeError
 deferred_load_library_wrong_args_test/01: CompileTimeError
 dynamic_prefix_core_test/none: CompileTimeError
 external_test/21: CompileTimeError
@@ -771,6 +852,12 @@
 mixin_illegal_superclass_test/28: MissingCompileTimeError
 mixin_illegal_superclass_test/29: MissingCompileTimeError
 mixin_illegal_superclass_test/30: MissingCompileTimeError
+multiline_newline_test/04: MissingCompileTimeError
+multiline_newline_test/04r: MissingCompileTimeError
+multiline_newline_test/05: MissingCompileTimeError
+multiline_newline_test/05r: MissingCompileTimeError
+multiline_newline_test/06: MissingCompileTimeError
+multiline_newline_test/06r: MissingCompileTimeError
 null_no_such_method_test: CompileTimeError
 parser_quirks_test: CompileTimeError
 regress_23408_test: CompileTimeError
@@ -779,6 +866,7 @@
 regress_30339_test: CompileTimeError
 setter_no_getter_test/01: CompileTimeError
 super_bound_closure_test/none: CompileTimeError
+try_catch_test/01: MissingCompileTimeError
 type_promotion_more_specific_test/04: CompileTimeError
 
 [ $compiler == fasta && !$strong ]
@@ -1078,6 +1166,8 @@
 call_method_implicit_tear_off_implements_function_test/06: RuntimeError
 call_method_must_not_be_field_test/03: RuntimeError # Issue 32265
 call_method_must_not_be_getter_test/03: RuntimeError # Issue 32265
+compile_time_constant_o_test/01: RuntimeError # KernelVM bug: Constant map duplicated key.
+compile_time_constant_o_test/02: RuntimeError # KernelVM bug: Constant map duplicated key.
 compile_time_constant_static5_test/11: CompileTimeError # Issue 31537
 compile_time_constant_static5_test/16: CompileTimeError # Issue 31537
 compile_time_constant_static5_test/21: CompileTimeError # Issue 31537
@@ -1086,6 +1176,7 @@
 conditional_import_test: CompileTimeError # KernelVM bug: Deferred loading kernel issue 30273.
 config_import_corelib_test: CompileTimeError # Issue 31533
 config_import_test: RuntimeError # KernelVM bug: Configurable imports.
+const_dynamic_type_literal_test/02: RuntimeError # KernelVM bug: Constant map duplicated key.
 const_list_test: RuntimeError
 const_locals_test: RuntimeError
 const_map4_test: RuntimeError
@@ -1344,6 +1435,7 @@
 const_constructor2_test/22: MissingCompileTimeError
 const_constructor2_test/24: MissingCompileTimeError
 const_constructor3_test/02: MissingCompileTimeError
+const_constructor3_test/04: MissingCompileTimeError
 const_init2_test/02: MissingCompileTimeError
 const_syntax_test/08: MissingCompileTimeError
 const_syntax_test/10: MissingCompileTimeError
@@ -1356,6 +1448,7 @@
 const_types_test/13: MissingCompileTimeError
 const_types_test/35: MissingCompileTimeError
 const_types_test/40: MissingCompileTimeError
+constants_test/05: MissingCompileTimeError
 constructor13_test/01: MissingCompileTimeError
 constructor13_test/02: MissingCompileTimeError
 constructor_call_wrong_argument_count_test/01: MissingCompileTimeError
@@ -1687,6 +1780,12 @@
 mixin_type_parameters_errors_test/02: MissingCompileTimeError
 mixin_type_parameters_errors_test/05: MissingCompileTimeError
 mixin_with_two_implicit_constructors_test: MissingCompileTimeError
+multiline_newline_test/04: MissingCompileTimeError
+multiline_newline_test/04r: MissingCompileTimeError
+multiline_newline_test/05: MissingCompileTimeError
+multiline_newline_test/05r: MissingCompileTimeError
+multiline_newline_test/06: MissingCompileTimeError
+multiline_newline_test/06r: MissingCompileTimeError
 named_constructor_test/03: MissingCompileTimeError
 named_parameters2_test: MissingCompileTimeError
 named_parameters3_test: MissingCompileTimeError
@@ -1877,6 +1976,7 @@
 try_catch_on_syntax_test/10: MissingCompileTimeError
 try_catch_on_syntax_test/11: MissingCompileTimeError
 try_catch_syntax_test/08: MissingCompileTimeError
+try_catch_test/01: MissingCompileTimeError
 type_check_const_function_typedef2_test: MissingCompileTimeError
 type_checks_in_factory_method_test/01: MissingCompileTimeError
 type_inference_accessor_ref_test/03: MissingCompileTimeError
@@ -2000,4 +2100,10 @@
 
 [ $compiler == dartkb || $compiler == dartkp ]
 mock_writable_final_private_field_test: CompileTimeError # Test uses Symbol("_...") which is a compile-time error.
+set_literals/invalid_set_literal_test/29: Pass # Gen_kernel does does constant
+set_literals/invalid_set_literal_test/30: Pass # evalutation, so these tests
+set_literals/invalid_set_literal_test/31: Pass # throw the expected errors. The
+set_literals/invalid_set_literal_test/32: Pass # $fasta block marks these as
+set_literals/invalid_set_literal_test/33: Pass # MissingCompileTimeError, so we
+set_literals/invalid_set_literal_test/34: Pass # need to override them to Pass.
 vm/reflect_core_vm_test: CompileTimeError # Test uses Symbol("_...") which is a compile-time error.
diff --git a/tests/lib_2/lib_2_kernel.status b/tests/lib_2/lib_2_kernel.status
index 5dc3965..04313d4 100644
--- a/tests/lib_2/lib_2_kernel.status
+++ b/tests/lib_2/lib_2_kernel.status
@@ -104,6 +104,9 @@
 [ $compiler == fasta && $strong ]
 isolate/isolate_stress_test: CompileTimeError
 mirrors/deferred_type_test: CompileTimeError
+mirrors/metadata_allowed_values_test/02: MissingCompileTimeError
+mirrors/metadata_allowed_values_test/27: MissingCompileTimeError
+mirrors/metadata_constructor_arguments_test/04: MissingCompileTimeError
 mirrors/mirrors_nsm_mismatch_test: CompileTimeError
 mirrors/mirrors_nsm_test/dart2js: CompileTimeError
 mirrors/mirrors_nsm_test/none: CompileTimeError